Python3中的函数参数

普通函数:(只含有位置参数)

def person(name, age):
    print(name, age)


person('Jack', 20)
#输出: Jack 20

person(age=20, name='Jack')
#输出: Jack 20

参数必须是2个,且必须按照顺序。如果以表达式形式传入,可以不按顺序。

======================================分割线======================================

含有默认参数的函数:

def person(name, age=20):
    print(name, age)


person('Jack')
#输出: Jack 20
person('Jack', 30)
#输出: Jack 30
person(age=30, name='Jack')
#输出: Jack 30

======================================分割线======================================

含有可变参数的函数:(可变参数将被打包成tuple形式)

def person(name, age=20, *other):
    print(name, age, other)


person('Jack')
#输出: Jack 20 ()
person('Jack', 30)
#输出: Jack 30 ()
person('Jack', 'what')
#输出: Jack what ()
person('Jack', 30, 'what','up')
#输出: Jack 30 ('what', 'up')
person('Jack', age=30, 'what','up')
#输出: SyntaxError: positional argument follows keyword argument
person(name='Jack', 30, 'what','up')
#输出: SyntaxError: positional argument follows keyword argument
person(name='Jack', age=30, 'what','up')
#输出: SyntaxError: positional argument follows keyword argument

错误提示:位置参数在键值对之后。也就是说,键值对后不能再有位置参数。

======================================分割线======================================

含有可变键值对参数的函数:(可变参数将被打包成dict形式)

def person(name, age=20, **other):
    print(name, age, other)


person('Jack')
#输出: Jack 20 {}
person('Jack', 30)
#输出: Jack 30 {}
person('Jack', 'what')
#输出: Jack what {}
person('Jack', 30, gender='Male', married='No')
#输出: Jack 30 {'gender': 'Male', 'married': 'No'}
person('Jack', age=30, gender='Male', married='No')
#输出: Jack 30 {'gender': 'Male', 'married': 'No'}
person(name='Jack', 30, gender='Male', married='No')
#输出: SyntaxError: positional argument follows keyword argument
person(name='Jack',age=30, gender='Male', married='No')
#输出: Jack 30 {'gender': 'Male', 'married': 'No'}
person(age=30, name='Jack', gender='Male', married='No')
#输出: Jack 30 {'gender': 'Male', 'married': 'No'}

错误提示:位置参数在键值对之后。也就是说,键值对后不能再有位置参数。

======================================分割线======================================

含有命名关键字的函数:(函数只接收且必须接收星号后面的命名关键字,起到保护过滤作用)

def person(name, age=20, *, qq):
    print(name, age, qq)


person('Jack')
#输出 TypeError: person() missing 1 required keyword-only argument: 'qq'
person('Jack', qq='123456789')
#输出 Jack 20 123456789
person(name='Jack', qq='123456789')
#输出 Jack 20 123456789

功能:只能传入且一定要传入对应的关键字。

目的:为了进一步保护传入到函数中的变量。

注:如果命名关键字在可变参数后,则无需单独的*来分开了。

def person(name, age=20, *other, qq):
    print(name, age, other, qq)

person('Jack','lot','what','up',qq=12345)
#输出: Jack lot ('what', 'up') 12345


======================================分割线======================================

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值