python中定义函数参数的规则_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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值