Python 函数的使用和内嵌函数
函数定义与调用
- 使用 def 关键字进行函数的定义
- 使用.doc 或 help() 调用参数文档
- 对于函数的参数,为了避免出错,常常赋予初默认值
- 收集参数 *params
""""
函数
"""def MyFirstFunction():print("123")MyFirstFunction()def MySecondFunction(name):"""函数name叫做形参""" # 函数文档print(name, " , I love you !")MySecondFunction("丫头")
print(MySecondFunction.__doc__) # 调用函数文档
print(help(MySecondFunction)) # 调用函数文档def add(number1, number2):return number1 + number2print(add(519, 1))def say(name="蛮吉", s="奇衡三"): # 赋予默认值print(name, "->", s)say()
say(s="白落提、丰和、英宋、桓泽金、广秀", name="幽弥狂") # 对应参数名def test1(*params): # 收集参数print(len(params), " ", params[0])test1('w', 2, 3, "hhh")def test2(*params, exp):print(len(params), " ", exp)test2(1, 2, 3, "h", exp=1) # 为防止出错,通常给予收集参数后的参数默认值
输出:
123
丫头 , I love you !
函数name叫做形参
Help on function MySecondFunction in module __main__:MySecondFunction(name)函数name叫做形参None
520
蛮吉 -> 奇衡三
幽弥狂 -> 白落提、丰和、英宋、桓泽金、广秀
4 w
4 1
函数返回值与global关键字
- 返回多个值时,默认打包返回元组
- 局部变量与全局变量
- 可以使用global关键字在函数内部指定变量为全局变量
"""
函数返回值与global关键字
"""
def back():return [1, 2, 3, "hello"]def function():return 'hello', "laowang" # 默认打包,返回元组print(back())
print(function())def f1():number = 5 # 局部变量numberprint(number)def f2():global number # 指定number指的是全局变量numbernumber = 10print(number)number = 1 # 全局变量number
f1()
f2()
输出:
[1, 2, 3, 'hello']
('hello', 'laowang')
5
10
函数的内嵌
- 内嵌函数只在函数内生效,在函数外无效
- 当外函数被调用时,内嵌函数才运转
def function1():print('function1正在被调用')def function2(): # 内嵌函数function2只能在function1内使用print('function2正在被调用')function2()function1() # 当function1被调用的时候,function2会被调用
# function2() # 报错,function2没有被定义
输出:
function1正在被调用
function2正在被调用
闭包
def function(x):def f(y):return x*yreturn fa=function(2) # a其实是一个函数
print(a(3))
print(function(3)(4))def function1():x=5 # 对于内嵌函数f(),变量x相当于局部变量,会被屏蔽起来,不可被访问def f():x*=x #报错 local variable 'x' referenced before assignmentreturn xreturn f()def function2():x = [5]def f():x[0] *= x[0] # 借助容器return x[0]return f()def function3():x = 5def f():nonlocal x # 借助关键字nonlocal,强制声明变量x不是局部变量x *= xreturn xreturn f()print(function2())
print(function3())
输出:
6
12
25
25
匿名函数、filter()、map()
- 匿名函数:使用lambda关键字
- filter():过滤器,内置两个参数,第一个是函数或None,第二个是可迭代序列
- map():映射,内置两个参数,第一个是函数或None,第二个是可迭代序列
"""
匿名函数 lambda关键字
filter(函数,可迭代序列)
map(函数,可迭代序列)
"""
def odd(number):return number % 2filter(odd, range(10)) # 过滤器
l1 = list(filter(odd, range(10)))
print(l1)
l2 = list(map(lambda x: x ^ 2, range(5))) # 映射
print(l2)
输出:
[1, 3, 5, 7, 9]
[2, 3, 0, 1, 6]
疑问
"""
内嵌函数的疑问
"""def function0(x):def f(y):return x * yreturn fdef function1():x = [5]def f():x[0] *= x[0]return x[0]return f()def function2():x = [5]def f():x[0] *= x[0]return x[0]return fprint(function0(5)(5)) # 25
print(function1()) # 25
print(function2()) # function function2.<locals>.f at 0x0000024C94C6BAE8>
输出:
25
25
<function function2.<locals>.f at 0x000001D75A4CBAE8>
Python 函数的使用和内嵌函数相关推荐
- 小甲鱼python第二十讲(内嵌函数和闭包)
内嵌函数 def fun1():print("fun1正在被调用...")def fun2():print("fun2正在被调用..")fun2()#在fun1 ...
- 零基础入门学习Python(19)-内嵌函数和闭包
global关键字 全局变量的作用域是整个模块,也就是代码段内所有的函数内部都可以访问到全局变量 注意,在函数内部仅仅去访问全局变量就好,不要试图去修改它,如果随意修改全局变量的值,很容易牵一发而动全 ...
- python中闭包函数_Python的闭包问题(关于内嵌函数引用闭包函数的变量问题)
一.闭包: 记得:闭包的特性就是:内嵌函数会保存它引用的外围函数的变量值. 闭包概念:在一个内部函数中,对外部作用域的变量进行引用,(并且一般外部函数的返回值为内部函数),那么内部函数和被引用的变量等 ...
- function函数嵌套 matlab_Matlab函数进阶:使用匿名函数和内嵌函数处理多变量传递问题...
Matlab 函数进阶: 使用匿名函数 (Anonymous Function) 和内嵌函数 (Nested Function) 处理多变量传递问题 (Matlab 7.0 以上 ) 问题: 有一个多 ...
- 8.局部变量/全局变量global/内嵌函数/闭包nonlocal
函数:有返回值 过程:无返回值 注解:在python中,只有函数(每个函数都有返回值),没有过程>>> def hello():print("first")> ...
- Python--12 内嵌函数和闭包
内嵌函数/内部函数 >>> def fun1(): ... print('fun1()正在调用') ... def fun2(): ... print('fun2()正在被调用') ...
- 课时20:内嵌函数和闭包
目录: 一.global关键字 二.内嵌函数 三.闭包 四.课时20课后习题及答案 ******************** 一.global关键字 ******************** 全局变量 ...
- 原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念
原来 JS 也支持跟 Lua 语意一样的内嵌函数的闭包概念. 我是从这里看来的: http://blog.dreambrook.com/soloist/archive/2005/03/13/526.a ...
- Makefile所有内嵌函数
一.文本处理函数 以下是GNU make内嵌的文本(字符串)处理函数. 1 $(subst FROM,TO,TEXT) 函数名称:字符串替换函数-subst. 函数功能:把字串" ...
- 使用匿名函数和内嵌函数处理多变量传递问题
问题:有一个多变量函数f(abcx),现需要分别在a=a0b=b0c=c0和a=a1b=b1c=c1的条件下对f(abcx)进行某一操作. 此类问题常在数值积分时出现. 解决方案: 1. 使用全局变量 ...
最新文章
- 解决: AttributeError: module 'cv2' has no attribute 'SURF'
- oracle中forall in,oracle10g的forall功能加强
- 【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)
- php采集单线程卡死,php - 为什么我这段curl采集,单线程比多线程还快?
- 面试准备每日五题:C++(七)——左值右值、面向对象、四种cast转换、拷贝构造函数赋值、虚函数多态
- 调整数组顺序使奇数位于偶数前
- Node.js 8有哪些重要功能和修复? 1
- 动态引入js文件和css样式表文件
- 加速与缓存技术之Varnish
- PHP100视频教程(2012-2013版)下载地址及密码
- 基于Android平台的x264的移植与应用(一):移植篇
- XMPP通信语义学 message, presence IQ
- xm-select树形下拉框渲染,取值,赋值
- 树莓派设置自动连接无线网络
- 防火墙阻止tftp_Juniper netscreen防火墙TFTP升级过程
- 仙剑奇侠传4狐仙打法
- 【Leetcode】286. Walls and Gates
- 【ImageView加载网上的图片】
- 魔乐科技安卓开发教程----李兴华----19 传感器
- PostgreSQL TRANSACTION(事务)
热门文章
- Linux的PS1美化
- 虚幻4毛发系统_虚幻5引擎demo与虚幻4 demo对比视频 效果进步明显
- oracle版本区别 win7_Oracle在Win7服务管理中消失的解决方法
- 腾讯校园招聘--一面(技术1对1)面经
- 生鲜行业采购管理系统把控采购成本,实现精细化管理
- [golang] 导入 go-sqlite3 报错解决方法
- Windows 10微软拼音中添加自定义短语
- 深度学习与自然语言处理(1)_斯坦福cs224d Lecture 1
- 谢辉吉林大学计算机学院,【大科·数院】佳绩频传,成果丰硕——第12届中国大学生计算机设计大赛吉大赛区数院学子成绩斐然...
- c语言小球消砖块的游戏,求大神帮忙看看这个弹弹球消砖块的游戏代码,为什么speed只能15...