Python 函式中各種引數的使用

2021-09-26 01:54:06 字數 2973 閱讀 1919

真的是不想寫啊,雖然腦袋裡都知道  但是就是不想動手啊,痛苦啊~~~~

正題:位置引數:比如你去電影院看電影,根據票號,找到自己的位置,都是一一對應的關係

形參:變數只有在被呼叫時才分配記憶體單元,一旦呼叫結束,該分配的記憶體單元將被釋放**,並且形參只有在該定義的函式內部有效,只要不在該函式中,則無效,不可使用

實參:可以是常量、變數、表示式、函式等,無論實參是何種型別的量,在進行函式呼叫時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使引數獲得確定值

def parm(x,y):

'''輸出x,y值'''

print("x的值為%s,y的值為%s" %(x,y))

parm(3,4)

#這裡x,y就是形參,3,4就是實參

預設引數:可以理解成初始值

def parm(x,y,z=1):

'''輸出x,y,z值'''

print("x的值為%s,y的值為%s,z的值為%s" %(x,y,z))

parm(3,4)

#輸出結果為:x的值為3,y的值為4,z的值為1

parm(3,4,5)

#輸出結果為:x的值為3,y的值為4,z的值為5

備註:預設引數的位置一定要在最後,比如def parm(x,z=1,y)這樣不對:報錯:syntaxerror: non-default argument follows default argument,後面會說到位置引數,就會明白了

關鍵引數:上面說的都要應該的按照位置傳對應的實參,講究順序,此方式為 key-value方式,不講究位置對應順序

def parm(x,y,z):

'''輸出x,y,z值'''

print("x的值為%s,y的值為%s,z的值為%s" %(x,y,z))

parm(z=1,y=3,x=4)

#輸出結果為:x的值為4,y的值為3,z的值為1

關鍵引數+位置引數:關鍵引數必須放在位置引數之後

def parm(x,y,z):

'''輸出x,y,z值'''

print("x的值為%s,y的值為%s,z的值為%s" %(x,y,z))

parm(z=1,y=3,5)

#輸出結果為:x的值為4,y的值為3,z的值為1

備註:報錯:syntaxerror: positional argument follows keyword argument,上面這種方式,執行時會認為,z=1,y=3,z=5,因為5在z對應的形參位置上,所以也會把5傳給z,這樣就不行了,所以位置引數一定要放在最前面非固定引數:用在不確定要輸入多少引數時,主要有*args 和**kwargs

*args :會將接受到的多個引數變成乙個元組的形式,傳入時,只需要輸入value的格式就可以

*kwargs :會把接受到的多個引數變成乙個dict形式,傳入時,需要用key-value的方式傳入

def parm(x,y,*args,**kwargs):

'''輸出x,y,*args,**kwargs值'''

print('x的值為:',x)

print('y的值為:',y)

print('*args的值為:',args)

print('**kwargs的值為:',kwargs)

parm(1,2,'args1','args2','args3',parm1=11,parm12=22,parm3=33)

#輸出結果為:

'''x的值為: 1

y的值為: 2

*args的值為: ('args1', 'args2', 'args3')

**kwargs的值為:

'''

備註:突然想到把*args放在**kwargs後面行不行,來試試~。。。。報錯了~~

函式作為引數:函式本質就是變數,既然是變數就可以作為引數,即函式作為另外乙個函式的引數

(1)

def par_b():

'''輸出返回值'''

print("par_b函式返回值")

def functest(x,func,*args):

'''輸出func,*args值'''

func()

print(args)

print(func)

functest(1,par_b,'args1','args2')

'''par_b函式返回值

('args1', 'args2')

'''#備註:par_b作為引數傳入,此時par_b為無引數的函式,如果有引數該怎麼操作?

(2)

先看源**:

def par_b(a):

'''列印傳入的引數值a '''

print("par_b函式返回值",a)

def functest(x,y,func,*args):

'''傳入的x引數值作為變數函式func的引數'''

print("x的值為:",x)

func(x)

functest(1,2,par_b,'args1','args2')

'''x的值為: 1

par_b函式返回值 1

'''

備註:是不是感覺很棒,其實還是那句話,函式即變數~~~

python中的enumerate 函式使用方法

結合例項來理解比較好,網上找了一下這個enumerate用法,自己也記錄一下加深印象 舉例說明 具體例子 列印輸出索引與value值 列表1 print 列表1 product mac pro iphone iwatch for index,item in enumerate product pri...

Python函式引數中的 ,

問題 python的函式定義中有兩種特殊的情況,即出現 的形式。如 def execute command self,args,options 等。解釋 用來傳遞任意個無名字引數,這些引數會乙個tuple的形式訪問。用來處理傳遞任意個有名字的引數,這些引數用dict來訪問。應用 的應用 def fu...

Python中的函式引數

python中的引數由於沒有特定的指示方式,所以傳遞引數時也可將其他函式作為引數傳入。傳遞格式 def fun name x,y,z 其中x,y,z都可作為其他函式的名稱 示例 def fun x,y,f return f x f y print fun 10,34,abs 結果 2.1 map函式...