我对python还是很陌生,但是一个小组项目团队的成员给了我一些代码,我需要将它们与自己的代码集成在一起。主程序包含在main.py文件中,该文件从settings.py文件导入变量。 main.py还从functions.py文件导入函数。 functions.py还从settings.py导入变量。我自己的代码需要迭代,因此我需要能够在运行main.py时更改settings.py变量以解决问题。理想情况下,我可以找到一种方法来调整队友代码,使其成为可以简单地将变量传入和传出的函数。
我试图将变量从main.py导入到settings.py,但这导致循环导入。我找不到任何解决方案,也不是因为缺乏尝试,所以非常感谢您的帮助。
main.py
import settings
import function
settings.x=10
print(settings.x+function.y)
settings.py
x=1
function.py
import settings
y= settings.x
有效地,我希望它打印出20个而不是11个。
答案 0 :(得分:2)
如上所述,您可以使用import settings
来导入settings.py
,但这听起来像是您打算(ab)使用代码文件作为数据文件。
如果目标是允许在运行之间快速更改设置,或者甚至允许在多次迭代过程中修改数据,则绝对应该考虑使用其他文件格式作为设置。
一个不错的选择是使用.json
。例如:
main.py:
import json
settings = json.load(open('settings.json'))
print(settings)
settings.json:
{
"some_setting": 1,
"some_list": ["a", "b", "c"],
"nested_stuff": {
"message": "Hello World!"
}
}
请注意,.json
文件看起来很像Python字典,但是您需要使用双引号,并且还有其他一些特定的限制。
如果还要从代码中更新文件,则使用json
特别方便,例如:
import json
with open('settings.json') as f:
settings = json.load(f)
settings['some_setting'] += 1
with open('settings.json', 'w') as f:
json.dump(settings, f)