import module与from module import * 两种模块导入有何区别
#原创,转载请留言联系
- 区别1
import module 引用共享变量时,要使用module.变量名。
而from module import * 直接使用变量名即可
- 区别2(有点绕)
import module方式操作module的变量时,本地不会创建新变量,操作的是目标模块的变量!
from module import *方式操作module变量时,实质上是在本地创建一个与目标模块相同的变量名,并且默认与目标模块变量指向同一个内存空间。
看似功能一样,但是在开发中稍不注意可能会排bug排到头皮发麻!
用一个小示例说明!
先建立一个module.py,里面就一个公共变量,a = []。
然后我们用import module方式先操作module的变量,再打印,看下有没变化。
import module
module.a = [1,2,3]
print(module.a) from module import a
print(a) 输出:
[1, 2, 3]
[1, 2, 3]
看似很平常,正常操作,但是,继续看!
from module import a
a = [1,2,3]
print(a) import module
print(module.a) 输出:
[1, 2, 3] # 结果不同了!
[]
怎么调一下位置,就输出不一样了?
因为!from module import 方式是自己创建了一个自己的变量a指向module.a的内存空间。当执行命令a = [1,2,3]时,变量a赋值了,重新分配了内存空间。并不是module文件里的a变量重新分配空间,所以odule文件里的a变量的值没有变化!
而import module方式是操作module文件里面a的变量,即使进行了赋值,重新分配了内存空间,但是他还是module里面的变量。所以当别人导入module的时候,module.a的值就是[1,2,3]了!
*建议!开发中,如果有操作公共变量的情况,一定要全部都用import module方式!
import module与from module import * 两种模块导入有何区别的更多相关文章
- Pytho中两种方式导入模块的差别
1.使用import module,只是把模块导入,访问模块中的函数名或者是属性是必须使用点运算符(.)来访问,否则直接访问会提示找不到这些函数或者属性. 2.使用from numpy import ...
- http://wenku.baidu.com/view/26afdb8371fe910ef12df8ccRevit采用DWG和FBX两种格式导入3D max方法的总结
2.DWG 属性——导出为 ACIS 实体(如果选择导出为多边形网格,则将每个图元导出为 由多个多边形组成的对象,这些多边形相互连接或组成 “ 网格 ” .在导出到 DWG 文件以用 于 Ma ...
- Cannot load module file xxx.iml的两种解决方法
一. 一种是点击左上角File,然后点击Invalidate Caches / Restart...,弹出对话框再点击Invalidate and Restart等待工程重新加载,问题就解决了. 二. ...
- oracle两种导出导入方式,即imp与impdp之比较
尽管使用了很多次impexp及impdpexpdp但是使用起来还是会遇到很多问题,现总结如下: 应用:将一个用户的所有表结构及索引,触发器,过程,函数等导入到另一用户里 imp/exp 导出用户表结构 ...
- React组件导入的两种方式(动态导入组件的实现)
一. react组件两种导入方式 React组件可以通过两种方式导入另一个组件 import(常用) import component from './component' require const ...
- python import xxx 与 from xxx import xx 模块引入的区别
有如下脚本script1.py: A='aaaa'B='bbbb'C='cccc'print A,B,C 1.命令行交互模式下使用import 导入方式1: >>>import sc ...
- Nodejs 传图片的两种方式
node上传图片第一种方式 1,首先引入模块 "connect-multiparty": "~1.2.5", 在package.json中添加 "co ...
- Python与数据库 sqlalchemy 建立声明层表对象的两种方式
在对表对象进行建立的时候,通常有两种方式可以完成,以下是两种方式的建立过程对比 首先导入需要的模块,获取一个声明层 1 from sqlalchemy.sql.schema import Table, ...
- Python: import vs from (module) import function(class) 的理解
Python: Import vs From (module) import function(class) 本文涉及的 Python 基本概念: Module Class import from . ...
随机推荐
- htm,html,xhtml,xml,xsl,dhtml,shtm和shtml的区分
介绍一下htm,html,xhtml,xml,shtml的区分,以下内容来自百度后的知识整理. HTML和htm: HTML(Hypertext Markup Language)超文本传输语言,是ww ...
- lintcode-92-背包问题
92-背包问题 在n个物品中挑选若干物品装入背包,最多能装多满?假设背包的大小为m,每个物品的大小为A[i] 注意事项 你不可以将物品进行切割. 样例 如果有4个物品[2, 3, 5, 7] 如果背包 ...
- [剑指Offer] 38.二叉树的深度
题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. [思路1]递归 /* struct TreeNode { int v ...
- nowcoder 提高组模拟赛 最长路 解题报告
最长路 链接: https://www.nowcoder.com/acm/contest/178/A 来源:牛客网 题目描述 有一张 \(n\) 个点 \(m\) 条边的有向图,每条边上都带有一个字符 ...
- Cube 找规律
这道题我们经过简单的推测便可得知3个之前特判,四个之后就成为了一般状况,就是我们每侧都是走整个整个的|_|之后零的走|||. 考试的时候包括平时做题,许多正确的感性比理性证明要强得多. #includ ...
- ng4转义html
https://stackoverflow.com/questions/31548311/angular-html-binding <div [innerHTML]="content& ...
- matlab求矩阵的鞍点
function count = andian(a) v = max(a,[],2); count = 0; for i=1:length(v) [r2,c2] = find(a==v(i)); mi ...
- Spring学习--通过注解配置 Bean (三)
组件装配: <context:component-sacan> 元素还会自动注册 AutowiredAnnotationBeanPostProcesser 实例 , 该实例可以自动装配具有 ...
- 转:通过Spring Session实现新一代的Session管理
长期以来,session管理就是企业级Java中的一部分,以致于我们潜意识就认为它是已经解决的问题,在最近的记忆中,我们没有看到这个领域有很大的革新. 但是,现代的趋势是微服务以及可水平扩展的原生云应 ...
- Topcoder SRM 607 div1题解
好久没来写了,继续继续... Easy(250pts): //前方请注意,样例中带有zyz,高能预警... 题目大意:给你一个字符串,中间有一些是未知字符,请你求出这个字符串的回文子串个数的期望值.数 ...