python" hide"源代码/前向引用结束时的大文字?

时间:2018-05-05 04:03:23

标签: python-2.7

我将此源文件设置为运行测试,如果它以__main__运行。

if __name__ == '__main__': 
    import sys

    expected_output = '''
         (60-line literal that represents the correct output)'''

    [run the tests collecting output in a variable named output]

    [compare output to expected_output]

我很乐意将这个巨大的文字放在文件的底部,但我无法想出一种方法来创建它的前向引用。

我基本上没有运气吗?

2 个答案:

答案 0 :(得分:1)

是的,在python中,一切都应该在你使用它之前定义。我建议将文字放入不同的文件中。

如果你必须,从技术上讲,你可以把你的文字放在同一个文件中,在代码的最后,然后用内省或仅作为文件阅读。

with open(__file__) as f: expected_output = f.read().rsplit("'''")[-2]

虽然我发现在单独的文件中存储大文字更容易维护和阅读。

答案 1 :(得分:1)

您必须先分配数据才能使用它。诀窍是将您当前拥有的内容if __name__==__main__放入代码顶部的函数中。然后你可以把所有好的代码放在那个函数中,添加一大块丑陋的东西,并在底部放一个非常简单的if。调用main()时,变量已分配,您可以继续使用。

import sys # aren't saving anything by putting it in the `if`

def main():
    [run the tests collecting output in a variable named output]
    [compare output to expected_output]

expected_output = '''
    (60-line literal that represents the correct output)'''

if __name__ == '__main__': 
    main()

@tdelaney这是对你的建议的轻微修饰。

def main(expected_output):
    [run the tests collecting output in a variable named output]
    [compare output to expected_output]


if __name__ == '__main__': 
    main(
'''
(60-line literal that represents the correct output)
'''
)