编写python程序来编写python程序

时间:2012-10-21 05:49:37

标签: python file python-2.7 procedure

我正在尝试编写一个程序来自动化制作tkinter窗口的过程,所以我试图使用open()函数打开一个txt文件(可能应该是.py不应该吗?)一个制作窗口的过程,我试图让它写的代码是:

def a_procedure():
    window = Tk()
    #rest of code necessary to make a Tkinter window

但问题是,当我使用

open()
textfile.write("def a_procedure()"/
"window = Tk()")

我在文本文件中得到的是:def a_procedure():window = TK()#rest of text

是否有(a)用多种线写的方法     打开() 或(b)使用程序编写程序的更好方法

3 个答案:

答案 0 :(得分:5)

您的示例未显示您将如何更改生成的函数(因为如果它们完全相同,则您不需要生成它们)。所以我将展示一个函数可以返回一个新函数的不同示例。

def make_function(first_multiplicand):
    def multiply(second_multiplicand):
        return first_multiplicand * second_multiplicand

    return multiply

然后你可以创造乘以不同数量的函数:

doubler = make_function(2)
tripler = make_function(3)
print doubler(7), tripler(7)

这样你就不必写出.py文件,然后写出import文件(如果你不能在任何有用的地方写出文件,那么它会有潜在的问题,并要求你通过字符串格式创建Python源代码,这非常难看。

同样值得关注functools,尤其是functools.partial;您可以按如下方式重写上述内容:

import functools

def make_function(first_multiplicand):
    def multiply(first, second):
        return first * second
    return functools.partial(multiply, first_multiplicand)

答案 1 :(得分:4)

您可以使用多行字符串:

textfile.write("""
def a_procedure():
    window = Tk()
""")

请确保正确缩进内容。

为什么需要从Python脚本生成Python?

答案 2 :(得分:0)

尝试:“def a_procedure():\ n \ twindow = Tk()”