我想让我的代码看起来更好 例如:
result = somefunction()
if result == what_i_need:
do_something()
else:
print 'that\'s not what i need', result
我正在尝试做这样的事情:
if somefunction() == what_i_need:
do_something()
else:
print 'that\'s not what i need', <return value of somefunction>
这可能吗?
答案 0 :(得分:4)
这是你可以在技术上尝试的东西,但不应该:
def somefunction():
val = 3 # calculate value
globals()['somefunction_return'] = val # store it in globals() first
return val # return as normal
def do_something():
print 'got it'
what_i_need = 3
if somefunction() == what_i_need:
do_something()
print 'that\'s not what i need', somefunction_return
# result:
#
# got it
# that's not what i need 3
你为什么不这样做?
globals()
混淆比你已经做过的简单任务更脆弱,部分原因是开发人员更难以避免绊倒它。somefunction
除了计划的目的之外还在做一些事情,而不会做广告。这使得代码更难维护。if
结构。他们怎么知道somefunction_return
来自哪里?他们必须查看每行代码,直到他们在somefunction
中发现了令人讨厌的副作用。我们甚至可能将其命名为其他内容,例如my_foobar_value
,然后读者甚至不会提示他们应该检查somefunction
。请继续使用您已有的普通作业。
答案 1 :(得分:2)
不,在Python中捕获函数返回值的唯一合理方法是将其显式赋值给变量。
即使有一个设备通过隐式方式引用前一个函数的返回值,Python文化也会厌恶这种事情。一个经常被引用的Python原则是“显式优于隐式”。