V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
testor
V2EX  ›  问与答

import 的一个问题

  •  
  •   testor · 2020-07-24 09:57:04 +08:00 · 1166 次点击
    这是一个创建于 1584 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在一个目录下有 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

    7 条回复    2020-07-24 16:59:58 +08:00
    ShuoHui
        1
    ShuoHui  
       2020-07-24 09:59:07 +08:00 via iPhone
    然后呢???
    Vegetable
        2
    Vegetable  
       2020-07-24 10:06:14 +08:00
    这是变量作用域的问题,和 import 关系不大,重点学习 Markdown 作用域 global nolocal 内部作用域 命名空间 等关键字搜索出来的资料。
    Vegetable
        3
    Vegetable  
       2020-07-24 10:07:26 +08:00
    啊编辑了,Markdown 看起来掌握了!
    JeffGe
        4
    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
        5
    ArianX  
       2020-07-24 10:58:16 +08:00 via Android
    module 作用域
    testor
        6
    testor  
    OP
       2020-07-24 12:52:37 +08:00
    @Vegetable 和 import 有关系的,我的问题是导入模块为什么不能访问当前模块的全局变量
    julyclyde
        7
    julyclyde  
       2020-07-24 16:59:58 +08:00
    虽然 import 了,但 function 依然是 b.py 内的,并没有变成 a.py 内的成员
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 688ms · UTC 19:00 · PVG 03:00 · LAX 11:00 · JFK 14:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.