程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

python globals:导入vs. execfile

发布于2019-12-04 23:52     阅读(960)     评论(0)     点赞(30)     收藏(1)


我在文件mymodule.py中放置了一个方法:

def do_something():
    global a
    a=1

如果我尝试

>>> execfile('mymodule.py')
>>> do_something()
>>> print a

我得到的是“ 1”。但是如果我改为导入模块,

>>> from mymodule import *

然后运行do_something(),则python会话对变量“ a”一无所知。

谁能向我解释差异?谢谢。


解决方案


在您导入的第二部分中mymodule,未显示的原因是这样a的名称空间是全局的mymodule

尝试:

print mymodule.a

打印:

1

如预期的那样。

根据Python文档

全局语句是一个声明,适用于整个当前代码块。这意味着列出的标识符将被解释为全局变量。尽管自由变量可能引用全局变量而不被声明为全局变量,但是如果没有全局变量,就不可能分配给全局变量。

全局语句中列出的名称不得在该全局语句之前的文本代码段中使用。

全局语句中列出的名称不得定义为形式参数,也不得在for循环控制目标,类定义,函数定义或import语句中定义。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/168259/7bc64cfc5e108b5b7c63/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

30 0
收藏该文
已收藏

评论内容:(最多支持255个字符)