不能使用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个不好的想法:

  1. 使用globals为模块名,globals是一个内置函数的名称。
  2. 使用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 list1cool_funtion以上cool-function

以上是 不能使用Python中的文件之间的函数 的全部内容, 来源链接: utcz.com/qa/259858.html

回到顶部