初識python 函數(定義,傳參,返回值)
阿新 • • 發佈:2018-07-31
one shu exp name 就是 關系 pre 可變 efi
python基礎(二):
菜鳥教程基礎知識講解的非常全面,內容選擇我認為的重點輸出一遍
函數:
定義一個函數:
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
def fun(arg): pass return arg # 函數調用語法 fun(arg)
- arg:argument,參數(也叫prarmeter) ,任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用於定義參數。
- def:define,定義,創建函數 ,函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號 ()。
- 代碼縮進表示語句塊,表明代碼從屬關系
- return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。
函數的調用:
將參數傳入已經定義好的函數中,便可以調用此函數
def printme( str ): "打印任何傳入的字符串" print (str) return # 調用函數 printme("我要調用用戶自定義函數!") printme("再次調用同一函數") 以上實例輸出結果: 我要調用用戶自定義函數! 再次調用同一函數
-
所謂“返回值”,就是程序中函數完成一件事情後,最後給調用者的結果
-
#定義函數 def add2num(a, b): return a+b #調用函數,順便保存函數的返回值 result = add2num(100,98) #因為result已經保存了add2num的返回值,所以接下來就可以使用了 print (result) --->198
函數返回值可以為多個:
-
def divid(a, b): ... shang = a//b ... yushu = a%b ... return shang, yushu ... >>> sh, yu = divid(5, 2) >>> sh 5 >>> yu 1
函數根據有沒有參數,有沒有返回值,可以相互組合,一共有4種
-
無參數,無返回值
-
# 函數定義,初級 def numsum(): a = 5 b = 10 c = a + b print(c) # 函數執行
-
-
無參數,有返回值
-
有參數,無返回值
-
有參數,有返回值
- 輸入參數:
- 形參:形式參數,聲明函數時,括號()中的參數
- 實參:實際參數,調用函數是,括號()中的參數
- 實參將值傳給形參,本質上是變量賦值
- 返回值:return
- 會終止函數執行(return是函數的最後一句),並返回一個值給調用方
- 不帶表達式的return返回None
- Print()不是返回值,只是輸出信息到界面
-
# 函數定義,帶輸入輸出 def numsum2(a, b): c = a + b return c # 函數調用 d = numsum2(10, 20) print(d) --->30
- 輸入參數:
函數中參數的類別:
- 必需參數
-
#可寫函數說明 def printme( str ): "打印任何傳入的字符串" print (str) return #調用printme函數 printme()
-
- 關鍵字參數
-
def about(name,course,site): print (name,course,site) about(site=‘www.baidu.com‘,name=‘green‘,course=100) ##以關健字方式傳入參數(可以不按順序)
-
- 默認參數
-
def about(name,course,site): print (name,course,site) about(‘jim‘,‘100‘,‘www.baidu.com‘) ## 必須按順序傳參
-
- 不定長參數
-
- 非關鍵字可變參數(元組)
- 放在默認值參數後面
- 可將傳入的不確定數量的默認參數聚合為元組方便函數使用
-
def fun(a, b, *args): print(a) print(b) print(args) print("="*30) ret = a + b for i in args: #便利args中的元素 ret += i return ret print(fun(1,2,3,4)) 結果: 1 2 (3, 4) ============================== 10
- 關鍵字可變參數(字典)
- 放在非關鍵字可變參數後面
- 可將傳入的不確定數量的默認值參數聚合為字典方便函數使用
-
def fun(a, b, *args, **kwargs): print(a) print(b) print(args) print(kwargs) fun(1, 2, 3, 4, name = "hello", age = 20) 結果: 1 2 (3, 4) {‘name‘: ‘hello‘, ‘age‘: 20}
- 非關鍵字可變參數(元組)
-
盡量避免多種參數格式混合(主要是兩種可變參數)
多參數混合時註意順序: 一般順序是:默認參數,默認值參數,非關鍵字可變參數,關鍵字可變參數
註意:
帶關鍵字的參數必須放在最後
匿名函數:
- 語義上講,lambda 只是普通函數定義中的一個語法技巧,書寫代碼更簡潔(但不易懂)
- lambda 是一個表達式(非代碼塊),比 def 簡單,僅能封裝有限的邏輯如if else分支,不能使用多項分支和循環,不適合復雜操作
# 普通函數 def def_sum(a, b): return a + b def_sum(5, 10) # 匿名函數:變量名 = lambda 參數... : 表達式計算 lambda_sum = lambda a, b: a + b lambda_sum(5, 10)
--->15
分支匿名函數 # 普通函數 def def_gender(g): if g == 1: return ‘男性‘ else: return ‘女性‘ def_gender(0) # 匿名函數:變量名 = lambda 參數... : 分支1的值 if 判斷條件 else 分支2的值 lambda_gender = lambda a: ‘男性‘ if a == 1 else ‘女性‘ lambda_gender(1) --->男性
# 普通函數 def absum(a, b): return a + b def def_sum2(a, b, c): return absum(a, b) + c def_sum2(1,2,3) # 匿名函數:變量名 = lambda 參數... : 其他函數組成的表達式 def absum(a, b): return a + b lambda_sum = lambda x, y, z: absum(x, y) + z lambda_sum(1,2,3)
--->6
初識python 函數(定義,傳參,返回值)