python傳入引數的問題python的引數傳遞問題!!!

2021-05-29 10:33:17 字數 2729 閱讀 3842

1樓:匿名使用者

python在定義函式的時候,存在兩種特殊定義,*和**的傳值方式,正是因為這兩種定義,python 函式的傳值,非常靈活,在cpp程式設計的時候,不支援方法過載,因為沒必要了。。。

在引數前面加個*號,表明這個函式會將這個變數代表的內容,轉換為一個元祖,所以函式可以接收n個元素,這n個元素在函式裡面轉成一個元祖。比如這種

def fun1(*a):  #定義

print(a)  #1輸出

print(*a)  #2輸出

x = [1,2,3]

fun1(x)  #1呼叫

fun1(*x)  #2呼叫

fun(1,2,3)  #3呼叫

因為fun1定義的時候,告訴函式,x可以接受n個物件,這個物件在函式裡面會轉成一個元祖儲存,所以在1呼叫的時候,x在fun1函式裡面會被當成一個元祖,但我們知道,x其實是一個元祖,1呼叫的時候,就傳了一個物件進去。所以,結果如下

([1,2,3],)   #1輸出

[1,2,3]     #2輸出

為啥?1輸出,清楚無誤的告訴print(print也是函式,也支援*args方式傳值),你直接把a物件列印出來,a物件是啥?一個包含1個物件的元祖,所以就是(x,)這樣的結果。

那2輸出呢?2輸出在呼叫的時候,在a物件前面已經拆解了元祖,所以,傳給print函式的,是一個物件,就是x了。

同理,在2呼叫的時候,因為x物件被拆開,所以,func1被傳入多個值,此時的a是一個元素和x相同的元祖。所以2呼叫的1輸出,就是一個值,就是(1,2,3)。2輸出,因為被拆解了再傳給print,所以,print其實被傳入了多個值,然後將這些值全部列印出來,所以結果是1,2,3.

那3呼叫呢?其實本質和2呼叫是一樣的

那雙星號呢?雙星號是拆解key-val格式對的內容,在函式定義的時候,是預設講傳入的產生轉為字典。而規律和上面說的單星號一致。

如果用單星號去拆解key-val物件,只會拆解出key。後面的就不多說了。

為啥單引號拆解key-val物件,可以拆出key呢。。。源**就這麼執行的,為啥當初設計,理由是啥。。。不清楚。。

2樓:匿名使用者

你前面有個*,傳入的是一個tuple不是一個dict

>>> def test(*args):

print(args)

>>> test(*)

('a', 'b')

>>> test()(,)

python的引數傳遞問題!!!

3樓:匿名使用者

樓主的理解沒有抄問題啊 .

python中函式的實參傳遞規則是:

標註了引數名的就要按引數名傳遞,打亂順序的情況下一定要加引數名,否則會混亂的。

沒有預設的實參情況下就會依次傳遞,如果不夠的話,後面的會自動去取自己的預設值。

如果實參的數量比形參要多的話,就要用到帶*號的引數名了。

4樓:

如果是bai只傳遞a和d的話du ?

這一點你無法做到……

zhi所以你的推測dao是錯誤的。專預設形參只會從屬左到右依次賦值。 省略的引數只能是從右到左比如:你可以

fun(a)

fun(a, b)

fun(a, b ,c)

fun(a,b,c,d)

但是你不能做到 fun(a, c = ? ,d =? )這樣在語法就是錯誤的……

關於python函式作為引數傳入的問題

5樓:匿名使用者

def mul(x):

return x*x

def my_map(func, args):

for n in args:

print(func(n))

my_map(mul, [1,2,3,4])

python中函式引數傳遞問題

6樓:匿名使用者

對於可變引數預設是引用傳值, 但是不能去修改它的指向, 一旦修改就是按版

值傳遞.

# coding=utf-8

def f(a):

a = [0]

print(a)

if __name__ == '__main__':

a = [1, 2, 3]

f(a)

print(a)

上面的**對a重新賦值權, 試圖改變a的指向, 那麼這時的a就是一個新的區域性變數, 而非全域性變數a

python中兩個函式間引數傳遞問題

7樓:匿名使用者

def plus(a,b):

z = a + 1

c = b + 5

return (z,c)

(q,w) = plus(1,2)

plud(q,w)

##我這裡假設a=1,b=2

##首先plus(1,2),得到z=2,c=7,通過return 讓(q,w)=(z,c)的值,然後plud(q,w)即可實現將z,c的值傳遞給下一個函式

8樓:匿名使用者

def plus(a,b):

z=a+1

c=b+5

print a+b

return c,z

c,z=plus(a,b)

def plud(c,z):

print c+z

python如何呼叫 py檔案的函式

python 如何在某.py檔案bai中呼叫其他.py內的du函式 假設名為zhia.py的檔案需dao python如何呼叫另一個py檔案的所有函式 在同一個資料夾下 呼叫函式 a.py檔案 b.py檔案 或呼叫類 a.py檔案 b.py檔案 或在不同資料夾下 a.py檔案的檔案路徑 e pyth...

求python的學習計劃本人打算自學python沒

以前du自學 zhipython的時候寫的博dao客,專僅供參考 屬 以下是老男孩教育python全棧課程內容 階段一 python開發基礎 有近一年的時間學習,每天花兩到三小時學習python,該怎麼安排 30 要有老師帶,自己學習很容易就達到瓶頸。半年能學很多。但是自已摸索程度有限。建議你專門鑽...

python問題,python中的,問題?

反轉一個list,返回一個迭代器 iterator 如 range 10 0,1,2,3,4,5,6,7,8,9 reversed range 10 x for x in reversed range 10 9,8,7,6,5,4,3,2,1,0 還可以這樣完成反轉 range 10 1 9,8,7...