在函数中的每个后续步骤之后都需要执行一个检查,因此我想将该步骤定义为函数中的函数。
>>> def gs(a,b):
... def ry():
... if a==b:
... return a
...
... ry()
...
... a += 1
... ry()
...
... b*=2
... ry()
...
>>> gs(1,2) # should return 2
>>> gs(1,1) # should return 1
>>> gs(5,3) # should return 6
>>> gs(2,3) # should return 3
那我怎么才能让GS从RY里返回“A”?我想用super,但我觉得那只是为了上课。
谢谢
有点混乱…我只想返回a if a==b.if a!=b,那么我不想gs还任何东西。
编辑:我现在认为decorators可能是最好的解决方案。
最佳答案
这将允许您继续检查状态,如果a和b最终相同,则从外部函数返回:
def gs(a,b):
class SameEvent(Exception):
pass
def ry():
if a==b:
raise SameEvent(a)
try:
# Do stuff here, and call ry whenever you want to return if they are the same.
ry()
# It will now return 3.
a = b = 3
ry()
except SameEvent as e:
return e.args[0]