- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
*args
和 **kwargs
是什么意思?
def foo(x, y, *args):
def bar(x, y, **kwargs):
最佳答案
*args
和 **kwargs
是一个常见的惯用语,允许任意数量的函数参数,如 more on defining functions 部分所述。在 Python 文档中。
*args
将为您提供所有函数参数 as a tuple :
def foo(*args):
for a in args:
print(a)
foo(1)
# 1
foo(1,2,3)
# 1
# 2
# 3
**kwargs
会给你所有关键字参数,除了那些对应于作为字典的形式参数的参数。
def bar(**kwargs):
for a in kwargs:
print(a, kwargs[a])
bar(name='one', age=27)
# name one
# age 27
这两个习语都可以与普通参数混合使用,以允许一组固定参数和一些可变参数:
def foo(kind, *args, **kwargs):
pass
也可以反过来使用:
def foo(a, b, c):
print(a, b, c)
obj = {'b':10, 'c':'lee'}
foo(100,**obj)
# 100 10 lee
*l
习语的另一种用法是在调用函数时解压参数列表。
def foo(bar, lee):
print(bar, lee)
l = [1,2]
foo(*l)
# 1 2
在 Python 3 中,可以在赋值 (Extended Iterable Unpacking) 的左侧使用 *l
,尽管在这种情况下它给出的是列表而不是元组:
first, *rest = [1,2,3,4]
first, *l, last = [1,2,3,4]
Python 3 还增加了新的语义(引用 PEP 3102 ):
def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
pass
例如,以下内容适用于 python 3 但不适用于 python 2:
>>> x = [1, 2]
>>> [*x]
[1, 2]
>>> [*x, 3, 4]
[1, 2, 3, 4]
>>> x = {1:1, 2:2}
>>> x
{1: 1, 2: 2}
>>> {**x, 3:3, 4:4}
{1: 1, 2: 2, 3: 3, 4: 4}
此类函数只接受 3 个位置参数,*
之后的所有内容都只能作为关键字参数传递。
dict
,语义上用于关键字参数传递,是任意排序的。但是,在 Python 3.6 中,关键字参数保证记住插入顺序。**kwargs
中元素的顺序现在对应于关键字参数传递给函数的顺序。” - What’s New In Python 3.6 关于python - **(双星/星号)和 *(星号/星号)对参数有何作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55152924/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!