繁体   English   中英

具有非关键字参数和关键字参数的函数

[英]A function with non keyword arguments and keyword arguments

如果我声明一个非关键字参数的函数,如元组和关键字参数,如字典,它们是否被声明?

例如:

def someFunc(a, *nkw, **kwa):
    nkwList = []
    kwList  = []
    for i in nkw:
        nkwList.append(i)
    for j in kwa:
        kwList.append(j)
    print a, nkwList, kwList

输入:

someFunc(1)

输出:

1 [] []

正如你所看到的,即使我没有传递一个元组和一个字典,当我循环通过nkw和kwa时,我没有得到Index超出范围的错误。 根据我的理解,我认为* nkw和** kwa是在函数声明中创建的。

任何人都可以帮我理解这个概念吗?

始终创建元组和字典,即使它们是空的(即它们中没有传递任何内容)。

nkwkwa当然是作为emty list / dict传递的。 做其他事情会完全违背他们的目的,因为你永远无法安全地访问它们,你不必总是检查它们是否存在。

你可能会把它与默认参数混淆。 例如:

def someFunc(x=[]):
    pass

这里用作x默认列表是在函数声明时实例化的,因此在函数的所有调用中都是相同的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM