1樓:匿名使用者
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傳入引數的問題
2樓:匿名使用者
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呢。。。源**就這麼執行的,為啥當初設計,理由是啥。。。不清楚。。
3樓:匿名使用者
你前面有個*,傳入的是一個tuple不是一個dict
>>> def test(*args):
print(args)
>>> test(*)
('a', 'b')
>>> test()(,)
python中兩個函式間引數傳遞問題
4樓:匿名使用者
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的值傳遞給下一個函式
5樓:匿名使用者
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中函式引數傳遞問題
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
python3.3中定義一個函式 用print輸出時 出現錯誤「syntaxerror: invalid syntax」
7樓:匿名使用者
你在console裡面定義函式,return語句後面空一行才算結專束,如下。屬
def hello(name):
return 'hello,'+name+'!'
# 空一行
print hello('word')
關於python小問題關於python一個小問題
print i,end 3.x中print是個函式,它是這樣定義的 def print arg end n 預設以換行符結尾,你賦值的時候給end賦值的什麼就以什麼結束。print i,end 這種 for i in range 4 print what 這樣也不行嗎?print hello,wor...
關於python的菜鳥問題python菜鳥問題
def print all f 定義一個函 數print all,接受一個引數f print f.read 這個函式執行f.read def rewind f 定義一個函式rewind,接受一個引數f f.seek 0 f.seek 0 將f的檔案指標恢復到檔案開頭 def print a line...
關於python小白的問題,python小白的問題
只有float浮點數才可以用int轉換為整數,input得到的是string字串型別,不能直接轉換為int整型,需要先轉換為浮點型再轉換為整型,你的 應該這樣 加粗的是我新增的 我加的那句input是防止輸入正確之後直接退出 temp int float input 請輸入年份確定是否為閏年 whi...