我有一个巨大的项目分成3个文件。我通常在使用另一个文件中的一个文件中的函数时没有问题,但这次我无法做到这一点。此外,我不太明白为什么我在文件之间传递的一个列表在传递出函数后就消失了。
文件:settings.py
list1 = []
文件:globals.py
from settings import *
def foo(hey):
global list1
list1.append(hey)
文件:new_code.py
from settings import *
from globals import *
def cool_function():
global list1
list1 = []
hey = "you"
foo(hey)
print (list1)
cool_function()
问题是我的代码无法从globals.py
调用foo。我在foo上收到缩进错误。即使问题已经解决,我正在处理的实际项目中,list1会附加到settings.py
文件中,但是在我返回cool_function后它会返回空。
更新:即使删除list1 = []
文件中的new_code.py
,代码仍然无法从settings.py
调用函数foo。如果你想看一下这些文件:
https://drive.google.com/file/d/1ZiTwl-DOPfZCrrrA1kBcBHh8c9AInFLI/view?usp=sharing>文件
更新:我将globals.py
文件更改为
来自设置导入* def foo(嘿): list1.append(嘿)
new_code.py
个文件
from settings import *
from globals import *
global list1
def cool_function():
list1 = []
hey = "you"
foo(hey)
print (list1)
cool_function()
这解决了问题,但我不明白为什么。
答案 0 :(得分:1)
2个糟糕的想法:
globals
作为模块名称,globals
是内置函数的名称。global
声明。如果要保留全局列表对象,最好将其包装到对象中。让它成为ref-type变量。
更好的做法:
在settings.py中:
class Settings(object):
def __init__(self):
self.items = []
settings = Settings()
你的new_code.py中的:
from settings import settings
def cool_function():
settings.items.append('something')
return settings.items
print(cool_function())
答案 1 :(得分:0)
如果出现缩进错误,您应该使用文本编辑器的“渲染空白”功能来查找缩进问题
答案 2 :(得分:0)
new_code.py
从globals list1
移到cool_funtion
以上cool-function