1. 讨论采用 * 模糊导入或者 单独导入变量 会在不同文件生成不同的对象
  1. .a
  2. └── mypackage
  3. ├── a.py
  4. ├── b.py
  5. ├── c.py
  1.  

b.py内容如下

  1. import c
  2.  
  3. def b():
  4. print("b方法开始")
  5. print(c.config)
  6. print(id(c.config))

c.py内容如下

  1. config = "ONCE"

a.py内容如下

  1. import b
  2. import c
  3.  
  4. def a():
  5. print(c.config)
  6. c.config = "TWO"
  7. print(c.config)
  8. print(id(c.config))
  9. print("a方法执行完毕")
  10.  
  11. a()
  12. b.b()

执行a.py,输出

  1. ONCE
  2. TWO
  3. 2492322048184
  4. a方法执行完毕
  5. b方法开始
  6. TWO
  7. 2492322048184

id值相同,意味着此时a,b文件共用一个对象

===========================我是分割线===========================

但是。。。假如

  1. ======a.py======
  2. import b
  3. from c import config
  4.  
  5. def a():
  6. global config
  7. print(config)
  8. config = "TWO"
  9. print(config)
  10. print(id(config))
  11. print("a方法执行完毕")
  12.  
  13. a()
  14. b.b()
  15. ======b.py======
  16. from c import config
  17.  
  18. def b():
  19. print("b方法开始")
  20. print(config)
  21. print(id(config))
  22.  
  23. ======c.py======
  24. config = "ONCE"

那么此时a.py输出为

  1. ONCE
  2. TWO
  3. 1813891082424
  4. a方法执行完毕
  5. b方法开始
  6. ONCE
  7. 1813894255144

id值不同,意味着不是同一个对象

因此如果需要使用可修改配置文件的全局变量,需要用文件名方式导入,将其当作一个全局类使用

单独导入或者模糊导入会拥有不同的id和引用类型

关于python导包问题的更多相关文章

  1. python导包学习总结

    python初学者,对于导包纠结了不少时间,总结分享,持续前进~ Python导包的两种方法: 1.1  from 包.模块  import 方法名,调用时直接使用方法名() 1.2  from 包. ...

  2. python导包显示No module named XXX问题

    最近用sublime text写python脚本,在导包是一直显示No module named XXX. 问题描述: 首先文件夹的目录结构如下: count.py文件,代码如下: #coding=u ...

  3. python导包语句执行

    今天在做项目中遇到一个问题,在first_page中引用login的登录方法,第一次执行登录可以正常登录,登录成功后,再选择返回主菜单,回到上个页面,再选择登录时报错“login_class isno ...

  4. python导包问题,这一篇就够了

    解决办法: 将项目所在的根目录添加到sys.path中 在入口文件中加入如下代码: import sys import os # 将 项目的根目录添加到sys.path中 BASE_DIR = os. ...

  5. 记一次Python导包经历

    最近由于需要写一个脚本调用另一个文件里面的一个方法,试了很久都导包失败,特此记录一下 问题背景 1)脚本文件为send_reward.py,要调用public_model_func.py里面的一个类方 ...

  6. python导包

    我们将完成特定功能的代码块放在一个.py结尾的文件中,这个文件被称为模块.在这个模块中可能包含变量,函数,类等等内容. 当我们从外部需要用到这个模块时,就需要将这个模块导入到我们当前环境.导入方式有以 ...

  7. python导包路径的修改

    1.sys os 模块 import sys import os 2.查看默认的导包路路径: print(sys.path) 3.路径拼接 os.path.join(url, 'apps')) 4.追 ...

  8. python导包一不小心就入坑(常用解决办法)

    常见导包报错: - ImportError:No module named - SystemError: Parent module '' not loaded, cannot perform rel ...

  9. 太酷炫了!!我会Python 导包八种方法,你呢?

    1. 直接 import 人尽皆知的方法,直接导入即可 >>> import os >>> os.getcwd() '/home/wangbm'复制代码 与此类似的 ...

  10. python导包踩过的坑之包名和模块名同名

随机推荐

  1. ASP.NET Core开发者指南(转发)

    ASP.NET Core开发者指南 2019年ASP.NET Core开发者指南: 你可以在下面找到一张图,该图展示了你可以选取的路径及你想学习的库,从而成为一名 ASP.NET Core 开发者.& ...

  2. fiddler抓取https的请求详解

    本文主要说明了自己在设置fiddler抓取https过程中所遇到的问题及解决步骤,特别是fiddler在设置证书的环节遇到的各种奇葩问题,特此分享! 声明:本文为原创文章,转载请注明来源:https: ...

  3. Linux Shell 中 > 和 >> 的异同点和应用场景

    Linux Shell 中 > 和 >> 的异同点和应用场景 > 和 >> 的异同点 举例说明(start.sh 为某个服务的启动脚本,start.log 为某服务 ...

  4. JavaScript(1):Base/Tips

    目录 输出 全局变量 字符串 类型及转换 变量提升 严格模式 表单验证 (1) 输出 <!DOCTYPE html> <html> <body> <p> ...

  5. spring-boot集成4:集成mybatis,druid和tk.mybatis

    Why mybatis? mybatis提供了ORM功能,相比于其他ORM框架,其需要编写更多的sql,也给了我们编写特殊/复杂sql和进行sql优化的机会. Why druid? Druid是阿里巴 ...

  6. 掌握Pod-Pod调度策略

    一 Pod生命周期管理 1.1 Pod生命周期 Pod在整个生命周期过程中被系统定义了如下各种状态. 状态值 描述 Pending API Server已经创建该Pod,且Pod内还有一个或多个容器的 ...

  7. pm2 代替 Supervisor 管理进程

    前提 我们在使用 Laravel 的时候不免用到列队来处理任务,而 Laravel 官方文档给出的是 Supervisor 来管理进程和监控.但是我们在使用中有下面几个缺点: Supervisor 单 ...

  8. 如何在WIN7下安装虚拟机linux系统

    需要支持多个平台的IT管理员经常会遇到如何在Windows 7计算机上安装Linux的问题.幸运的是有多种方法可供选择:双系统.Linux虚拟机和U盘引导. 当需要用到Windows 7和Linux时 ...

  9. 【Linux开发】linux设备驱动归纳总结(三):6.poll和sellct

    linux设备驱动归纳总结(三):6.poll和sellct xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...

  10. python 爬虫 requests模块(response常用属性)

    response常用属性 content获取的response对象中的二进制(byte)类型的页面数据response.content 返回响应状态码response.status_code 200 ...