python - 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...
解决方案
不,你不能
的全部目的*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)
推荐阅读
- python - 使用 Python 格式化日期(例如 2020 年 1 月 2 日)
- python - 在烧瓶中仅加载一次预训练模型
- python-3.x - 熊猫 groupby / 应用修改列
- azure-pipelines - 如何在 Azure Pipelines 中重置计数器变量?
- ios - VS 代码调试不适用于模拟的 IOS 设备
- javascript - 通过 dropzone.js 传递索引和调用函数
- amazon-dynamodb - 从自定义 Lambda 引用 Amplify 的 @model DynamoDB 表
- python - BAT:如何运行 Python 脚本并在 1 小时后重新启动进程
- ruby-on-rails - 如何在 Rails 中创建记录时拍摄关联数据的快照?
- c# - 为什么我在课堂上的方法没有返回任何值?