导入时分配模块对象



我正在尝试从模块导入空列表并尝试为其分配不同的值。但显然Python不支持模块项分配。解决这个问题的不同方法是什么?

在 a.py

b=[]

在 2.py

import a
list1=b
list1[0]=1
list1[1]=2
list1[2]=3

因此,当我们这样做时,我们会收到"模块对象不支持项目分配"错误。我们如何解决这个问题?

当你的代码这样做时

import a
list1=b

您似乎期望b与您在模块 a 中定义的b相同。但事实并非如此。要执行您期望的操作,您的代码应该执行

list1=a.b

或者它应该做

from a import b
list1=b

如果没有这些方法之一,Python 将 b in 2.py 视为与 a.py 中的b完全独立的变量。

看起来你期待

import a

使a.py 2.py 命名空间的一部分中的所有名称。其他一些语言的导入就是这样工作的(例如 涡轮帕斯卡 use (。你可以在Python中做到这一点,就像这样。

from a import *

但这被认为是糟糕的 Python 风格,因为在一般情况下,你真的不知道你的 import 语句在导入什么。

最新更新