标签:并且 保存 nbsp pytho 事件 family 元祖 默认参数 turn
函数
把代码装起来
def my_len() 1=[1,2,3,4,5,6] count = 0 for i in l: count = count + 1 return count ret my_len() print(ret)
写函数的时候要尽量以功能为导向,结果最好不要直接在函数中打印。
函数的返回值:
没有返回值: 不写 return # none # 只写一个return
返回一个值 : 可以返回任意的数据类型 返回什么 接收什么。
def 函数名():
return 的作用:
1.返回一个值。
2.终止一个函数的继续。
返回多个值
用一个变量接收返回值。接收到的是一个元祖,返回有多个变量接收,那么返回值的个数应该和接收的变量的个数完全一致。
#参数
形参和实参
传参数可以传任意数据类型,并且传什么 接收什么
站在传参数的角度上看问题,一共有二种传参方式
第一种:按照位置传参数
第二种:按照关键字传参数
传多个参数 多个参数分别可以使用任意数据类型
PS:按照关键字传参数和按照位置传参数是可以混用的,但是,首先按位置的再传关键字的。
按照位置传完该接收的参数只能接收一个值,不接收或者重复接收都不想。
def my_len(lst) #参数:接收参数 形式参数 形参 count= 0 for i in lst: count = count + 1 return count l:[1,2,3,4] #参数:传参数/传参 实际参数 实参 len_count = my_len(l)
形参:位置参数,数量必须与实参数量一致 ==> 必须传的参数
默认参数:
#默认参数是可以不传参的
#在不传参的情况下可以使用默认值
#如果传了,就会使用传的值。
动态参数
*args: 接收所有按照位置传的参数(参数组成的元祖)
在参数前面加‘*‘这个参数就变成了动态参数。(参数组成的字典)
使用的时候,所有接收的参数都被组织成一个元祖。
**kwargs :按关键字传参
def func(位置参数,动态参数,默认参数,**kwargs)
函数的命名空间 namespace
局部命名空间 每一个函数都有自己的命名空间
全局命名空间 写在函数外面的变量名。
内置命名空间 Python解释器启动之后就可以使用的名字
作用域:一个名字可以使用的区域
全局作用域:内置名字空间和全局名字空间中的名字都属于全局作用域
局部作用域:局部名字空间中的名字属于局部作用域。局部作用域可以使用全局作用域中的变量
全局作用域不能使用局部作用域中的变量
局部作用域中还可以嵌套更小的局部作用域
作用域链:小范围作用域可以使用大范围的变量。但作用域链是单向的,不能反向应用
globals 保存了在全局作用域中的名字和值
locals 中的内容会根据执行的位置来决定作用域中的内容
如果在全局执行 globals和locals打印的结果是一致的
函数的嵌套调用和函数的嵌套定义
命名空间 内置 全局 局部
作用域 全局 局部
作用域链 名字的使用 是从小范围到大范围的就近事件
小范围的可以使用大范围的但不能修改。
如果想修改全局的使用globals 关键字——————尽量避免
使用nonlocal ——不影响全局
函数名是第一类对象的概念
闭包的概念: 内部的函数引用了外部的函数的变量
标签:并且 保存 nbsp pytho 事件 family 元祖 默认参数 turn
原文地址:http://www.cnblogs.com/liruoshi/p/7779146.html