不能使用Python中的文件之间的函数
我有一个巨大的项目分成3个文件。我通常没有问题使用另一个文件中的一个文件的功能,但这次我无法做到这一点。此外,我不太明白为什么我通过文件之间传递的列表中的一个列表在它离开函数后正在消失。不能使用Python中的文件之间的函数
文件: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后,它将返回为空。
更新:即使在new_code.py
文件中删除list1 = []
的代码仍然是无法从settings.py
调用函数foo。如果你想看看这里的文件: https://drive.google.com/file/d/1ZiTwl-DOPfZCrrrA1kBcBHh8c9AInFLI/view?usp=sharing>文件
更新:我改变了globals.py
文件
从设置导入* 高清富(嘿嘿): 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()
这解决了这个问题,但我不明白为什么。
回答:
2个不好的想法:
- 使用
globals
为模块名,globals
是一个内置函数的名称。 - 使用
global
声明。
如果你想保留一个全局列表对象,一个好的做法是把它包装到一个对象。让它成为一个ref型变量。
一个更好的做法:
settings.py中:
class Settings(object): def __init__(self):
self.items = []
settings = Settings()
在new_code 。潘岳:
from settings import settings def cool_function():
settings.items.append('something')
return settings.items
print(cool_function())
回答:
如果你得到一个缩进错误,你应该用你的文本编辑器的“渲染空白”功能来查找压痕问题
回答:
在new_code.py
移动globals list1
从cool_funtion
以上cool-function
以上是 不能使用Python中的文件之间的函数 的全部内容, 来源链接: utcz.com/qa/259858.html