我有一个Python模块,它由许多不同的函数组成。
假设我的第一个函数返回一个变量,我想在第二个函数中使用两次,第二个函数返回一个变量,我想在第三个函数中使用四次(…)等等)。
是更好地声明变量,我想在整个模块中使用全局,然后调用函数,返回说变量一次定义全局,而不是调用函数不止一次,以使用它们返回的变量?
我说这是安全(不使用全局变量)和效率(如果可能的话,不执行每个函数不止一次)之间的权衡是正确的吗?
def fn_for_reading_file():
# (Insert code for prompting user for filename, opening and reading file)
global file_as_string
# (Insert code for assigning user's file to file_as_string)
return file_as_string
fn_for_reading_file()
def extract_data_from_string():
global my_list = []
# (Insert code for going through return_file_as_string and appending data to my_list)
return my_list
extract_data_from_string()
def another_fn():
# (Insert code which uses file_as_string and my_list)
return fn_output
another_fn()
我会尝试重新定义你正在思考的问题。如果你只考虑函数式编程,那么是的,你是正确的,因为安全性与更多代码是你正在考虑的基本权衡。
然而,有很多方法可以通过重新构建问题来绕过你的困境。我显然不知道你的代码是什么样子的,但是考虑将这个功能构建到一个类中可能是有意义的。与其使用全局变量,不如使用适当的getter/setter将这些值设置为类属性,然后构建模块,使您的函数成为方法。