Python 那是奎因还是什么?
我编写了一个简单的decorator,它打印传递给它的函数(例如“foo”),然后根据自身对其进行修饰。所以最后它会打印两个写的函数 我最近读到了关于奎因的文章,但有点拘泥于它的精确定义。例如,根据奎因的说法,“必须精确地打印出程序员作为程序一部分编写的指令” 所以我的问题是:我能把书面程序看作是奎因吗?Python 那是奎因还是什么?,python,python-3.x,decorator,definition,quine,Python,Python 3.x,Decorator,Definition,Quine,我编写了一个简单的decorator,它打印传递给它的函数(例如“foo”),然后根据自身对其进行修饰。所以最后它会打印两个写的函数 我最近读到了关于奎因的文章,但有点拘泥于它的精确定义。例如,根据奎因的说法,“必须精确地打印出程序员作为程序一部分编写的指令” 所以我的问题是:我能把书面程序看作是奎因吗? def decorate(function): from inspect import getsourcelines def wrapper(*args, **kwargs)
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
quine是一种计算机程序,它不接受任何输入,只产生自己的源代码副本作为其唯一输出 从上一个编辑维基百科定义的人来看,严格来说,没有。这是令人印象深刻的,你非常接近,但顺序很重要,你确实需要在输出的底部调用这两个调用 通常,要测试您的程序是否为奎因:
./my_quine > output
diff my_quine output # should result in no differences
如果您不使用脚本语言,显然可能需要执行以下几个步骤:
cc my_quine.c -o my_quine
./my_quine > output
diff my_quine.c output
或
如果您直接通过解释器调用脚本语言文件,您可以在输入和输出中(即#!/usr/bin/tclsh
),在技术上省略脚本语言文件顶部的shebang:
tclsh my_quine.tcl > output
diff my_quine.tcl output
tclsh my_quine.tcl > output
diff my_quine.tcl output