Python預設引數的陷阱
阿新 • • 發佈:2020-08-17
一:內建函式
- globals()
- locals()
1.返回的是字典,字典裡面的鍵值對:全域性作用域的全部內容
print(globals())
2.返回的是字典,字典裡面的鍵值對:當前作用域的全部內容
print(locals())
二:預設引數的陷阱
1.預設引數:沒傳值,可變資料型別在記憶體中是同一個 def func(name, alist=[]): alist.append(name) renturn alist r1 = fun('whj') print(r1) >>>['whj'] r2 = fun('xhl') print(r2) >>>['whj','xhl'] 2.預設引數:傳值 def func(a, alist=[]): list.append(a) renturn alist print(func(10)) >>>[10] print(func(20, [])) >>>[20] print(func(100)) >>>[10, 100] 3.預設引數執行順序 def func(a, alist=[]): list.append(a) renturn alist r1 = func(10) r2 = func(20, []) r3 = func(100) print(r1) >>>[10, 100] print(r2) >>>[20] print(r3) >>>[10, 100]
三:區域性變數與全域性變數
1.在函式中,如果你定義了一個變數,但是在定義這個變數之前對其引用了,
那麼直譯器認為是語法問題,應該在使用前定義
count = 1
def func():
print(count)
count = 3 ×
func()
2.global
在區域性作用域宣告一個全域性變數
3.nonlocal
不允許操作全域性變數
內層函式對外層函式的區域性變數進行修改(巢狀函式)