1.函数
不定长参数/动态位置参数(*args):以元组形式存储多余的位置参数
动态关键字参数(**kwargs):以字典形式存储多余的关键字参数
参数的排放顺序为:必需参数(位置参数)>不定长参数(*args) >关键字参数>不定长(动态)关键字参数(**kwargs)
在形参前加*可以将参数聚合
在实参前加*可以按顺序解包,拆开
** 和 *作用类似 **用于字典
在函数内容的开始可以文档字符串(用三对引号括起来成为文档字符串)用于存放函数说明,func.__doc__方法返回函数说明
2.名称空间
存放名字和值的关系的空间起一个名字叫做名称空间
命名空间分类:
1. 全局命名空间:我们直接在py文件中, 函数外声明的变量都属于全局命名空间(全局变量)
2. 局部命名空间:在函数中声明的变量会放在局部命名空间(局部变量)
3. 内置命名空间:存放python解释器提供的名字,如list, tuple, str, int都存在内置命名空间
加载顺序:内置>全局>局部
取值顺序:局部>全局>内置
3.作用域
分为全局作用域和局部作用域
全局作用域:全局命名空间+内置命名空间
局部作用域:局部命名空间
可以使用globals()来查看全局变量和函数,locals()查看当前位置的局部变量和函数
4.函数的嵌套
def func1():
print('func1')
def func2():
print('func2')
func1()
func2()
运行结果为:
func2
func1
5.global与nonlocal
global:表示函数中使用全局变量
nonlocal:表示函数中使用父级的局部变量