python函數定義,函數參數


函數定義

def 函數名(參數列表):

  函數體(代碼塊)

函數名就是標識符。

語句塊必須縮進,約定4個空格。

python的函數沒有return語句,隱式會返回一個None值。

定義中的參數列表稱為形式參數,只是一種符號表達,簡稱形參。

調用

  函數定義,只是聲明了一個函數,它不會被執行,需要調用。

  調用的方式,就是函數名加上小括號,括號內寫上參數。

  調用時寫的參數是實際參數。簡稱實參。

 函數參數

  可變參數

  位置參數  def f(x,y,z)  調用使用f(1,3,5);按照參數定義順序傳入實參。

  關鍵字參數  def f(x,y,z) 調用使用f(y=1,x=3,z=5);

  傳參f((1,),z=3,y=5);f(x=None,z=3,y=5);

  位置參數必須在關鍵字參數之前傳入

def add(x,y):
    r=x+y
    return r
print(add(3,4))  

函數參數默認值

  定義時,在形參后跟上一個值

def add(x=5,y=4):
    r=x+y
    return r
print(add())

 

def add(x=5,y=4):
    r=x+y
    return r
print(add(6,6))

 

def add(x=5,y=4):
    r=x+y
    return r
print(add(6))
def add(x,y=4):
    r=x+y
    return r
print(add(7))
print(add(x=2)) 

可變參數

  一個形參可以匹配任意個參數 *;可變位置參數;

def add(*a):
sum=0
print(type(a)) #tuple
for x in a:
sum+=x
print(sum)
add(1)
add()
add(1,2,3)

關鍵字參數的可變參數 **;可變關鍵字參數

def ss(**a):
print(type(a))#dict
for x,y in a.items():
print('{}={}'.format(x,y))
ss(z=3,m=4)

  

#非可變參數;  

def add(a):#傳入一個參數,該參數是可迭代對象
    sum=0
    for x in a:
        sum+=x
    return sum
print(add([1,3,5]))
print(add((1,2,4)))

 

def add(a):
    sum=0
    print(type(a))
    for x in a:
        sum+=x
    print(sum)
add([1,2,3])#調用#list
add((1,2,3))#調用#tuple

混合使用參數;

def xixi(a,*b,**c):
    print(a)
    print(b)
    for x,y in c.items():
        print("{},{}".format(x,y))
xixi("ab")
xixi("ab","mn","xx",i=3,u=3)
#xixi("ab","mn","xx",i=3,u=3,i=4) #SyntaxError: keyword argument repeated
xixi(a=3,b=3)
#xixi(3,b=3,a=5)#xixi() got multiple values for argument 'a'
def ff(*a,x,y,**m):
    print(a)
    print(x,y)
    for xx,yy in m.items():
        print(xx,yy)
ff(77,88,x=3,y=5,)
ff(x=3,y=5,)
ff(x=3,y=5,m=4) 

keyword-only參數

   如果在一個*參數后,或者一個位置可變參數后,出現的普通參數,實際上已經不是位置參數了,而是keyword-only參數;

def ff(*a,x):

def ff(**a,x):#無效語法;keyword-only屬於keyword;

def fn(*,x,y):#x,y是keyword-only參數
    print(x,y)
fn(x=3,y=4)
#fn(3,x=3,y=4)#報錯
def fn(a,*,x,y):#x,y是keyword-only參數
    print(x,y)
fn(3,x=1,y=4)
def fn(*a,x=3):
    print(a)
    print(x)
fn(4)
fn()
fn(1,2,3,x=7)

 參數規則:一般順序是普通參數、缺省參數、可變位置參數、keyword-only參數(可帶缺省值)、可變關鍵字參數;

def fn(y,*a,x=3):
    print(y,a,x)
#fn()#報錯
fn(5)
#fn(x=6)#報錯
#fn(1,x=4,4,5)#SyntaxError: positional argument follows keyword argument
fn(1,3,2,x=7)
#fn(1,3,y=2,x=7)#got multiple values for argument 'y'
#fn(1,3,z=2,x=7)#got an unexpected keyword argument 'z'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM