应用装饰器时模块导入失败

时间:2018-07-17 07:31:52

标签: python decorator python-decorators sys

我有一个用作装饰器的模块-修改递归使用的函数。

该模块优化了tail call以避免递归限制-请参见下面的功劳。

如果我将代码复制粘贴到控制台上,请先将模块粘贴,然后再将修饰后的功能粘贴到控制台上。

但是,如果我导入模块,则会收到错误消息,指出模块无法导入sys-尽管我将其导入模块的第一行。

sessionStorage

我以为我以错误的方式导入了模块:

我尝试过

    Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "TailRecurseException.py", line 18, in func
    f = sys._getframe()
NameError: global name 'sys' is not defined
>>> 

from TailRecurseException import tail_call_optimized

但结果相同。

由于无法导入sys,我在该模块中装饰另一个功能该怎么做?


这是我的子模块:

from TailRecurseException import *

@tail_call_optimized
def recursive_activations( ...)

积分:https://mail.python.org/pipermail//python-list/2006-February/407243.html

1 个答案:

答案 0 :(得分:0)

如果我复制粘贴您附加到tcr.py的子模块代码,然后执行

from tcr import tail_call_optimized

@tail_call_optimized
def recursive_activations(x):
    pass

一切正常。

(顺便说一句,您希望将except TailRecurseException, e:更改为except TailRecurseException as e:以符合现代Python。)