繁体   English   中英

我何时应该将函数的结果存储为python中的变量?

[英]When should I store the result of a function as a variable in python?

假设函数my_list(obj)返回一个列表。 我想编写一个函数,如果此列表的长度为1,则返回my_list(obj)的单个元素,否则返回False 我的代码是

def my_test(obj):
    if len(my_list(obj)) == 1:
        return my_list(obj)[0]
    return False

代码刚出现在我身上

def my_test(obj):
    L = my_list(obj)
    if len(L) == 1:
        return L[0]
    return False

可能会更有效,因为它只调用一次my_list() 这是真的?

函数my_list()可能需要大量计算,因此我很好奇这两个代码块之间是否存在差异。 我很乐意自己进行测试,但我不确定如何进行测试。 我也很好奇,如果函数将被多次调用,通常最好的方法是将函数的结果存储为变量。

你是对的。 由于第二个块仅调用一次my_list()因此效率更高。 如果my_list()在计算上不是特别昂贵,那么您根本不会注意到两者之间的差异。 另一方面,如果您知道这样做会很昂贵,则最好将结果保存在不影响可读性的位置(但是,请注意@Checkmate的答案中有关内存的警告, 以防可能出现的异常)。

但是,如果my_list()副作用 ,或者在两次调用之间它的返回值可能发生变化,则您可能不想保存它(取决于您是想两次触发副作用还是需要接收更改后的返回值) 。

如果您想自己测试,可以使用time.time这样

import time

t0 = time.time()
my_test()
t1 = time.time()

total = t1-t0

获得my_test()的时间。 只需运行两个功能并比较它们的时间即可。

要回答您的问题,如果将函数的结果多次调用,通常最好将函数的结果存储为变量:这取决于。 就可读性而言,这实际上取决于您是一名程序员。 在速度方面,将结果存储在变量中通常比运行函数两次要快。

但是,存储结果可能会占用内存,并且如果您存储的是一个非常大的变量,与简单地调用函数相比,内存的使用实际上会导致更长的运行时间。 此外,如上所述,运行一个函数可以做的不仅仅是将结果存储在变量中,所以运行一个函数不同的次数可以得到不同的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM