使用全局变量与调用重复返回所述变量的函数

时间:2015-10-09 12:39:09

标签: python global-variables

我有一个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()

1 个答案:

答案 0 :(得分:1)

我会尝试重新构思您正在考虑的问题。如果你只考虑函数式编程,那么是的,你在那个安全性方面是正确的,而更多的代码是你正在考虑的基本权衡。

然而,通过重构问题,有很多方法可以解决您的困境。我显然不知道你的代码是什么样的,但考虑将这个功能构建到一个类中可能是有意义的。而不是使用全局变量,使用适当的getter / setter将这些值设置为类属性,然后构造模块,使您的函数成为方法。