我编写了简单的装饰器,它打印传递给它的函数(例如“foo”),然后我自己装饰它。所以最后它打印了两个书面函数。
我最近读过关于 quines 的文章,有点坚持它的精确定义。例如,根据这个来源,一个quine“必须精确地打印出程序员作为程序一部分编写的那些指令”。
所以我的问题是:我可以将书面程序视为 quine 吗?
def decorate(function):
from inspect import getsourcelines
def wrapper(*args, **kwargs):
for line_num, code_line in enumerate(getsourcelines(function)[0]):
print(code_line)
return wrapper
@decorate
def foo(bar1, bar2=777):
print("bar")
foo(None)
decorate(decorate)(decorate)
精确的输出是:
@decorate
def foo(bar1, bar2=777):
print("bar")
def decorate(function):
from inspect import getsourcelines
def wrapper(*args, **kwargs):
for line_num, code_line in enumerate(getsourcelines(function)[0]):
code_line = code_line.replace('\n', '')
print(code_line)
return wrapper