函數的嵌套和調用
阿新 • • 發佈:2019-05-01
數據類型 lse 返回 turn 參數 無效 def 容器 內部
# 函數的嵌套調用
# def max(a,b):
# return a if a>b else b
# def the_max(a,b,c):
# x = max(a,b)
# return max(x,c)
# print(max(1,2))
# print(the_max(2,1,5))
# 函數的嵌套定義
# 內部函數可以使用外部函數的變量
a = 1
def outer():
a = 1
def inner():
a = 1
b = 2
print(a)
def inner2():
# global a # 聲明了一個全局變量,局部變量不變nonlocal a # 聲明了一個上層的局部變量,作用範圍只有向上找到第一層有此變量的局部,不影響全局
a += 1 # 不可變數據類型的修改
print(a,b)
inner2()
inner()
print(a)
outer()
print(a)
# nonlocal 只能用域局部變量,找上層離點當前函數最近一層的局部變量
# 聲明了nonlocal的內部函數的便兩個修改會影響到 離當前函數最近一層的局部變量
# 對全局無效
# 只對最近的一層有影響
def func():
print(‘aaa‘)
func2 = func # 函數名可以賦值
func2()
l = [func,func2] # 函數名可以作為容器類型的元素
for i in l:
i()
def aaa(f): # 函數名可以作為參數
f()
return f # 函數名可以作為函數的返回值
aaa(func)
feng = aaa(func)
print(feng)
feng()
# 函數名就是第一類對象
函數的嵌套和調用