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'
越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/13302300.html