0

我正在尝试编写一个程序来自动化制作 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)用 open() 编写多行的方法或(b)用过程编写过程的更好方法

4

3 回答 3

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)
于 2012-10-21T06:12:08.730 回答
4

您可以使用多行字符串:

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

只要确保正确缩进。

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

于 2012-10-21T05:51:40.730 回答
0

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

于 2012-10-21T05:55:21.937 回答