Python基礎(10):函式
一、標準函式 def
你可以定義一個由自己想要功能的函式,以下是簡單的規則:
-
函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號 ()。
-
任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。
-
函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明。
-
函式內容以冒號起始,並且縮排。
-
return [表示式] 結束函式,選擇性地返回一個值給呼叫方。不帶表示式的return相當於返回 None。
語法:
def <name>(arg1, arg2,...argN): <statements> return <value>
二、匿名函式 lambda
所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函式。
-
lambda 只是一個表示式,函式體比 def 簡單很多。
-
lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在lambda表示式中封裝有限的邏輯進去。
-
lambda 函式擁有自己的名稱空間,且不能訪問自己引數列表之外或全域性名稱空間裡的引數。
-
雖然lambda函式看起來只能寫一行,卻不等同於C或C++的行內函數,後者的目的是呼叫小函式時不佔用棧記憶體從而增加執行效率。
語法:
lambda [arg1 [,arg2,.....argn]]:expression
例項:
# 可寫函式說明 sum = lambda arg1, arg2: arg1 + arg2; # 呼叫sum函式 print ("相加後的值為 : ", sum( 10, 20 )) print ("相加後的值為 : ", sum( 20, 20 )) 相加後的值為 : 30 相加後的值為 : 40
三、return 語句
return 語句用於退出函式,選擇性地向呼叫方返回一個表示式。不帶引數值的return語句返回None。
語法:
return [表示式]
四、作用域
變數的作用域決定了在哪一部分程式可以訪問哪個特定的變數名稱。Python的作用域一共有4種,分別是:
-
L (Local) 區域性作用域
-
E (Enclosing) 閉包函式外的函式中
-
G (Global) 全域性作用域
-
B (Built-in) 內建作用域
以 L –> E –> G –>B 的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。
x = int(2.9) # 內建作用域 g_count = 0 # 全域性作用域 def outer(): o_count = 1 # 閉包函式外的函式中 def inner(): i_count = 2 # 區域性作用域
Python 中只有模組(module),類(class)以及函式(def、lambda)才會引入新的作用域,其它的程式碼塊(如 if/elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這這些語句內定義的變數,外部也可以訪問
-
全域性變數和區域性變數
-
定義在函式內部的變數擁有一個區域性作用域,定義在函式外的擁有全域性作用域。
-
區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問。呼叫函式時,所有在函式內宣告的變數名稱都將被加入到作用域中。
-
global 和 nonlocal關鍵字
當內部作用域想修改外部作用域的變數時,就要用到global和nonlocal關鍵字了。
-
global
num = 1 def fun1(): global num # 需要使用 global 關鍵字宣告 print(num) num = 123 print(num) fun1() 以上例項輸出結果: 1 123
-
nonlocal
如果要修改巢狀作用域(enclosing 作用域,外層非全域性作用域)中的變數則需要 nonlocal 關鍵字了。
def outer(): num = 10 def inner(): nonlocal num # nonlocal關鍵字宣告 num = 100 print(num) inner() print(num) outer() 以上例項輸出結果: 100 100
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2636340/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python基礎-函式Python函式
- python函式基礎Python函式
- python基礎函式Python函式
- Python基礎(六) 函式Python函式
- python-函式基礎Python函式
- python基礎之函式Python函式
- python基礎--函式全解析Python函式
- python基礎7 - 函式2Python函式
- Python基礎教程07 - 函式Python函式
- 《Python 基礎篇》五:函式Python函式
- 五、Python函式之基礎Python函式
- python基礎 filter, lambda 函式表示式PythonFilter函式
- Python基礎之閉包函式Python函式
- python 基礎語法 - 函式(一)Python函式
- Python基礎之 4. 函式Python函式
- Python基礎函式使用知識Python函式
- Python基礎學習3:函式Python函式
- Python函式基礎(day3)Python函式
- 函式基礎函式
- 【Python基礎】Python 函式返回多個值和函式註解Python函式
- python3.7 函式基礎入門Python函式
- python基礎之 函式的引數Python函式
- Python基礎之白話說函式Python函式
- Python基礎之函式的巢狀Python函式巢狀
- python,函式各種基礎知識Python函式
- python基礎-內建函式詳解Python函式
- Python 快速教程(基礎篇07): 函式Python函式
- 【python基礎】input函式的基礎使用以及進階Python函式
- 函式基礎和函式引數函式
- Python基礎之特殊的函式--裝飾器和偏函式Python函式
- python基礎 python內建函式map/reduce/filterPython函式Filter
- Python 基礎起步 (十) 什麼叫函式?Python函式
- 零基礎學習 Python 之函式Python函式
- Python基礎程式設計(十六)——函式4Python程式設計函式
- python基礎 split 和 join函式比較Python函式
- python基礎 函式之 強大的zipPython函式
- Go基礎-字串函式Go字串函式
- 前端基礎(三):函式前端函式