def 函式名( 引數列表 ) :
函式體return [ 表示式 ]
在沒有引數時,要保留()
在return時,會根據表示式返回乙個值給呼叫方,如果不帶返回值,則相當於返回 none
通過函式名呼叫函式,也要注意在呼叫函式時引數的問題。
在python中,型別屬於物件,變數沒有型別在傳入引數時,不同的引數型別會產生不同的影響
不可變物件,如整數、字串、元組
可變物件,如列表、字典
傳入不可變引數物件時,傳入的是引數的值,不會對物件本身產生影響傳入可變引數物件時,傳入的是物件,函式內對引數進行的操作會影響到函式外引數的內容,即函式內對引數的操作會在全域性範圍內對變數產生影響
# 傳入可變引數
def change(mylist):
print('函式內取值:',mylist)
return
mylist = [10,20,30]
change(mylist)
print('函式外取值:',mylist)
呼叫函式時,可使用到的正式引數型別
必需引數
關鍵字引數
預設引數
不定長引數
必需引數需要以正確的順序傳入函式,呼叫時的數量必須和宣告時一樣
關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致
def printinfo(name,age):
print('姓名',name)
print('年齡',age)
return
printinfo(age=50,name='tom')
呼叫函式時,如果沒有傳遞引數,則會使用預設引數
def printinfo(name,age=15): # age預設值為 15
print('姓名',name)
print('年齡',age)
return
printinfo(age = 50,name='tom')
printinfo(name='amy')
需要乙個函式處理比宣告時更多的引數。這些引數叫做不定長引數。與之前的引數不同,宣告時不會命名。
def printinfo(arg1 , *vartuple):
print('輸出:')
print(arg1)
print(vartuple)
printinfo(70,80,90)
輸出加70(80,90)
*
的引數會議元組的形式傳入,存放所有未命名的變數,在函式呼叫時沒有指定引數,他就是乙個空元組,可以不向函式傳遞未命名變數
加了**
的引數會以字典的形式匯入
def printinfo(arg1, **vardict):
print(arg1)
print(vardict)
return
printinfo(1,a=2,b=3)
1注:
*
可以單獨出現,如果出現單獨的*
,則星號後的引數需要以關鍵字的方式傳入
def test(a,b,*,c):
print(a)
print(b)
print(c)
return
text(1,2,c=5)
python使用 lambda 來建立匿名函式
lambda 只是乙個表示式,函式體比 def 簡單
lambda 的主體是乙個表示式,而不是乙個**塊。僅能封裝有限的邏輯
lambda 函式有自己的命名空間,不能訪問引數列表外或全域性命名空間的引數
看上去只有一行,但等同於內聯函式,主要是為了提高執行效率,減少不必要的棧記憶體使用
sum = lambda arg1,agr2: arg1+arg2
print(sum(10,20))
return [表示式]
,用於退出函式,選擇性地向呼叫方返回乙個表示式。不帶引數的 return語句返回 none。
def sum(arg1,arg2)
total = arg1 + arg2
return total
total = sum(1,2)
print(total)
偷懶的一天 Day83
今天實在是學不進去,從公司裡工作著也是渾渾噩噩的,雖然不是我媳婦生孩子,但這也是我們這個大家庭裡的第乙個孩子,我的親大侄子啊,當然還可能是侄女,還在想名字,都想了好多了,還是有些激動有些緊張啊。偷懶一天,來碼上幾個字,草草寫上至少我也知道我還在意著。html css css3 js不能說掌握的比較好...
Python學習筆記 8 3章 單元測試
1 概覽 單元測試是用來對乙個模組 乙個函式或者乙個類來進行正確性檢驗的測試工作。比如對函式 abs 我們可以編寫出以下幾個測試用例 輸入正數,比如1 1.2 0.99 期待返回值與輸入相同 輸入負數,比如 1 1.2 0.99 期待返回值與輸入相反 輸入0 期待返回0 輸入非數值型別,比如 non...
Python學習筆記 8 3 函式 返回值
例1 def db connect ip,port 3306 print ip,port res db connect 118.24.3.40 3307 如果函式中沒有return,print res 會返回none。例2 def my2 for i in range 50 return i pri...