本节内容:
1.动态参数
2.函数的注释
3.函数名称空间(三个空间)
4.两个作用域、全局变量和局部变量
5.函数的嵌套
2.函数的注释:
def aaa(user,pwd): """ 登录函数 :param user: 用户名 :param pwd: 密码 :return: 校验后的账号和密码 """ print(111) print(aaa.__doc__) 登录函数 :param user: 用户名 :param pwd: 密码 :return: 校验后的账号和密码
3.名称空间
1.内置空间中所有代码 --> 内置空间
2.自己写的py文件 --> 全局空间
3.函数中的代码 --> 局部空间
加载顺序:
'''
1.内置空间
2.全局空间
3.局部空间
'''
# 取值顺序:
'''
1.局部空间
2.全局空间
3.内置空间
4.找不到就报错
'''
4.作用域:
'''
1.全局作用域 内置+全局 = 全局作用域
2.局部作用域 函数内的就是局部作用域
全局变量:定义在函数外部的变量。
局部变量:定义在函数内部的变量,或者代码块内部的变量。
global(指定全局变量):在局部空间只修改全局变量,没有就创建修改。
nonlocal(指定上一级变量):在局部空间内,修改最近的上一层变量,如果没有就继续往上一层查找,
1 a = 0 2 def func1 (): 3 a = 1 4 def func2 (): 5 print a 6 func1() 7 func2()
1 a = 0 2 def func1 (): 3 global a 4 a = 1 5 def func2 (): 6 print a 7 func1() 8 func2()
a = 10 def func(): global a # (声明)我要修改a 找到要a a+=1 # 修改 func() print(a)
输出的a是11
def func(): global a #(声明我要修改a,找不到a的时候在全局创建一个 a=0) a = 1 # a = 1 func() print(a)
输出的a是1
重点:5.函数的嵌套:
函数的嵌套1:
1 def fun(): 2 print(3) 3 def f(): 4 print(2) 5 print(1) 6 f() 7 fun() 8 print(4) 9 10 结果: 11 3 12 1 13 2 14 4
1 name = "yangtuo is good" # 1 2 def yangtuo(): # 2 将整个函数放入内存编译,但是不执行 3 name = "yangtuo" # 4 print(name) # 5 def yang(): # 3 将整个函数放入内存编译,但是不执行 6 name = "yang" # 7 print(name) # 8 def tuo(): # 4 将整个函数放入内存编译,但是不执行 9 name = "tuo" # 10 print(name) # 11 tuo() # 4.1 执行函数tuo,得出结果 tuo 12 print(name) # 5 调取yang的name,得出结果 yang 13 yang() # 3.1 执行函数yang,得出结果 yang 14 print(name) # 6 调取yangtuo的name,得出结果yangtuo 15 yangtuo() # 2.1 执行函数yangtuo,得出结果 yangtuo 16 print(name) # 7 得出结果yangtuo is good
函数的嵌套2
1 a = 1 2 def fun_1(): 3 a = 2 4 def fun_2(): 5 nonlocal a 6 a = 3 7 def fun_3(): 8 a = 4 9 print(a) #4 10 print(a) #3 11 fun_3() 12 print(a) #3 13 print(a) #2 14 fun_2() 15 print(a) #3 16 print(a) 17 fun_1() 18 print(a) #1