python學習筆記--function定義及使用
阿新 • • 發佈:2018-12-31
''' 方法定義 ''' def getData (width,height): return width*height print(getData(20,10)) #方法引數指定預設值 def getData1(width,height=20): return width*height print(getData1(20)) print(getData1(20,10)) #不定引數 ''' * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。 ''' def printSize(str,*size): print(str) print("長度為:",size) printSize("輸入的長度是:",50,60,70,80,90) #不定引數2,字典形式 def printStudent(str,**stu): print(str,stu) printStudent("當前學生資訊是",name="zhangsan",age=20,address="gx2012") ''' 宣告函式時,引數中星號 * 可以單獨出現,* 後的引數必須用關鍵字傳入 ''' def aa(a,b,*,c): print(a,b,c) aa(1,2,c=3) ''' 匿名函式 python 使用 lambda 來建立匿名函式。 所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函式。 lambda 只是一個表示式,函式體比 def 簡單很多。 lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在lambda表示式中封裝有限的邏輯進去。 lambda 函式擁有自己的名稱空間,且不能訪問自己引數列表之外或全域性名稱空間裡的引數。 雖然lambda函式看起來只能寫一行,卻不等同於C或C++的行內函數,後者的目的是呼叫小函式時不佔用棧記憶體從而增加執行效率。 函式定義 fun=lambda arg1,arg2:execution 說明fun是定義的匿名函式名,arg1,arg2是函式傳入的引數,execution是函式內部處理的邏輯 ''' sum = lambda arg1, arg2: arg1 + arg2 print(sum(1,2)) ''' 變數作用域 L (Local) 區域性作用域 E (Enclosing) 閉包函式外的函式中 G (Global) 全域性作用域 B (Built-in) python內建模組的作用域 以 L –> E –> G –>B 的規則查詢 ''' x = int(2.9) # 內建作用域 g_count = 0 # 全域性作用域 def outer(): o_count = 1 # 閉包函式外的函式中 def inner(): i_count = 2 # 區域性作用域 ''' global 和 nonlocal關鍵字 當內部作用域想修改外部作用域的變數時,就要用到global和nonlocal關鍵字了。 否則會報異常:UnboundLocalError: local variable 'num' referenced before assignment ''' num = 1 def fun1(): global num # 需要使用 global 關鍵字宣告 print(num) num = 123 print(num) fun1() print(num) ''' 如果要修改巢狀作用域(enclosing 作用域,外層非全域性作用域)中的變數則需要 nonlocal 關鍵字了,如下例項: ''' def testNonlocal(): num = 10 def inner(): nonlocal num # nonlocal關鍵字宣告 num = 100 print("outer",num) inner() print("outer",num) testNonlocal()