標籤:*args 理解 lob 文法 技術分享 全域變數 結束 logs 方式
一,函數是什嗎?
定義:函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可
特性:
1.減少代碼的重複性
2.代碼的可擴充性
3.代碼的易維護性
文法定義
def sayHello():
print(‘hello,i‘m good boy)
sayHello()
也可直接傳入參數
def add(x,y):
res = x+y
return res
result = add(3,5)
print(result)
二,函數參數
形參變數只有在調用時才會被分配記憶體單元,調用結束時就釋放記憶體,也就是說,形參變數不調用時是不會佔用任何記憶體的。因此,形參只能在函數內部有效。
實參可以是常量,變數,運算式,函數等,但是在函數調用時,它必須有確定的值以便傳給形參。
函數傳遞的四種方式
1.位置傳遞
def info(name,age,sex): return ‘有一位新人名字叫%s,今年%s,性別%s‘%(name,age,sex)print(info(‘mingo‘,23,‘男‘))
View Code
按照位置一一對應進去,多個或少一個實參都會報錯
2.關鍵字傳遞
def info(name,age,sex): return ‘有一位新人名字叫%s,今年%s,性別%s‘%(name,age,sex)print(info(name=‘mingo‘,sex=‘男‘,age=23))
View Code
關鍵字傳遞無順序,只要你的名字對了就行,但要注意一點的就是,關鍵字參數不能出現在位置參數的前面
例如:
def info(name,age,sex): return ‘有一位新人名字叫%s,今年%s,性別%s‘%(name,age,sex)print(info(name=‘mingo‘,sex=‘男‘,23))
View Code
3.預設傳遞
def info(name,age,sex=‘女‘): return ‘有一位新人名字叫%s,今年%s,性別%s‘%(name,age,sex)print(info(name=‘mingo‘,age=23))#sex不寫預設女print(info(name=‘mingo‘,sex=‘男‘,age=23))#sex寫會覆蓋預設的值
View Code
4包裹傳遞(不確定使用者想傳入多少個參數時使用)
def info(*args): print(args) print(type(args))info(1,2,4,‘a‘,‘mingo‘,21,‘nan‘)列印結果(1, 2, 4, ‘a‘, ‘mingo‘, 21, ‘nan‘)<class ‘tuple‘>
View Code
args會收集傳遞進去的參數並變成元組的形式,args只是一個規範的名稱,可以改其它名稱,例如*aa
def info(**kwargs): print(kwargs) print(type(kwargs))info(name=‘mingo‘,age=21,sex=‘nan‘)列印結果{‘name‘: ‘mingo‘, ‘age‘: 21, ‘sex‘: ‘nan‘}<class ‘dict‘>View Code
kwargs會接受key-value形式的參數並變成字典的形式
def info(*args,**kwargs): print(args) print(kwargs)info(1,2,name=‘mingo‘,age=21,sex=‘nan‘)列印結果(1, 2){‘name‘: ‘mingo‘, ‘age‘: 21, ‘sex‘: ‘nan‘}View Code
以上多種形式可以配合著使用,如果有機會看到的小夥伴還是自己多動手試一試吧,我就不貼出代碼了
三,局部變數
name = "Mingo"def change_name(name): print("before change:", name) name = "明哥,一個買不起房的男人" print("after change", name)change_name(name)print("在外面看看name改了麼?", name)列印結果before change: Mingoafter change 明哥,一個買不起房的男人在外面看看name改了麼? MingoView Code
全域與局部變數
在子程式中定義的變數稱為局部變數,在程式的一開始定義的變數稱為全域變數。全域變數範圍是整個程式,局部變數範圍是定義該變數的子程式。當全域變數與局部變數同名時:在定義局部變數的子程式內,局部變數起作用;在其它地方全域變數起作用。 要想修改全域變數只能在內部調用global,改全域變數有待商榷,不敢肆意為之。 四,傳回值相信很多人對return產生了疑問?
要想擷取函數的執行結果,就可以用return語句把結果返回
注意:
- 函數在執行過程中只要遇到return語句,就會停止執行並返回結果,so 也可以理解為 return 語句代表著函數的結束
- 如果未在函數中指定return,那這個函數的傳回值為None
所以,有什麼卵用呢?看你的需求了。
python之函數