【问题标题】:Ignore passed arguments忽略传递的参数
【发布时间】:2015-06-01 20:18:36
【问题描述】:

是否可以在方法中忽略传递/过度给定的参数?

这是我想做的事情的一个例子:

def event_handler(one, two):
   print(one)
   print(two)

在另一个地方:

event_handler(one, two, three)

我的意思是第三个参数是可选的。我已经在 Python Fiddle 中尝试过,但它无法正常工作。

【问题讨论】:

    标签: python methods arguments


    【解决方案1】:

    将第三个设为默认参数

    def event_handler(one, two, third = None):
    

    然后进行错误处理,但由于它是默认的,这很容易。

    def event_handler(one, two, third = None):
       print(one)
       print(two)
       if (three):
            print(three)
    

    【讨论】:

    • 是的,但是是否可以在不为参数设置默认值的情况下采用它?
    • AFAIK。您需要添加一个默认值。
    • 好的,感谢您回答如此愚蠢的问题。 ^^
    • 查找*args**kwargs。他们可能对你有帮助
    • 显式设置默认值有什么问题? *args 和 **kwargs 如果您要覆盖您不知道确切签名的现有方法,则更好
    【解决方案2】:

    *args 中使用可变参数。

    def f(*args): pass
    

    args[0] 之类的列表访问变量,... 或者,

    def f(required_arg1, required_arg2, *optional_args): pass
    

    【讨论】:

    • 这个问题是它掩盖了参数定义......在这种情况下使用默认参数要好得多恕我直言......
    猜你喜欢
    • 2020-03-15
    • 2019-02-01
    • 2013-09-25
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2019-07-07
    相关资源
    最近更新 更多