首页 > 解决方案 > Can I set a default value for an arbitrary argument in python?

问题描述

Can I set a default value for an arbitrary argument in python? If yes, how to do that... I tried:

def printf(age, gender, *fave, name = "veronica"):

    print(name, " ", gender, " ", age, " ")
    print("favefood: ", end = "")
    for i in fave:
        print(i, end = " ")

printf(25, "f", "water", "grass") 

and I got the output as:

veronica   f   25  
favefood: water grass 

now I want to set a default value for *fave, something like

printf(age, gender, *fave = "grass", name = "veronica")

then I received an error message saying "invalid syntax". So I was wondering if I could really do this for an arbitrary argument...

标签: pythonpython-3.x

解决方案


不,你不能

的全部目的*args是让您可以向它发送 0 个参数而不会出错:

def f(*args):
    print(args)
    for arg in args:
        print(arg)

f("foo", "bar", "baz")
print("----------------")
f()
print("----------------")
f("Hello", "World")

输出:

('foo', 'bar', 'baz')
foo
bar
baz
----------------
()
----------------
('Hello', 'World')
Hello
World

你怎么能只使用 if 语句

def f(*args):
    if args == (): args = ("default value")   ## <--- Here
    print(args)
    for arg in args:
        print(arg)

推荐阅读