在python中向文件写入多次返回

在python中向文件写入多次返回,python,function,Python,Function,我需要将每个函数的返回值写入一个文本文件。我使用了下面的代码。但是,当我有多个函数时,使用file1.write()的过程会消耗大量时间和行数。有没有更聪明的方法来编写输出 def function1(): #some operation return "Status 1" + "\n\n" def function2(): #some operation return "Status 2" + "\n\n" def function3(): #som

我需要将每个函数的返回值写入一个文本文件。我使用了下面的代码。但是,当我有多个函数时,使用file1.write()的过程会消耗大量时间和行数。有没有更聪明的方法来编写输出

def function1():
    #some operation
    return "Status 1" + "\n\n"

def function2():
    #some operation
    return "Status 2" + "\n\n"

def function3():
    #some operation
    return "Status 1" + "\n\n"

if __name__ == '__main__':

    file1 = open("test.txt","w")

    output1 = function1()
    file1.write(output1)

    output2 = function2()
    file1.write(output2)

    output3 = function3()
    file1.write(output3)

    file1.close()

由于许多人对我的问题感到困惑,我修改了代码。

如果将下面的所有内容替换为以下内容,则可以缩短代码(可能更清晰):

with open("text.txt","w") as file1:
    for func in (addition, subtraction, multiplication):
        file1.write(func(5,6))

但这并不能提高执行时间。

看起来你在努力避免重复太多。您可以利用函数是“第一类对象”这一事实来迭代它们。此外,您还可以利用
functools
模块的功能重用几乎相同的函数的基本结构。以下代码将生成与您的示例相同的输出,并且代码重复次数要少得多:

import functools

def base_func(func_id):
    return 'status of {}\n\n'.format(func_id)

functions = [functools.partial(base_func, i+1) for i in range(3)]

if __name__ == '__main__':
    with open('test.txt','w') as file1:
        for func in functions:
            file1.write(func())

然而,它几乎肯定不会运行得更快,但考虑到您的示例,我几乎不认为计算性能应该受到很大关注。

我遇到的最快的文本编写器是Pandas,我通常与NumPy一起使用。所以它看起来像这样:

import pandas as pd
import numpy as np
a=np.zeros(len(results)) #if you know the result size
#now store all your results in a
a[0]=add(5,6)
a[1]=sub(5,6)
a[2]=multiply(5,6)
#continue
b=pd.DataFrame(a)
b.to_csv('test.csv', header=False, index=False, sep=',')

希望你能明白——sep可以是任何分隔符。如果你需要一个多维数组,你也可以这样做。

请发布你真正的问题。这段代码不可能超过几毫秒。这不是你的问题,但是Python的标准库已经提供了诸如
operator.add()
operator.sub()
等操作符。这只是一个例子。我知道我们有这样的操作符,但这并不能回答我的问题