Python:函数的默认值作为函数参数
假设我有以下函数:
def myF(a, b):
return a*b-2*b
假设我希望 b
的默认值为 a-1
。
如果我写:
def myF(a, b=a-1):
return a*b-2*b
我收到错误消息:
NameError: name 'a' is not defined
我可以使用下面的代码:
def myF(a, b):
return a*b-2*b
def myDefaultF(a):
return myF(a, a-1)
让 myF
具有默认值,但我不喜欢它。
如何避免 myDefaultF
并使 myF
为 b
使用默认值 a-1
而不会出现错误?
Suppose I have the function:
def myF(a, b):
return a*b-2*b
and let's say that I want a default value for b
to be a-1
.
If I write:
def myF(a, b=a-1):
return a*b-2*b
I get the error message:
NameError: name 'a' is not defined
I can use the code below:
def myF(a, b):
return a*b-2*b
def myDefaultF(a):
return myF(a, a-1)
to have myF
with default value, but I don't like it.
How can I avoid myDefaultF
and have myF
with default value a-1
for b
without errors?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以执行以下操作:
You can do the following:
如果您需要将
b
的值设为a
的函数,但您可能需要更改该函数,则可以设置b< /code> 为 lambda 函数,然后检查函数块中是否可调用 b 。
这允许您动态地为
b
设置不同的函数。If you need to have the value of
b
be a function ofa
, but you might need that function to change, you can set the default value ofb
to be alambda
function and then check ifb
is callable in the function block.This allows you to set a different function for
b
on the fly as well.您可以使用 try- except 子句:
You can use a try-except clause: