模块 import 与from
什么是模块:就是一系列功能的集合体
模块的来源 :1内置模块 2 第三方模块 3 自定义模块
模块的格式:
1 使用python编写的.py文件
2 已被编译为共享库或DLL的C或C++扩展
3 把一系列模块组织到一起的文件(注:文件下有一个_init_.py文件,该文件夹称之为包)
4 使用C编写病链接到python解释器得内置模块
为何要用模块
1 使用内置的或者第三方模块的好处是:拿来主义,可以极大提升开发效率
2 使用自定义模块的好处是:可以减少代码冗余(抽取我们自己程序中要公用的一些功能定义模块,然后程序的各部分组件都去模块中调用共享的功能)
如何用模块
大前提:一定要区分开谁是执行文件,谁是被导入模块
import导入模块
首次导入模块发生什么事 文件名是spam.py 模块名是spam
1 会产生一个模块的名称空间
2 执行文件spam.py将执行过程中产生的名字都有放到模块的名称空间中
3 在当前执行文件的名称空间中拿到一个模块名,该名字指向模块的名称空间
import spam
之后的导入,都是直接引用第一次导入的成果,不会重新执行文件
在执行文件中访问模块名称空间中名字的语法:模块名.名字(spam.x) 指名道姓的跟spam要名字x 肯定不会与当前执行文件中的名字冲突
总结import导入模块:在使用时必须加上前缀:模块名
优点:指名道姓的向某一个名称空间要名字,肯定不会与当前名称空间中的名字冲突
缺点:但凡应用模块中德名字都需要加前缀,不够简洁
from 模块 import 模块名导入
首次导入模块发生3件事 :
1 创建一个模块的名称空间
2 执行文件spam.py将指向过程中产生的名字都放到模块的名称空间中
3 在当前执行文件中拿到一个名字,改名字就是执行模块中相对应的名字
总结:from、、、improt、、、
优点:使用时无需再加前缀,更简洁
缺点:容易与当前名称空间中的名字冲突
起别名 通过as关键字可以给模块起别名: 模块名一旦起别名,原模块名就不能再使用
from spam import readl as r1
r1()
自执行与模块区别
# __name__:
# 1.在py文件作为模块被使用时,__name__为模块名
# 2.在py文件自执行时,__name__为字符串 '__main__'
print("共有逻辑")
if __name__ == '__main__':
# 所有自执行的逻辑
print("m6: 我是自执行的")
a = 10 # 产生的是全局的名字
else:
# 所有模块的逻辑
print("m6: 我被导入执行的")
print(a) # 会报错:走else就不可能走if,所以a压根没产生
模块 import 与from的更多相关文章
- python 导入模块 import 理解
--python 导入模块 import 理解 -----------------------------------2014/03/18 python 导入一个模块的过程要求有一个叫做“路径搜索”的 ...
- 模块(import语句,from...import语句,_name_属性)
1, 什么是模块? 模块就是一系列功能的集合体 模块分为四个通用的类别: 1), 使用python编写的.py文件(*****) 2), 已被编译为共享库或DLL的C或C++扩展 3), 把一系列模块 ...
- python 全栈开发,Day28(复习,os模块,导入模块import和from)
一.复习 collections 增加了一些扩展数据类型 :namedtuple orderdict defaltdict队列和栈time 时间 三种格式 : 时间戳 结构化 字符串random 随机 ...
- Python进阶(八)----模块,import , from import 和 `__name__`的使用
Python进阶(八)----模块,import , from import 和 __name__的使用 一丶模块的初识 #### 什么是模块: # 模块就是一个py文件(这个模块存放很多相似的功能, ...
- python 模块import(26)
一.模块简介 python开发中,每一个.py文件都可以看作是一个模块,模块内部的函数或者方法可以被其他模块调用,至于函数或者方法是具体如何实现的,调用者不需要关心. 假如项目中既含有UI也有逻辑代码 ...
- ES6模块import细节
写在前面,目前浏览器对ES6的import支持还不是很好,需要用bable转译. ES6引入外部模块分两种情况: 1.导入外部的变量或函数等: import {firstName, lastName, ...
- Python标准模块--import
1 模块简介 作为一个Python初学者,你首先要学会的知识就是如何引入其它模块或者包.但是,我发现有些开发者虽然使用Python很多年,依然不了解Python引入机制的灵活性.这篇文章,我们就会研究 ...
- 模块import,from ..import...
首次导入模块发生3件事 1.创建一个模块的名称空间 2.执行文件spam.py,将执行过程中产生的名字都放到模块的名称空间中 3.在当前执行文件中直接拿到一个名字,该名字就是执行模块中相对应的名字 f ...
- Python导入模块-Import
#1语法importimport module1,module2,module3,module4 #2from xx import xx 语句from module import name1,name ...
随机推荐
- nuxt二级路由
耗费了大半天的时间,终于把页面的二级路由配置好了 先看我的目录 如果没有登陆页,根本就不用考虑嵌套路由的问题,主要的menu跳转和<nuxt />可以直接写到layouts/default ...
- 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误
我调这个bug调了一天多,在网上搜索的检查namespace,package等,都没有错.错误提示是没有找到xml文件,我就纳闷了,为什么找不到呢?后来才发现,原来是resource中奇怪的目录为题, ...
- java项目(学习和研究)
java项目就是研究,不断的对项目进行迭代,把产品做的越来越好,就是research. 自己想着做一个java项目把,可以类似牛客网,想好自己的预期产品,在设计的过程中可以不断改进和扩展,在做这个项目 ...
- Spring-Boot 访问Controller时报错可能会是这个坑
报错信息: 代码: @Controller("/index") public class IndexController extends BaseController{ @GetM ...
- itoa()、atoi()、任意进制转换
头文件:<stdlib.h> itoa --功能:将任意类型的数字转换为字符串.在<stdlib.h>中与之有相反功能的函数是atoi. atoi----功 能: 将字符串转换 ...
- CodeForces 733B Parade
B. Parade time limit per test1 second memory limit per test256 megabytes inputstandard input outputs ...
- PAT1018 Public Bike Management【dfs】【最短路】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805489282433024 题意: 给定一个图,一个目的地和每个节 ...
- AARRR 量化感染率
小结: 1. 用户生命周期 2. K因子量化了感染的概率,即一个已经感染了病毒的宿主所能接触到的所有宿主中,会有多少宿主被其传染上病毒. 假设平均每个用户会向20个朋友发出邀请,而平均的转化率为10% ...
- 装饰者模式在JDK和Mybatis中是怎么应用的? java io包
https://mp.weixin.qq.com/s/-bj71dBylRHRqiPorOpVyg 原创: 李立敏 Java识堂 3月10日 有一个卖煎饼的店铺找上了你,希望你能给她们的店铺开发一个收 ...
- Redis入门到高可用(十四)—— bitmap
一.初步认识 二.API 1.setbit 2.getbit 3.bitcount 4.bitop 5.bitpos 三.位图使用 四. 使用经验