2016-01-13 101 views
0

我有一个很多Python文件的项目。某些文件中有一定数量的变量,我喜欢在其他文件中使用。例如,如果在Python中的文件之间共享变量的最简单方法?

var=10

f1.py定义,什么是我可以调用/使用其他文件"var"不使用from f1 import var方式?

我试过使用global,但它不适用于所有文件。 谢谢!

+4

为什么你不想使用'import'? – BrenBarn

+0

而不是暴露一个变量,而是考虑使用setter和getter函数。看一下'property()'内置函数,它给用户一个访问变量的错觉。 – cdarke

回答

1

您可以用名称范围做到这一点:

import f1 
print(f1.var) 
10 

f1.var = 20 

那么就应该改变所有文件var这是使用变量,import

+0

谢谢,但我得到一个错误“AttributeError:'module'object has no attribute'var'”。由于有很多变量,如果有更好的方法调用“var”而不是“f1.var” ”。再次感谢 – Curiosity

+0

你可以用'var = f1.var'重新分配它。但是,你可以在当前文件中使用它,但是如果你修改它,只在该文件中改变的变量不在文件f1中 –

+0

这不会改变除键入导入行的文件以外的任何地方的值。 -1 –

0

大多数我遇到的这个问题,我用不同的方法的时代:

  1. 我把在所有使用所有的常量程序可以导入一个单独的程序中。
  2. 我为将在几个模块中使用的变量创建一个“共享变量对象”。这个对象被传递给一个类的构造函数。然后可以在正在使用它们的类中访问(并修改)这些变量。

所以当程序启动时,这个类被实例化,然后传递给不同的模块。这也使得它灵活,因为当你为这个类添加一个额外的字段时,不需要改变任何参数。

class session_info: 
    def __init__(self, shared_field1=None, shared_field2=None ....): 
     self.shared_field1 = shared_field1 
     self.shared_field2 = shared_field2 

def function1(session): 
    session.shared_field1 = 'stilton' 

def function2(session): 
    print('%s is very runny sir' % session.shared_field1) 

session = session_info()  
function1(session) 
function2(session) 

应打印: “斯蒂尔顿奶酪是非常松软先生”