在单独的Python文件中更改变量

时间:2014-06-09 01:17:14

标签: python

所以我今天才发现我可以从其他Python文件中导入变量。例如,我可以有一个变量green = 1,并且有一个完全独立的文件使用该变量。我发现这对函数非常有用。

所以,这是我的问题。如果标题没有帮助我很抱歉,我不完全确定这会被称为什么。 我希望我的程序向玩家询问他或她的名字是什么。一旦玩家回答,我希望该变量存储在一个单独的Python文件“player_variables.py”中,所以每次我想说出玩家的名字,而不是去from game import name,我可以使用from player_variables import name,只是为了让它更容易。

我完全明白这是一个懒惰的人的问题,但我只是想尽可能多地学习。我还是很新,如果这个问题很荒谬,我很抱歉。 :)。 谢谢你的帮助,我很感激。 (对我好!)

2 个答案:

答案 0 :(得分:1)

从你的问题来看,我认为你混淆了一些关于变量和变量值的想法。

1)只需创建一个带有变量名的python文件,就可以访问其中定义的那些变量的值。例如:

# myvariables.py
name = 'Steve'

# main.py
import myvariables
print myvariables.name

由于这需要将变量本身定义为全局变量,因此该解决方案并不理想。有关详情,请参阅此链接:https://docs.python.org/2/reference/simple_stmts.html#global

2)但是,正如您的问题所述您希望程序保存 python文件中某些用户输入值的变量,这完全是另一回事就像那个metaprogramming in python - 因为你的程序正在输出Python代码,在这种情况下是一个与你的变量python文件同名的文件。

从上面可以看出,如果这是您访问和更新变量值的方法,那么拥有一个可以随心所欲地加载或更改的配置文件是一个更简单的想法。 元编程只在您需要时才需要。

答案 1 :(得分:1)

我认为您应该使用数据格式来存储数据,而不是数据操纵编程语言:

import json
import myconfig

def load_data():
    with open(myconfig.config_loc, 'r') as json_data:
        return json.loads(json_data.read())

def save_data(name, value):
    existing_data = load_data()
    existing_data[name] = value
    with open(myconfig.config_loc, 'w') as w:
        w.write(json.dumps(existing_data, indent=4, sort_keys=True))

您应该只将此json文件的位置存储在myvariables.py文件中,但我会将其称为其他内容(在本例中为myconfig,或仅config)。

More on the json library can be found here.