我正在尝试编写一个程序来自动化制作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)使用程序编写程序的更好方法
答案 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()”