如何声明导入模块使用的变量

时间:2017-10-13 15:53:28

标签: python

我有一个名为my_module.py的模块 在这个模块的内部有一个函数my_function

def myFunction():
    print my_variable

显然,当调用此函数时,它会打印my_variable,它在任何地方都没有实例化。因此,从模块内部调用myFunction()将导致执行崩溃。

现在,除my_module.py外,我还有一个名为my_app.py的脚本位于同一个文件夹中。

my_app.py内部我正在导入my_module.py并在其命名空间下实例化my_variable。在my_variable实例化后,我正在调用my_module.myFunction(),它会选择my_variable并打印出其上下文:

import module
module.my_variable = 'this variable is instantiated inside of another script'
module.myFunction()

虽然这种方法有效但我想知道它是否设计得当。是否有其他方法来实例化imported module以外的imported module以外的变量?

2 个答案:

答案 0 :(得分:1)

import module
module.my_variable = 'this variable is instantiated inside of another script'
module.myFunction()
  

虽然这种方法有效但我想知道它是否设计得当。

不,这个设计不合适。一种正确的方法是将值显式传递给函数。

  

是否有其他方法可以在导入的模块之外实例化变量以供此导入的模块使用?

如果您声明此变量,只需要另一个模块。例如my_vars.py

 my_variable = 'this variable is instantiated inside of another script'

然后在my_module.py

import my_vars

def myFunction():
    print my_vars.my_variable

答案 1 :(得分:-1)

我不确定你想要实现的目标,但通常最佳做法是不要改变全球"变量。每当您想在代码中使用my_function()时,您必须先明确更改my_variable,如果其他功能/方法取决于您的代码,可能会触发代码中的副作用它。最好的方法是重写my_function(),使其接受my_variable作为参数