日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

可变长参数,函数的嵌套,名称空间,关键字

發布時間:2023/12/20 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 可变长参数,函数的嵌套,名称空间,关键字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

5.30自我總結

一.可變長參數

1.可變長形參之(*)

形參中的會將溢出的位置實參全部接收,然后存儲元組的形式,然后把元組賦值給后的參數。需要注意的是:*后的參數名約定俗成為args。

def sum_self(*args):res = 0for num in args:res += numreturn resres = sum_self(1, 2, 3, 4) print(res) #10

2.可變長實參之(*)

實參中的,會將后參數的值循環取出,打散成位置實參。以后但凡碰到實參中帶的,它就是位置實參,應該馬上打散成位置實參去看。

def func(x, y, z, *args):print(x, y, z, args)func(1, *(1, 2), 3, 4) #1 1 2 (3,4)

3.可變長形參之(**)

形參中的會將溢出的關鍵字實參全部接收,然后存儲字典的形式,然后把字典賦值給后的參數。需要注意的是:**后的參數名約定俗成為kwargs。

def func(**kwargw):print(kwargw)func(a=5) #{'a': 5}

4.可變長實參之(**)

實參中的會將后參數的值循環取出,打散成關鍵字實參。以后但凡碰到實參中帶的,它就是關鍵字實參,應該馬上打散成關鍵字實參去看。

def func(x, y, z, **kwargs):print(x, y, z, kwargs) func(1, 3, 4, **{'a': 1, 'b': 2}) #1 3 4 {'a': 1, 'b': 2}

5.可變長參數應用

def index(name, age, sex):print(f"name: {name}, age: {age}, sex: {sex}")def wrapper(*args, **kwargs):print(f"args: {args}")print(f"kwargs: {kwargs}")index(*args, **kwargs)wrapper(name='nick', sex='male', age=19)''' args: () kwargs: {'name': 'nick', 'sex': 'male', 'age': 19} name: nick, age: 19, sex: male '''

二.關于函數的嵌套

最好返回值為函數名,不要是函數調用

#第一種 def f1():def f2():print('asdad')return f2 f2 = f1() f2() #第二種 def f1():def f2():print('asdad')return f2() f1()#最好用第一種方法運行,第二種運行可能會造成一些不必要的麻煩

函數內部的函數只能在函數內部調用,不能在函數外部調用

def f1():def f2():print('asdad')f2() 會報錯 ,f2沒有定義

三.名稱空間

1.內置名稱空間

名稱空間(name spaces):在內存管理那一章節時,我們曾說到變量的創建其實就是在內存中開辟了一個新的空間。但是我們一直在回避變量名的存儲,其實在內存中有一塊內存存儲變量名與變量間的綁定關系的空間,而這個空間稱為名稱空間。

生命周期:在python啟動時候,python關閉時候

2.全局名稱空間

全局名稱空間:除了內置和局部的名字之外,其余都存放在全局名稱空間.

生命周期:在文件執行時生效,在文件執行結束后失效

3.局部名稱空間

局部名稱空間:用于存放函數調用期間函數體產生的名字.`

生命周期:在文件執行時函數調用期間時生效,在函數執行結束后失效

如:

x = 1 # 其中X,f1為全局名稱空間,print為內置名稱空間,f2為局部名稱空間print(x) def f1():def f2():print('from f2')f2()f1()

關于三種名稱空間的加載順序:

內置名稱空間→全局名稱空間→局部名稱空間

名稱空間的查找順序

x=1 def f1():def f2():x = 3 print(x)f2() x=3 f1() print(x)

關于查找:

如果查找的起點在局部名稱空間內,他會先在局部空間他的位置開始自之下而上開始尋找,如果在局部空間內找不到,再去全局名稱空間開始尋找如果還沒找打他會去去內置名稱空間尋找他不會去另外的局部空間進行查找

如果起點在全局名稱空間,他不會去局部空間開始查找,他會去全局開始尋找,如果全局沒找到他會去內置名稱空間尋找.

四.關鍵字

1..global關鍵字

修改全局作用域中的變量。

x = 1def f1():x = 2def f2():global x # 修改全局x = 3f2()f1() print(x) #3

2.nonlocal關鍵字

修改局部作用域中的變量。

x = 1def f1():x = 2def f2():nonlocal xx = 3f2()print(x)f1()

3.注意點

1,兩個關鍵字必寫在須在局部名稱空間變量名第一次出現的上面 2.在局部想要修改全局的可變類型,不需要任何聲明,可以直接修改。 3.在局部如果想要修改全局的不可變類型,需要借助global聲明,聲明為全局的變量,即可直接修改。

轉載于:https://www.cnblogs.com/pythonywy/p/10952493.html

總結

以上是生活随笔為你收集整理的可变长参数,函数的嵌套,名称空间,关键字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。