在python中不能在文件之间使用函数

2024-06-05 12:12:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的项目分成3个文件。我通常在另一个文件中使用来自一个文件的函数没有问题,但这次我不能这样做。而且,我不太明白为什么我在文件之间传递的一个列表在它退出函数后会消失。你知道吗

文件:设置.py

list1 = []

文件:全局.py

from settings import *
def foo(hey):
    global list1
    list1.append(hey)

文件:新建_代码.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\u函数后,它会返回为空。你知道吗

#

更新:即使删除new_code.py文件中的list1 = [],代码仍然无法从settings.py调用函数foo。如果您想查看以下文件: https://drive.google.com/file/d/1ZiTwl-dopfzcrra1kbcbchh8c9ainfli/view?usp=共享>;文件

#

更新:我将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()

这解决了问题,但我不明白为什么。你知道吗


Tags: 文件函数代码frompyimportsettingsfoo
3条回答

2个坏主意:

  1. 使用globals作为模块名,globals是内置函数的名称。你知道吗
  2. 使用global语句。你知道吗

如果您想保留一个全局列表对象,一个好的做法是将其包装到一个对象中。让它成为ref类型变量。你知道吗

更好的练习:

在设置.py地址:

class Settings(object):
    def __init__(self):
        self.items = []

settings = Settings()

在你的新_代码.py地址:

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

如果出现缩进错误,应该使用文本编辑器的“呈现空白”功能来查找缩进问题

相关问题 更多 >