我正在寻找一种在python中停止函数内部代码某些部分的方法,但是仅当函数的输出分配给变量时才可以。如果该函数在没有任何分配的情况下运行,则应在函数内部全部运行。
类似这样的东西:
def function():
print('a')
return ('a')
function()
A=function()
我第一次呼叫function()
时,它应该在屏幕上显示a
,而第二次呼叫print
时则什么也不应该,只存储返回到A
的值。 / p>
自从我是Python的新手以来,我还没有尝试过任何东西,但我想像是一种if __name__=='__main__':
检查脚本是否被用作模块还是直接运行的方法。
答案 0 :(得分:1)
我认为在python中无法实现这种行为,因为在函数调用的范围内,没有迹象表明您将如何处理返回的值。 您必须为该函数提供一个参数,告诉它使用默认值跳过/停止以简化调用。
def call_and_skip(skip_instructions=False):
if not skip_instructions:
call_stuff_or_not()
call_everytime()
call_and_skip()
# will not skip inside instruction
a_variable = call_and_skip(skip_instructions=True)
# will skip inside instructions
答案 1 :(得分:0)
正如评论中已经提到的那样,您所要求的在技术上是不可能的-函数具有(也不能具有)调用代码将如何处理返回值的任何知识。
对于像您的示例代码段这样的简单情况,显而易见的解决方案是仅从函数内删除print
调用,并将其留给调用方,即:
def fun():
return 'a'
print(fun())
现在,我假设您的实际代码比这要复杂一些,因此这种简单的解决方案将无法工作。在这种情况下,解决方案是将原始函数拆分为许多不同的函数,然后让调用者选择要调用的部分。如果需要在不同部分之间共享复杂状态(局部变量),则可以将整个内容包装到一个类中,将子函数转换为方法并将这些变量存储为实例属性。