標籤:img 就是 常用 sed 資料 int code 學習 問題
1.函數的定義
def func():
2.函數的調用
func()
3.函數的傳回值
#1.沒有傳回值# (1)不寫return# (2)唯寫return後面的代碼不在繼續執行,返回空,代表結束一個函數,跳到整個函數外面# break 只是跳出函數內的迴圈內容# (3)return None 結束 這個不常用# 2.返回一個值# (1) 可以返回任何資料類型# (2)只要返回了,就可以接收了# (3)如果一個程式有多個return 只返回一個# 3.返回多個值# 多個傳回值用多個變數接收,有多少傳回值,就用多少變數接收# 用一個變數接收,返回元組
# def func():# l = [‘金老闆‘,‘二哥‘]# for i in l:# if i == ‘金老闆‘:# return None# print(‘==========‘)# ret = func()# print(ret)#### def func():# #return [1,2,3,4]# return False# print(func())## def func2():# return 1,2# print(func2())## r1,r2 = func2()# print(r1,r2)
3.函數的參數
函數定義和調用的時候
位置參數,*args,預設參數,**kwargs
1.沒有參數,定義和調用函數時,括弧內都不寫內容
2.1個參數,傳什麼就是什麼
3.多個參數
站在實參角度長
位置參數
按照關鍵字傳
位置傳和關鍵字傳可以混用,必須先按照位置傳參,然後按照關鍵字
ret = my_sum(a = 5,2)是不對的
不能給同一個變數傳多個值
站在形參的角度上
位置參數:必須傳,且有幾個參數傳幾個,多傳和少傳都報錯,
4.動態參數
*args接收按照位置傳參的值,組織成一個元組
**args接收按照關鍵字傳參的值,組織成一個字典
可以接收任意多個參數
*args 加*變成動態參數,參數名之前加*,習慣參數名用args
按照關鍵字傳不行
如果有多個關鍵字參數需要調用,虛參用**kwargs
5.順序 必須先定義位置參數,然後定義args,最後定義位置參數
參數名之前加**,習慣參數名kwargs
# def my_sum(a,b):# res = a + b# return resd# ret = my_sum(1,2)# print(ret)# ret = my_sum( 3,b = 6)# print(ret)# def classmate(name,sex = ‘男‘): #預設參數,如果不傳就用預設參數,如果傳了,就傳遞傳的值+# #只有調用函數的時候# #按照位置傳: 直接寫參數的值# #按照關鍵字: 關鍵字 = 值# #定義函數的時候:# #位置參數:直接定義參數# #預設參數:關鍵字參數: 參數名 = ’預設值‘-0# #定義函數的時候,必須先定義位置參數,後定義預設參數# print(‘{0}同學是{1},我愛{0}‘.format(name,sex))# classmate(‘二哥‘)# classmate(‘蒼‘,‘女‘)# *args 動態參數def sum(*args): n = 0 for i in args: n += i print(n)sum(1,2)sum(1,2,3)sum(1,2,3,4)#########def func(**kwargs): print(kwargs)func(a = 1,b = 2,c = 4)def func(*args,default = 2,**kwargs): #先位置參數,後關鍵字參數,即args必須在kwargs之前 print(args,kwargs)func(1,2,3,4,5,default = 1, va = ‘asdkfj;als‘,b = ‘dsfjl‘)View Code
動態參數的另外一種傳參方式
def func(*args): #站在形參的角度上,給變數加上*,就是組合所有傳來的值 print(args)func(1,2,3,4,5)l = [1,2,3,4,5]func(*l) #站在實參的角度上,給一個序列加上*,就是將這個序列按照順序打散def func(**kwargs): print(kwargs)func(a = 1,b = 2)d = {‘a‘ : 1,‘b‘ : 2}func(**d)View Code
函數的注釋
def func(): ‘‘‘ 這個函數實現了什麼功能 參數1: 參數2: :return:是字串或者列表的長度 ‘‘‘#預設參數的陷阱問題
View Code
python學習9 函數的基礎知識