函数的嵌套使用:
def f1():
def f2():
def f3():
print('hello')
f3()
f2()
f1()
# 定义一个函数,传入两个数字比较大小
def max(x,y):
return x if x<y else y
# 调用定义好的函数进行比较
def compare_size(a,b):
res = max(a,b)
return res
名称空间
# 局部名称空间,全局名称空间和内置名称空间
#1、python解释器先启动,因而首先加载的是:内置名称空间
#2、执行test.py文件,然后以文件为基础,加载全局名称空间
#3、在执行文件的过程中如果调用函数,则临时产生局部名称空间
# 局部名称空间:
a=1
def func():
b = 2
# 上面的这个a就是属于全局名称空间内,在全局的任意处都可以调用,但是b是写在函数内部的,属于局部名称空间,只能在函数内使用,全局用不了。
# 注意: 全局定义的可以在局部使用,局部定义的不能在全局使用。
作用域
全局范围(内置名称空间与全局名称空间属于该范围):全局存活,全局有效
局部范围(局部名称空间属于该范围):临时存活,局部有效
global与nonlocal关键字
# global 将局部变量升级成全局变量
def func():
global a
a = 1
func()
print(a)
# 打印a等于1
# 了解即可
# nonlocal 非局部声明变量指代的已有标识符是最近外面函数的已声明变量
count = 1
def a():
count = 'a函数里面'
def b():
nonlocal count
print(count)
count = 2
b()
print(count)
a()
print(count)
# 打印: a函数里面 2 1