python里的函数是什么意思_Python函数中*和**的内涵究竟是什么呢?

这个问题基本弄清楚了,星号(asterisk)主要在函数定义和函数调用的时候使用。函数定义时使用单个*会将所有的参数,放入一个元组(tuple)供函数使用。

使用两个 **会将所有的关键字参数,放入一个字典(dict)供函数使用。

函数调用时在list,tuple,set前加一个星号会把容器中的所有元素解包(unpack)变成位置参数。

在dict前加一个星号会把字典的键变成位置参数。

在dict前加两个星号会把字典的键值对变成关键字参数。

a={'a':'Ass','b':'We','c':'Can'}

具体到描述中的函数:

Aniki(*a)

等同于Aniki("a", "b", "c")

Aniki(**a)

等同于 Aniki(a="Ass", b="We", c="Can")

Aniki(**a,b=(1,2))

等同于 Aniki(a="Ass", b="We", c="Can",b=(1,2))

希望说清楚了。

Python3中新增的两种用法:Keyword-Only Arguments 仅关键字参数

Extended Iterable Unpacking 扩展迭代解包

仅关键字参数

在*args后加入关键字参数,就可以要求这个参数必须以关键字的方式赋值。

def keyword_only(a, *args, b):

print[a, args, b]

在调用的时候,必须用关键字的方式赋值。单个星号*也有相同作用,只不过不能接收无限位置参数了。

def keyword_only(a, *, b):

print[a, args, b]

扩展迭代解包

许多算法要求以第一个元素 和 剩下的全部 这种方式分割一个序列。即

first, rest = seq[0], seq[1:]

现在可以这样:

first, *rest = seq

或者这样:

a, *b, c = seq

a取得第一个元素,c取得最后一个元素,b取得剩下的全部。

PEP文档:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值