我的代码顶部有这样的东西:
HttpErrorResponse
我得到了这个:
this._transactionResponse
在声明默认变量后,是否必须定义我的函数?这只发生在代码的底部,所以我认为它看起来有点不美观。有办法解决这个问题吗?
答案 0 :(得分:1)
你不能做你要求的,但你可以做类似的事情。将默认值设置为某个其他 sentinel值,然后在函数中添加一个检查。 None
通常是一个不错的选择。
def fun_func(x=None):
if x is None:
x = something
print(x+x)
# lots of lines of code ...
something = 21
fun_func()
这样,something
的评估会推迟到实际调用fun_func()
。
如果None
实际上是x
的合法值,那么您可能更喜欢这种稍微复杂的方法:
_sentinel = object()
def fun_func(x=_sentinel):
if x is _sentinel:
x = something
print(x+x)
答案 1 :(得分:0)
不(至少不是没有过分“聪明”);问题是“x = something”的行,在达到函数声明时(换句话说,在“编译时”)进行评估。只要在调用 fun_func()之前定义“某事”,说“某事+某事”的行就不是问题。