PYTHON函式接受的實參不完全

時間 2021-06-28 17:29:17

1樓:有了你就有了心

def make_car(manufacturer, model, **car_info):

car = {}

car['manufacturer'] = manufacturer

car['model'] = model

for key, value in car_info.items():

car[key] = value

return car

car1 = make_car('audi', 'a8l', color='blue', power='1.5t')

print(car1)

這樣寫就好了,原因是你的return沒有提到迴圈外面,在迴圈內的話,每次迴圈一次,而你給的是兩組鍵值對,所以就只會顯示迴圈的第一個鍵值對。

2樓:

你這個return寫錯位置了,不應該寫在迴圈裡面,你這樣只傳一個引數函式就結束了

3樓:汝杉

return car 這條語句放在for迴圈外面就行了

4樓:

def cmp(num): return int(abs(num)) == num while(1): print(cmp(input("num: ")))

python函式實參不是的作用域問題,高手來解釋下下面的輸出?

5樓:

可以先不看f(3,[3,2,1]),這個就是來迷惑人的,光看f(2),f(3),python函式在定義的時候,預設引數l,它指向一個物件[ ],這個物件是和函式同生同死的,每次呼叫該函式,都會預設指向[ ] ,除非傳遞了第二個引數,則改變了l的指向,但是如果前面修改了這個物件,所以也會在後面體現出來,因為他是一個預設指向的物件。所以,定義預設引數要牢記一點:預設引數必須指向不變物件!

6樓:次尋冬

python中函式的引數傳遞問題,函式引數的傳遞往往是一個難以理解的概念,一個經典的例子如下所示:

int swap(int a,int b)

int a = 10,b = 20;

printf("before swap a = %d, b = %d\n",a,b);

swap(a,b);

printf("after swap a= %d,b = %d\n",a,b);

引數是採用值傳遞的形式,存在形參與實參的區別,也就是將實參的值複製給形參,在函式內部操作的都只是形參的內容,並不改變實參的值,所以變數在操作過後並沒有發生改變。

引數傳遞過程中存在兩個規則:

1、通過引用將引數複製到區域性作用域的物件中,意味著被用來訪問函式引數的變數於提高給函式的物件無關,因為存在一個複製問題,這和c語言是相同的。而且修改區域性物件不會改變原始資料。

2、可以在適當位置修改可變物件。可變物件主要就是列表和字典,這個適當位置實質上就是前面分析的區域性子物件的修改不會改變字典物件或者列表物件的id位置。

python 能不能到函式裡才執行實參

7樓:尐二瓜

通過變通的方式是可以實現的,比如把實參封裝成函式。

number = lambda: response.xpath('/html/body').

re('(?<="product_no" value=").*?

(?=")')[0]

在函式中通過回number()呼叫

如果解答決了您的問題請採納!

如果未解決請繼續追問

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

8樓:匿名使用者

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的值傳遞給下一個函式

9樓:匿名使用者

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 如何根據輸入引數呼叫不同的函式

10樓:匿名使用者

使用字典,比如下面這樣:

def funca():

pass

def funcb():

pass

def func_none():

print "cannot find func"

func_dict =

def func(x):

return func_dict.get(x, func_none)()

在有switch的語言中,一般都是使用switch來根據入參進行判斷。但是python中沒有switch,因為根本不需要!!使用字典代替switch,效能更高,而且這種方法的表述能力更強一點。

另外func_dict.get(x, func_none)()中方法是從字典中取出值對應的函式物件,然後後面加上()是執行該物件的__call__方法。因為python中函式就是實現了__call__方法的物件。

所以可以這麼使用。

11樓:笑掉假牙

def fun_a():

print 'a'

def fun_b():

print 'b'

def fun_z():

print 'z'

def test_function(input_key):

function_map =

return function_map[input_key]()**測試

:>>> test_function('a')a>>> test_function('b')b>>> test_function('z')z>>>

或者:def test_function(input_key):

eval("fun_%s()"%input_key)

12樓:重新整理①丅

#python3.x

def func():

c = input("please enter a char:")while(true):

if c == 'a':

func_a()

break;

if c == 'b':

func_b()

break;

func()

python傳入引數的問題

13樓:匿名使用者

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呢。。。源**就這麼執行的,為啥當初設計,理由是啥。。。不清楚。。

14樓:匿名使用者

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

>>> def test(*args):

print(args)

>>> test(*)

('a', 'b')

>>> test()(,)

python函式呼叫的特點,Python 函式定義和呼叫時都加 ,有什麼作用

小妞妞魚 python函式呼叫的特點是。函式的多變性。在python中,引數通過賦值傳遞給了函式 也就是說,就像我們所學過的,使用物件引用 在python中,呼叫者以及函式通過引用共享物件,但是改變傳遞的可變物件可以改變呼叫者共享的那個物件。 東沐霖 python,函式呼叫的特點在於它可以很快地計算...

請用python寫函式,請用python寫一個函式

你好,來這個自 很easy的啊 請看 用python寫一個函式 山野田歩美 引數可以沒有,也可以有內多個,用逗號容隔開,第一行稱為函式頭,結尾一定要加冒號,代表開始進入函式體的執行。語句塊也就是函式體,是關於這個函式要實現的功能的語句,語句要有返回值即return語句,如果沒有return語句,就代...

關於Python中sort函式賦值的問題

python中的sort 方法用於陣列排序,本文以例項形式對此加以詳細說明 一 基本形式 列表有自己的sort方法,其對列表進行原址排序,既然是原址排序,那顯然元組不可能擁有這種方法,因為元組是不可修改的。123x 4,6,2,1,7,9 x.sort print x 1,2,4,6,7,9 如果需...