请考虑简单的功能:
def fun(x, y, param1=10, param2=param1/3):
do something
Run Code Online (Sandbox Code Playgroud)
在哪里param1和param2不应该要求但可以由用户设置.如果param2未设置,则值param1以某种方式依赖于.
以上示例将提出 NameError: name 'param1' is not defined
有没有办法在Python中进行这种赋值?
NPE*_*NPE 12
一种方法是在函数内部模拟:
def fun(x, y, param1=10, param2=None):
if param2 is None:
param2 = param1/3
# do something
Run Code Online (Sandbox Code Playgroud)
如果param2=None是有效输入fun(),则以下可能是更好的选择:
default = object()
def fun(x, y, param1=10, param2=default):
if param2 is default:
param2 = param1 / 3
# do something
Run Code Online (Sandbox Code Playgroud)
(看了几分钟的第二个例子,我其实非常喜欢is default语法.)
原始版本不起作用的原因是在函数定义时计算并绑定默认值.这意味着你不能拥有一个默认值,它取决于在调用函数之前不知道的东西(在你的情况下,是值param1).
| 归档时间: |
|
| 查看次数: |
1406 次 |
| 最近记录: |