Tips: import & from

There are two ways to import or use the code from other package:

import mypkg

from mypkg import *

There is a big difference between them.
from 是变量名拷贝运算,而非变量名的别名机制

For example: there is a package called mypkg

# mypgk.py
X = 99
def printer():
  print (X)

如果我们在另一模块nested1.py内使用from导入两个变量名。

# nested1.py
from mypkg from X, printer   # copy names
X = 1      # change my 'X' only
printer()  # print mypkg's 'X' only which is still 99
% python nested1.py
99

BUT, 如果我们用import获得了整个模块,然后赋值某个点号运算的变量名,就会修改被导入模块中的变量的值。点号把python定向到了模块对象内的变量名,而不是导入者nested2.py的变量名。

# nested2.py 
import mypkg  # get module as a whole
mypkg.X = 1  # change mypkg's 'X'
mypkg.printer()

% python nested2.py
1
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,271评论 4 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,281评论 19 139
  • 吟风颂月阅读 283评论 0 0
  • 盟誓依在君不在, 浊酒滚滚向黄洪。 拔山力兮真盖世, 散坐乌堤一缕尘。 英雄冢, 男儿痛。 劲风萧萧浪滔滔, 呜咽...
    落尽风尘哀阅读 358评论 2 1
  • 不如放了自己,走走也好 烟火繁盛的日常中 再没有噩耗可以让我们失散 憩息我疲倦的小店里 有我撕碎又拼接过的生活 惦...
    西诗人生阅读 349评论 5 12