當前位置:首頁 » 編程語言 » python形參實參

python形參實參

發布時間: 2022-06-09 20:08:26

python實參和形參的區別

形參設置可以為數字字元串變數、元組和字典等任意類型數據,元組形參是在變數名前加*,字典形參是在變數名前加**

例如:fun(var),fun(*tuple),fun(*list),fun(**dict)

實參接受也可以是任意類型數據,當接收數據為元組列表或者字典時,同樣是在數據變數前加*和**

例如:fun(x),fun(*seq),fun(*list),fun(**stu_info)

可以使用元組形參和字典形參接收冗餘或意外數據

例如:fun(var,*t_args,**dic_args)

但傳參時,數字和字元串形參必須傳值,元組和字典形參可不傳,原因為元組和字典數據可以是空元組或空字典,此特性正好適應處理冗餘數據

形參參數名若和生產數據中字典鍵名相同加大大提高編程效率和生產效率

例如:有字典dic={'name':'csdn','age':10,'top':1} ,有函數fun(name='name',age=0,top=0),則函數可以方便的獲取字典數據fun(**dic)

② python的參數傳遞問題!!!

樓主的理解沒有問題啊 .
python中函數的實參傳遞規則是:
標注了參數名的就要按參數名傳遞,打亂順序的情況下一定要加參數名,否則會混亂的。
沒有預設的實參情況下就會依次傳遞,如果不夠的話,後面的會自動去取自己的預設值。
如果實參的數量比形參要多的話,就要用到帶*號的參數名了。

③ python怎麼向類中的函數傳遞參數

Python中函數參數的傳遞是通過「賦值」來傳遞的。但這條規則只回答了函數參數傳遞的「戰略問題」,並沒有回答「戰術問題」,也就說沒有回答怎麼賦值的問題。函數參數的使用可以分為兩個方面,一是函數參數如何定義,二是函數在調用時的參數如何解析的。而後者又是由前者決定的。函數參數的定義有四種形式:

1. F(arg1,arg2,...)
2. F(arg2=<value>,arg3=<value>...)
3. F(*arg1)
4. F(**arg1)

第1 種方式是最「傳統」的方式:一個函數可以定義不限個數參數,參數(形式參數)放在跟在函數名後面的小括弧中,各個參數之間以逗號隔開。用這種方式定義的函數在調用的時候也必須在函數名後的小括弧中提供相等個數的值(實際參數),不能多也不能少,而且順序還必須相同。也就是說形參和實參的個數必須一致,而且想給形參1的值必須是實參中的第一位,形參與實參之間是一一對應的關系,即「形參1=實參1 形參2=實參2...」。很明顯這是一種非常不靈活的形式。比如:"def addOn(x,y): return x + y",這里定義的函數addOn,可以用addOn(1,2)的形式調用,意味著形參x將取值1,主將取值2。addOn(1,2,3)和addOn (1)都是錯誤的形式。
第2種方式比第1種方式,在定義的時候已經給各個形參定義了默認值。因此,在調用這種函數時,如果沒有給對應的形式參數傳遞實參,那麼這個形參就將使用默認值。比如:「def addOn(x=3,y=5): return x + y」,那麼addOn(6,5)的調用形式表示形參x取值6,y取值5。此外,addOn(7)這個形式也是可以的,表示形參x取值7,y取默認值5。這時候會出現一個問題,如果想讓x取默認值,用實參給y賦值怎麼辦?前面兩種調用形式明顯就不行了,這時就要用到Python中函數調用方法的另一大絕招 ──關健字賦值法。可以用addOn(y=6),這時表示x取默認值3,而y取值6。這種方式通過指定形式參數可以實現可以對形式參數進行「精確攻擊」,一個副帶的功能是可以不必遵守形式參數的前後順序,比如:addOn(y=4,x=6),這也是可以的。這種通過形式參數進行定點賦值的方式對於用第1種方式定義的函數也是適用的。
上面兩種方式定義的形式參數的個數都是固定的,比如定義函數的時候如果定義了5個形參,那麼在調用的時候最多也只能給它傳遞5個實參。但是在實際編程中並不能總是確定一個函數會有多少個參數。第3種方式就是用來應對這種情況的。它以一個*加上形參名的方式表示,這個函數實際參數是不一定的,可以是零個,也可以是N個。不管是多少個,在函數內部都被存放在以形參名為標識符的tuple中。比如:

對這個函數的調用addOn() addOn(2) addOn(3,4,5,6)等等都是可以的。

與第3種方式類似,形參名前面加了兩個*表示,參數在函數內部將被存放在以形式名為標識符的dictionary中。這時候調用函數必須採用key1=value1、key2=value2...的形式。比如:

1. def addOn(**arg):
2. sum = 0
3. if len(arg) == 0: return 0
4. else:
5. for x in arg.itervalues():
6. sum += x
7. return sum

那麼對這個函數的調用可以用addOn()或諸如addOn(x=4,y=5,k=6)等的方式調用。

上面說了四種函數形式定義的方式以及他們的調用方式,是分開說的,其實這四種方式可以組合在一起形成復雜多樣的形參定義形式。在定義或調用這種函數時,要遵循以下規則:

1. arg=<value>必須在arg後
2. *arg必須在arg=<value>後
3. **arg必須在*arg後

在函數調用過程中,形參賦值的過程是這樣的:
首先按順序把「arg」這種形式的實參給對應的形參
第二,把「arg=<value>」這種形式的實參賦值給形式
第三,把多出來的「arg」這種形式的實參組成一個tuple給帶一個星號的形參
第四,把多出來的「key=value」這種形式的實參轉為一個dictionary給帶兩個星號的形參。
例子:

1. def test(x,y=5,*a,**b):
2. print x,y,a,b

就這么一個簡單函數,來看看下面對這個函數調用會產生什麼結果:
test(1) ===> 1 5 () {}
test(1,2) ===> 1 2 () {}
test(1,2,3) ===> 1 2 (3,) {}
test(1,2,3,4) ===> 1 2 (3,4)
test(x=1) ===> 1 5 () {}
test(x=1,y=1) ===> 1 1 () {}
test(x=1,y=1,a=1) ===> 1 1 () {'a':1}
test(x=1,y=1,a=1,b=1) ===> 1 1 () {'a':1,'b':1}
test(1,y=1) ===> 1 1 () {}
test(1,2,y=1) ===> 出錯,說y給賦了多個值
test(1,2,3,4,a=1) ===> 1 2 (3,4) {'a':1}
test(1,2,3,4,k=1,t=2,o=3) ===> 1 2 (3,4) {'k':1,'t':2,'o':3}

④ python怎麼查看函數有什麼參數

Python中查看函數參數有四種方式:

1. F(arg1,arg2,…)

這是最常見的定義方式,一個函數可以定義任意個參數,每個參數間用逗號分割,用這種方式定義的函數在調用的的時候也必須在函數名後的小括弧里提供個數相等的值(實際參數),而且順序必須相同,也就是說在這種調用方式中,形參和實參的個數必須一致,而且必須一一對應,也就是說第一個形參對應這第一個實參。例如:

代碼如下:

def a(x,y):print x,y

調用該函數,a(1,2)則x取1,y取2,形參與實參相對應,如果a(1)或者a(1,2,3)則會報錯。

2. F(arg1,arg2=value2,…)

這種方式就是第一種的改進版,提供了默認值,例如:

代碼如下:

def a(x,y=3):print x,y

調用該函數,a(1,2)同樣還是x取1,y取2,但是如果a(1),則不會報錯了,這個時候x還是1,y則為默認的3。上面這倆種方式,還可以更換參數位置,比如a(y=4,x=3)用這種形式也是可以的。

3. F(*arg1)

上面兩種方式是有多少個形參,就傳進去多少個實參,但有時候會不確定有多少個參數,則此時第三種方式就比較有用,它以一個*加上形參名的方式來表示這個函數的實參個數不定,可能為0個也可能為n個。注意一點是,不管有多少個,在函數內部都被存放在以形參名為標識符的元組中。

代碼如下:

def a(*x):print x

>>> a(1,2,3)
(1, 2, 3)
>>> a(x=1,y=2,z=3)
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
TypeError: a() got an unexpected keyword argument 'x'

4. F(**arg1)

形參名前加兩個*表示,參數在函數內部將被存放在以形式名為標識符的dictionary中,這時調用函數的方法則需要採用arg1=value1,arg2=value2這樣的形式。

代碼如下:

def a(**x):print x

>>> a(x=1,y=2,z=3)
{'y': 2, 'x': 1, 'z': 3} #存放在字典中
>>> a(1,2,3) #這種調用則報錯
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
TypeError: a() takes exactly 0 arguments (3 given)

⑤ python中 形式參數和實際參數有什麼區別

在函數聲明時候的參數, def printme( str ),裡面的str就是形參。形式上的參數,作用就是當個佔位符。
在函數實際調用,傳入的實際上的值,比如 printme("hello"),中的「hello」就是實參。實際參數,是具體的值

⑥ python形參和實參之間有什麼區別

形參 是指出現在函數定義中的名稱,而 實參 則是在調用函數時實際傳入的值。 形參定義了一個函數能接受何種類型的實參。 例如,對於以下函數定義:

def func(foo, bar=None, **kwargs):
pass

foo, bar 和 kwargs 是 func 的形參。 但是,在調用 func 時,例如:
func(42, bar=314, extra=somevar)

實際的值 42, 314 和 somevar 則是實參。

⑦ 關於python中幾個函數的用法

函數調用
myFun()

# 函數的參數
# 單個參數
# 場景
# 需要動態的調整函數體中某一個處理信息
# 則可以, 以參數的形式接收到相關數據
# 定義
# def 函數名(參數名稱):
# 函數體
# 函數體中, 可以直接以變數的方式使用該參數
# 函數的調用
# 函數名(參數值)
# 形參和實參的概念
# 上述函數定義中, "參數名稱"即為形參;
# 在調用函數的時候, 傳遞的真實數據, 即為實參
# 多個參數
# 場景
# 需要動態的調整函數體中多個處理信息時
# 則可以以 逗號 做分割, 接收多個參數
# 定義
# def 函數名(參數名稱1, 參數名稱2):
# 函數體
# 函數體中, 可以直接以變數的方式使用所有參數
# 調用
# 方式1
# 函數名(參數1, 參數2, 參數3...)
# 形參和實參一一對應
# 方式2
# 函數名(參數名稱1=參數1, 參數名稱n = 參數n...)
# 可以指明形參名稱
# 稱為"關鍵字參數"
# 不需要嚴格按照順序

# 不定長參數
# 場景
# 如果函數體中, 需要處理的數據, 不確定長度
# 則可以以不定長參數的方式接收數據
# 方式1
# 定義
# def 函數名(*args):
# 元組
# 函數體
# 函數體中, 可以直接以元組變數的方式使用該參數
# 使用
# 函數名(參數1, 參數2, 參數3...)

⑧ 能否用python代碼舉例講解形參和實參的區別

defadd(a,b):
returna+b

if__name__=="__main__"
x=2
y=3
printadd(x,y)

程序如上,在函數定義中的a,b是形參,函數調用中的x,y是實參

⑨ 簡述python函數中參數的幾種形態

在調用函數時,通常會傳遞參數,函數內部的代碼保持不變,針對 不同的參數處理不同的數據。

有位置傳參、關鍵字傳參、默認值參數、多值參數等。

1、參數傳遞

形參和實參:

形參:定義 函數時的 參數變數
實參:調用 函數時,使用的參數變數

參數傳遞的過程,就是 把實參的引用 傳遞給 形參 ,使用實參的值來執行函數體的過程。

在 Python 中,函數的 實參/返回值 都是是靠 引用 來傳遞來的

2、位置實參

按照參數位置,依次傳遞參數,這是最普通的方式。

熱點內容
書本編譯是什麼意思 發布:2025-02-08 04:45:56 瀏覽:951
淘寶密碼賬號在哪裡看 發布:2025-02-08 04:29:39 瀏覽:536
描繪四季的美文寫一份朗讀腳本 發布:2025-02-08 04:29:21 瀏覽:138
金蝶軟體伺服器是電腦嗎 發布:2025-02-08 04:27:06 瀏覽:973
linux如何搭建c編譯環境 發布:2025-02-08 04:24:49 瀏覽:819
ps腳本批量處理切圖 發布:2025-02-08 04:19:03 瀏覽:57
iisftp命令 發布:2025-02-08 04:04:39 瀏覽:455
安卓為什麼軟體老更新 發布:2025-02-08 03:53:40 瀏覽:735
演算法實際應用 發布:2025-02-08 03:53:07 瀏覽:535
c語言加密文本 發布:2025-02-08 03:47:50 瀏覽:681