首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python,可变长度位置参数后的默认关键字参数

Python,可变长度位置参数后的默认关键字参数
EN

Stack Overflow用户
提问于 2011-05-10 01:09:18
回答 1查看 28.9K关注 0票数 85

我以为在Python2中的函数调用中可以在可变长度的位置参数之后使用命名参数,但是在导入Python类时得到了SyntaxError。我使用下面的"get“方法编写代码,例如:

代码语言:javascript
复制
class Foo(object):
    def __init__(self):
        print "You have created a Foo."

    def get(self, *args, raw=False, vars=None):
        print len(args)
        print raw
        print vars

错误如下所示:

代码语言:javascript
复制
def get(self, *args, raw=False, vars=None):
                     ^
SyntaxError: invalid syntax

我希望能够以多种方式调用该方法:

代码语言:javascript
复制
f = Foo()
f.get(arg1, arg2)
f.get(arg1, raw=True)
f.get(arg1, arg2, raw=True, vars=something)

等。

EN

回答 1

Stack Overflow用户

发布于 2011-05-10 01:14:38

Python的语法不允许在函数和关键字参数中同时使用默认值的变量参数。如果您必须使用关键字参数和任意数量的位置参数,则还需要允许任意数量的关键字参数。

这是为关键字参数提供默认值以及允许任意数量的位置参数的常见模式:

代码语言:javascript
复制
def foo(*args, **kwargs):
   raw = kwargs.pop('raw', False)
   vars = kwargs.pop('vars', None)

如果根本不使用额外的关键字参数,就没有什么可担心的了。这使得函数的自文档化程度有所降低,您可以使用正确编写的文档字符串来弥补这一点。

票数 50
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5940180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档