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