在函数中的每个后续步骤之后都需要执行一个检查,因此我想将该步骤定义为函数中的函数。

>>> 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]

09-26 10:37