Python函数的进阶
一 函数的动态参数
*agrs 位置参数动态传参
*args 接收多个位置参数
1 def func(*args): 2 print(args) 3 4 func("女儿国","西游记","猪八戒","孙猴子","从来如此",) 5 tu = ("女儿国","西游记","猪八戒","孙猴子","从来如此")
6func(*tu)
7
8 返回的是元组
*args 聚合
*tu 打散
**kwagrs 关键字参数动态传参
** 接收多个关键字参数
1 def func(**kwargs): 2 print(kwargs) 3 4 func(jj = '林俊杰',jay = '周杰伦',pyy = "彭于晏") 5 dic = {'jj' : '林俊杰','jay' : '周杰伦','pyy' : "彭于晏"} 6 func(**dic) 7 8 返回的是字典 9 10 11 **kwargs 聚合 12 **dic 打散
参数的顺序: 位置参数 *agrs 默认值参数 **kwargs
1 def func(*args,**kwargs): 什么都能接收 可以说是无敌
2 pass
形参位置: * ** 是聚合
实参位置: * ** 是打散
函数的注释
def func(a , b): ''' 计算两个数的和 :param a: 用户给的第一个数 :param b: 用户给的第二个数 :return: 返回两个的和 ''' sum = a+b return sum 又称文档注释
命名空间
内置命名空间: 存放python解释器为我们提供的名字, int , str ,list ,tuple , dict 这些都是内置命名空间
全局命名空间: 我们直接在py文件中,函数外声明的变量都属于全局命名空间
局部命名空间:函数中声明的变量会放在局部命名空间
局部变量:只在函数内部起作用的变量
全局变量:在整个程序中都起作用
a = 20 # 全局变量 def func(): a = 10 #局部变量 print(a) func()
作用域: 全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序;
当全局变量与局部变量同名时: 在定义局部变量的子程序内,局部变量起作用; 在其他地方全局变量起作用
globas(): 查看全局作用域的内容
locals(): 查看局部作用域的内容
a = 20 def func(): a = 10 b = 30 def asd(): print("哈哈") print(a,b) 使用的局部作用域 print(globals()) 打印全局作用域的内容 print(locals()) 打印局部作用域的内容 func()
函数的嵌套
函数的可以互相嵌套
a = 1 def fun_1(): a = 2 def fun_2(): nonlocal a a = 3 def fun_3(): a = 4 print(a) print(a) fun_3() print(a) print(a) fun_2() print(a) print(a) fun_1() print(a) 结果 1 2 3 4 3 3 1
global 和 nonlocal 关键字
global : 在局部访问全局中的内容
nonlocal : 在局部寻找外层函数中离他最近的那个变量