Python 为什么from code import*与直接将相同的代码输入REPL不同?

Python 为什么from code import*与直接将相同的代码输入REPL不同?,python,Python,…事实上,进入 a = 0 def func(): global a; a = 1 func() print(a) 直接在REPL中给出1 当(重置控制台后)进入 给出0。为什么? code.py是 在一种情况下,调用func()。将a设置为1。如果只是导入,则不会调用函数(即函数体未执行)。导入并不意味着调用函数内部的函数。如果是在调用函数后,则会发生这种情况,原因与将字典的值赋给另一个变量x=d[y]的情况相同然后变异字典d[y]+=1变量x似乎没有改变导入*将模块中的每个值绑定到命名空

…事实上,进入

a = 0
def func(): global a; a = 1

func()
print(a)
直接在REPL中给出1

当(重置控制台后)进入

给出0。为什么?

code.py是


在一种情况下,调用
func()
。将
a
设置为
1
。如果只是导入,则不会调用函数(即函数体未执行)。导入并不意味着调用函数内部的函数。如果是在调用函数后,则会发生这种情况,原因与将字典的值赋给另一个变量
x=d[y]的情况相同
然后变异字典
d[y]+=1
变量
x
似乎没有改变<代码>导入*将模块中的每个值绑定到命名空间中的一个单独名称。请尝试导入代码,然后参考
code.a
code.func
from code import *

func()
print(a)
a = 0
def func(): global a; a = 1