日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

10 函数的参数

發布時間:2025/3/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10 函数的参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數的參數

?

實參:調用函數,在括號內傳入的實際值,值可以為常量、變量、表達式或三者的組合-------傳值

形參:定義函數,在括號內聲明的變量名,用來接受外界傳來的值--------接收值

    形參隨著函數的調用而產生,隨著調用結束而銷毀

?

實參

為形參傳值;兩種類型都存在:位置實參在前,關鍵字實參在后

分為兩類:

? 位置實參:不用明確形參名的傳參方式,按照位置給形參傳值??????一一對應
關鍵字實參:必須明確形參名字與值為形參傳值,可以不用按照位置?? 按名取值

注:混用
1.關鍵字實參必須出現在位置實參后
2.多個位置實參還是按照位置傳參
3.關鍵字實參為沒有從位置實參拿到值的形參傳值,可以不用按照指定順序

def fn2(a, b, c, d, e, f):print(a, b, c, d, e, f)fn2(10, 20, 30, e=100, f=500, d=200) #10, 20, 30位置實參,e=100, f=500, d=200關鍵字實參 》》》10 20 30 200 100 500

形參與實參:

# ***** 在函數定義()中出現的參數:形參 # ***** 形參就是拷貝實參的值,隨著函數的調用才產生,隨著函數調用結束而銷毀 def fn(a, b, c):# a,b,c必須要從外界獲取值,采用意義print(a)print(b)print(c)# 外部提前產生了的變量,內部可以使用print(x)print(y)print(z)# x,y,z是實際存在的值 x = 10 y = 20 z = 30 # ***** 在函數調用()中出現的參數(外界實際存在的值):實參 # fn(10, 20, 30) #fn(x, y, z) 執行結果: 10 20 30 10 20 30 fn(x + 10, y * 2, z / 5) 執行結果: 20 40 6.0 10 20 30 # ***** 調用函數,實參可以由 常量、變量、表達式或三種的組合# 在函數的外部不能直接使用函數的形參,原因:函數調用完畢后,形參被銷毀了 # print(a) # print(b) # print(c) 執行結果: NameError: name 'a' is not defined

實參的混用

def fn1(a, b, c):print(a, b, c)#兩者混用: 關鍵字實參 必須出現在位置實參之后 fn1(10, c=20, a=30) # 10按位置傳參給a,a=30給a傳參,c可以拿到20,但b沒人傳參 TypeError:fn1() got multiple values for argument 'a' a被多次傳值# 合法傳參 ***** fn1(10, c=30, b=20) fn1(10, b=30, c=20)def fn2(a, b, c, d, e, f):print(a, b, c, d, e, f)fn2(10, 20, 30, e=100, f=500, d=200)
執行結果:
10
20
30
200
100
500

形參

分為六類:

  ?? ?? ?位置形參:位置實參與關鍵字實參都可以對其傳參

  ? ??? ?默認形參:位置實參與關鍵字實參都可以對其傳參,也可以不被傳參

  ? 可變長位置形參:接收位置形參、默認形參沒有接收完的所有位置實參

  有初值關鍵字形參:只能由關鍵字實參傳值,也可以不被傳值

  無初值關鍵字形參:只能由關鍵字實參傳值

  可變長關鍵字形參:接收兩種關鍵字形參沒有接收完的所有關鍵字實參

  

def fn(a, b, c=10, *args, d, e=20, f, **kwargs):pass # 位置形參:a、b # 默認形參:c # 可變長位置形參:args # 無初值關鍵字形參:d、f # 有初值關鍵字形參:e # 可變長關鍵字參數:kwargs

1、位置形參positional argument

def fn(a, b, c):print(a, b, c)# 位置形參可以由 位置實參 與 關鍵字實參 來傳值 fn(10, 20, 30) fn(a=10, b=20, c=30)

2、默認形參

# 默認形參具有默認值,用=進行復制 def fn(a=10,b=20):print(a, b)# 默認形參可以由 位置實參 與 關鍵字實參 來傳值,還可以不用傳值(采用自身默認值) fn(20, 30) #20,30 fn(a=200, b=300) #200,300 fn(100) #100,20 傳值給a fn(b=100) #10,100傳值給b# 位置形參與默認形參同時存在,默認形參必須在后 def fn1(a,b,c=10,d=20):print(a, b, c, d)# 位置形參必須傳值,默認形參分情況傳值 fn1(100, 200, d=1000) #100,200,10,1000

3、可變長位置形參

# 可變長形參只能由 位置實參 來傳值 def fn(a, b=10, *args):print(a, b)print(args)# 可變長形參會以元組形式接受 位置形參與默認形參未接受完的 所有傳入的位置實參# 小細節:可變長形參只能接受位置實參的值,位置實參還必須在關鍵字實參前, # 導致默認形參只能由位置實參來傳值 fn(1, 20, 100, 200) 執行結果: 1 20 (100, 200)fn(100) 執行結果: 100 10 ()

  可變長位置形參的整體賦值

def fn(*args):print(args)fn(1, 2, 3, 4, 5) # (1, 2, 3, 4, 5) a = 'ab' b = [1, 2] c = (1, 2) d = {1, 2} fn(a) # ('ab', ) fn(b) # ([1, 2], ) fn(c) # ((1, 2), ) fn(d) # ({1, 2}, )# 問:就拿a,b,c,d進行傳值,如何得到 ('a', 'b') (1, 2) # *單列集合(保護字符串)將該變量進行 打散 傳值 (本質傳遞的是地址) fn(*a) fn(*b) fn(*c) fn(*d)# 打散 def fn1(*args):print(args) ls = [1, 2, 3, 4, 5] fn1(ls) # (ls, )===>([1, 2, 3, 4, 5],) fn1(*ls) # 將ls打散為1,2,3,4,5再進行傳值=>(1,2,3,4,5)

4、關鍵字形參

?? "*"為分割線,可以有變量名 *args, 也可以只用來做分隔

# 前提:出現在 * 之后的形參 def fn(a, b=10, *, c, d=20, e):pass # c,d,e都是出現在*之后,都是關鍵字形參,由于必須由 關鍵字實參 來傳值,沒有順序的強行要求# 可變長關鍵字形參:用來接收沒有被關鍵字形參接收完的關鍵字形參,也只能由關鍵字實參來傳值 # 用字典來存放數據 def fn(**kwargs):print(kwargs) fn(a=10,b=20) # {'a': 10, 'b': 20} dic = {'x': 100, 'y': 200} fn(**dic) # {'x': 100, 'y': 200}

?

a:位置 b:默認 c,e:無值關鍵字形參 d:有值關鍵字形參注: a和b有先后順序 c,d, e無先后順序# *****關鍵字形參必須由 關鍵字實參 來傳值, 出現在*后的都是關鍵字形參 def tt(a, b=10, *, c, d=10, e):print(a, b, c, d, e)# keyword-only arguments def fn(*, a, b=10, c):print(a, b, c) # fn(10, 20, 30) # 錯誤:TypeError: fn() takes 0 positional arguments but 3 were given fn(b=300, c=100, a=200)

5、可變長關鍵字形參

 用來接收沒有被關鍵字形參接收完的關鍵字形參,也只能由關鍵字實參來傳值

用字典來存放數據 def fn(*, a, b=20, c, **kwargs):print(a, b)print(kwargs)fn(d=40, e=50, a=10, c=30)# 整體賦值 dic = {'name': 'Owen', 'age': 18} def fn1(**kwargs):print(kwargs)fn1(**dic)dd = {'k1': [1, 2, 3, 4, 5],'k2': {"name":"Bob"} } fn1(**dd)def fn2(*args):print(args) ll = [1, [1, 2], {"name":"Bob"}] fn2(*ll) # (1, [1, 2], {"name":"Bob"})

參數總結

?

def fn(a, b=10, *args, d, f=20, **kwargs):print(a)print(b)print(args)print(d)print(f)print(kwargs)# 由位置實參傳值: args和kwargs如果都能接收到值: # b必須傳值且只能用位置實參傳值,f可以不用傳值 fn(1,2,3,4,d=5,g=6,k=7) 執行結果: 1 2 (3, 4) 5 20 {'g': 6, 'k': 7}# 全部用關鍵字實參傳值 fn(x=100,y=200,d=300,b=400,a=500) 執行結果: 500 400 () 300 20 {'x': 100, 'y': 200}

1.位置形參與默認形參: 能用 位置實參 關鍵字實參 傳值
2.可變長位置形參:只能 位置實參 傳值

3.所有關鍵字形參:只能 關鍵字實參 傳值

注:各種形參出現的先后
位置形參 - 默認形參 - 可變長位置形參 - 無|有初值關鍵字形參 - 可變長關鍵字參數

轉載于:https://www.cnblogs.com/zhouyongv5/p/10622266.html

總結

以上是生活随笔為你收集整理的10 函数的参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。