import 的一个问题

2020-07-24 09:57:04 +08:00
 testor

在一个目录下有 2 个文件,a.pyb.py

a.py:

from b import function
a = 2
function()

b.py:

a = 1
def function():
    print(a)

执行 a.py ,输出结果是 1,为什么不是 2 呢

然后如果在 b.py 中注释 a=1,执行时会报找不到 a

1099 次点击
所在节点    问与答
7 条回复
ShuoHui
2020-07-24 09:59:07 +08:00
然后呢???
Vegetable
2020-07-24 10:06:14 +08:00
这是变量作用域的问题,和 import 关系不大,重点学习 Markdown 作用域 global nolocal 内部作用域 命名空间 等关键字搜索出来的资料。
Vegetable
2020-07-24 10:07:26 +08:00
啊编辑了,Markdown 看起来掌握了!
JeffGe
2020-07-24 10:43:53 +08:00
a.py:
import b

b.num = 3
num = 1
b.function() # 输出 3


b.py:
num = 2

def function():
print(num)
ArianX
2020-07-24 10:58:16 +08:00
module 作用域
testor
2020-07-24 12:52:37 +08:00
@Vegetable 和 import 有关系的,我的问题是导入模块为什么不能访问当前模块的全局变量
julyclyde
2020-07-24 16:59:58 +08:00
虽然 import 了,但 function 依然是 b.py 内的,并没有变成 a.py 内的成员

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692711

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX