动态创建函数文件的函数参数

时间:2015-08-09 20:00:11

标签: python

我正在尝试编写辅助函数来帮助我生成带有函数定义的新文件。以下是代码的一部分:

def new_function_file(file_name, fun_name, arguments):
  f = open(file_name + ".py", 'w')
  f.write("\tdef " + fun_name + str(("self", ) + arguments) + ":\n")

new_leetcode_file("testfile", "test", ("arr1", "arr2"))

然而,这会产生" def测试('自我'' arr1',' arr2'):"在testfile.py中。我想知道如何在没有生成单引号的情况下正确解析参数?

3 个答案:

答案 0 :(得分:3)

格式化打印在这里可能很有用,同时还有一些细节:

def new_function_file(file_name, fun_name, arguments):

    f = open(file_name + ".py", 'w')

    # expand the arguments and join with "," separators:
    args = ", ".join(arguments) 
    # use formatted print to put it all together nicely:
    write_string = "\tdef {fn}(self, {ar}):\n".format(fn=fun_name, ar=args)

    f.write(write_string)

您的演示输入:

new_leetcode_file("testfile", "test", ("arr1", "arr2"))

“writestring”将是:

'\tdef test(self, arr1, arr2):\n'

并且您可以直接将其写入文件而无需任何其他标点符号。

答案 1 :(得分:1)

您需要'(' + ', '.join(('self',) + arguments) + ')'而不是str(('self',) + arguments)

话虽如此,可能是更好的方式来实现你想做的任何事情......我将回应@SvenMarnach的评论

  

“将Python源代码编写到Python文件中仅在极少数情况下才有用。”

你实际上想要用你正在生成的这个新的python源文件来完成什么?

答案 2 :(得分:1)

在这里你要写一个元组到你的文件,而你必须写这个元组的内容。

def new_function_file(file_name, fun_name, arguments):
   f = open(file_name + ".py", 'w')
   f.write("\tdef " + fun_name+"(")
   arguments=["self"].extend(list(arguments))
   for x in arguments:
      if x!=arguments[-1]: f.write(x+",")
      else: f.write(x)
   f.write("):\n")