我做了一个班级定义......
class Element():
def __init__(self, word_list, type):
self.type = type
self.list = word_list
在另一个Python文件(practice_page_1)上有一个函数定义......
from class_element import Element
test_list = []
def test(word_list):
num = 0
for letter in word_list:
if letter == 'd':
global test_list
test_list = word_list[:num + 1]
test_list = Element(test_list, 'letters')
return True
num += 1
然后在另一个Python文件中运行函数...
from practice_page_1 import test
from practice_page_1 import test_list
my_list = ['a', 'b', 'c', 'd', 'a', 'a', 'e', 'f', 'a', 'g']
test(my_list)
print(test_list)
当它打印test_list时,它打印一个空列表[],而我期望它打印一个类对象。但是,如果我将完全相同的操作行移回practice_page_1,它会将test_list打印为类对象。这是为什么?
答案 0 :(得分:0)
使用from ... import ...
时,导入的对象将放在当前名称空间中。它是对象本身的引用,而不是模块变量。如果您想获得最新的更改,请使用以下命令:
import practice_page_1
my_list = ['a', 'b', 'c', 'd', 'a', 'a', 'e', 'f', 'a', 'g']
practice_page_1.test(my_list)
print(practice_page_1.test_list)
这是有效的,因为您现在正在访问模块命名空间中名为test
的变量而不是当前的变量(它曾经是与模块命名空间中的对象相同的对象)。当你有一个名字长的模块时,你可能想要import ... as ...
,但你去了。