Python 函數(shù)語(yǔ)法規(guī)則
1.定義函數(shù)
函數(shù)的返回,在函數(shù)體中 有return語(yǔ)句玻募,return后可以跟多個(gè)值用逗號(hào)隔開即可
def add (a,b): # 參數(shù)名 是函數(shù)中的局部變量
return a+b, str(a)+str(b) # 返回多個(gè)數(shù)據(jù)時(shí)返回?cái)?shù)據(jù)類為元組
函數(shù)調(diào)用
調(diào)用: 直接寫函數(shù)名稱 和傳遞參數(shù)
v=add(100,200)
print(v,type(v))
a=10
def f2():
print('函數(shù)執(zhí)行')
#函數(shù)沒(méi)有寫 返回值時(shí) 默認(rèn)返回 None
print( f2() ) # 打印f2() 函數(shù)執(zhí)行后的返回值 為None
2.Python 函數(shù) 參數(shù)的各種形式
1.參數(shù)的“多態(tài)性” ---- 參數(shù)變量 可以代表任何數(shù)據(jù)類型
def add(a,b):
return a+b
print( add(1,2) )
print( add("hello","world") )
2. 函數(shù)對(duì)參數(shù)的 處理 分可變數(shù)據(jù) 和不可變數(shù)據(jù) 兩種情況
a=10 # a變量所引用的 值10 所占的內(nèi)存空間 不可在改變 其中的數(shù)據(jù)鸭栖, int怪得,float,bool,Str 等都是不可變數(shù)據(jù)
def f2(p1):
p1=p1+1
return p1
print(f2(a)) # 當(dāng)傳遞到函數(shù)中的數(shù)據(jù) 是不可變數(shù)據(jù)時(shí),函數(shù)中對(duì)該數(shù)據(jù)的更改,不會(huì)影響傳遞進(jìn)來(lái)之前的數(shù)據(jù)
print(a) # a 仍然保持為 原來(lái)的10
# 以上的輸出 分別是 11 和10
l1=[1,2] # l1 所引用的值 所占的空間 是可改變的宙攻,list set dict 這些數(shù)據(jù)類型 的存儲(chǔ)空間是 可改變的
def f3(p1):
p1.append(3) # 當(dāng)傳遞進(jìn)來(lái)的數(shù)據(jù) 可變時(shí),函數(shù)中對(duì)數(shù)據(jù)做的更改介褥,會(huì)對(duì)傳遞進(jìn)來(lái)之前的值 產(chǎn)生影響
return p1
print( f3(l1))
print(l1 )
# 以上兩行輸出的 值是一樣的 改變后的座掘。 l1被函數(shù)所改變
l2=[3,4,5]
l3=l2
l3.append(6)
print(l2,l3,id(l2),id(l3)) # 表示 l2 l3 都引用同一個(gè) 列表
3.函數(shù)定義時(shí)和調(diào)用時(shí) 參數(shù)列表中 有等號(hào)的情況
1.定義函數(shù)時(shí) 參數(shù)帶等號(hào) 表示給參數(shù)設(shè)定默認(rèn)值
def f1(a,b=10):
print(a,b)
調(diào)用函數(shù)f1
f1(10) # 只給參數(shù) a 傳遞值10, b參數(shù)采用默認(rèn)值 10
f1(10,20) # 給a傳遞10柔滔, b傳遞20
以上兩行分別輸出10 10; 10 20
2.調(diào)用函數(shù)時(shí) 參數(shù)帶等號(hào)溢陪,表示 指定給某一個(gè)參數(shù)傳遞值
f1(a=123,b=456)
f1(b=123,a=456) #指定給參數(shù)傳遞值 可以不按照 定義函數(shù)時(shí) 參數(shù)的順序傳遞
以上兩行輸出123 456; 456 123
注意:
f1(b=123, 456) # 調(diào)用函數(shù)時(shí) 如果通過(guò)指定參數(shù)名傳遞睛廊, 則從第一個(gè)指定名稱傳遞開始 后面的參數(shù)都必須通過(guò)指定名稱傳遞
以上寫法 會(huì)報(bào)語(yǔ)法錯(cuò)誤P握妗!
f1(b=123, 456)
^
SyntaxError: positional argument follows keyword argument
3. 函數(shù)的參數(shù)定義時(shí) 和調(diào)用時(shí) 有星號(hào)的情況
1. 定義函數(shù)時(shí) 參數(shù)有星號(hào)的情況
def f2(*p1): # 星號(hào)參數(shù)表示在調(diào)用該函數(shù)時(shí)可以傳遞任意多個(gè)參數(shù)
print(p1, type(p1)) # 在函數(shù)中用一個(gè)參數(shù)名字統(tǒng)一表示多個(gè)數(shù)據(jù),以元組形式存在
f2(1,2,3,4,5) # 可以傳遞任意多個(gè)參數(shù) 進(jìn)去
2.調(diào)用函數(shù)時(shí) 參數(shù)帶星號(hào)的情況
def f3(a,b,c,d,e,f):
print(a,b,c,d,e,f)
t1=(1,2,3,4,5,6)
f3(*t1) # 調(diào)用函數(shù)f3時(shí)超全,可以用一個(gè)變量名將多個(gè)數(shù)據(jù)分別傳遞給各個(gè)參數(shù)没酣, 按照變量中的元素順序傳遞給各個(gè)參數(shù)
3.定義時(shí)參數(shù)有2個(gè)星號(hào)的情況 表示收集任意多 對(duì) 鍵值對(duì),在函數(shù)中該參數(shù)類型是 “字典”
def add_info(**i):
print(i,type(i))
add_info(name="張", tel='12345678',email='abc@abc.com')