函式物件,命名空間和作用域

2022-09-16 08:51:15 字數 1996 閱讀 4672

目錄函式的巢狀

命名空間和作用域

作用域global關鍵字

nonlocal關鍵字

注意點python中一切皆物件

def f1():

print('from f1')

func = f1

print('f1:', f1)

print('func', func)

# 列印結果:

f1: func

def f1():

print('from f1')

def f2(f2_f1):

print('f2_f1:', f2_f1)

f2(f1)

print('f1:', f1)

# 列印結果:

f2_f1: f1:

def f1():

print('from f1')

def f2(f2_f1):

return f2_f1

res = f2(f1)

print('res:', res)

print('f1:', f1)

# 列印結果:

res: f1:

def f1():

print('from f1')

lt = [f1, 12, 3, 4, 5]

lt[0]()

def pay():

print('支付1e成功')

def withdraw():

print('提現2e成功')

dic =

while true:

msg = '''

'1': 支付,

'2': 提現,

'3': 退出,

'''print(msg)

choice = input('>>: ').strip()

if choice == '3':

break

elif choice in dic:

dic[choice]()

函式裡面巢狀函式

def f1():

print('from f1')

def f2():

print('from f2')

f2()

f1()

儲存了內建方法的空間

資料型別內建方法;python直譯器自帶的方法(print / len / list / str / dict)

除了內建和區域性都叫全域性

函式內部定義的都叫區域性

內建命名空間:python直譯器啟動的時候就有了

全域性命名空間:執行檔案**的時候才會有全域性

區域性命名空間:函式呼叫的時候才會有區域性

從當前位置查詢,找不到按照這種順序,不會逆向尋找:區域性 > 全域性 > 內建 > 報錯

內建命名空間 +全域性命名空間 --> 全域性作用域

區域性命名空間 --> 區域性作用域

x = 10

def func():

global x

x = 20

func()

print(x) # 列印20

x = 10

def f1():

x = 2

def f2():

nonlocal x # nonlocal讓x成為額頂層函式的區域性,不是讓它成為全域性

x = 30

f2()

print(x)

f1()

# 列印30

所有可變資料型別均可打破上述一切規則

lt = [10]

def f1():

f1()

print(lt)

# 列印結果:

[10,20]

函式命名空間和作用域

內建 命名空間 python直譯器啟動之後就可以使用的變數 函式名 全域性 命名空間 在函式外面的變數名 函式名 區域性 命名空間 每乙個函式都擁有自己的命名空間 python直譯器執行 載入順序 所有 內建空間函式名 變數 逐行 載入全域性空間變數 函式名 區域性空間的變數 函式名 在呼叫函式的時...

函式命名空間和作用域

內建 命名空間 python直譯器啟動之後就可以使用的變數 函式名 全域性 命名空間 在函式外面的變數名 函式名 區域性 命名空間 每乙個函式都擁有自己的命名空間 python直譯器執行 載入順序 所有 內建空間函式名 變數 逐行 載入全域性空間變數 函式名 區域性空間的變數 函式名 在呼叫函式的時...

函式 命名空間和作用域

一.命名空間。二.作用域 三函式的巢狀。今日新名詞 1 globals 函式 檢視全域性作用域的內容 2 locals 函式 檢視區域性作用域的內容 3 global 方法 呼叫全域性作用域的變數並獲得修改許可權 4 nonlocal 方法 呼叫區域性作用域的變數並獲得修改許可權.命名空間 用來存放...