Python进阶(八)----模块,import , from import 和 `__name__`的使用
Python进阶(八)----模块,import , from import 和 __name__的使用
一丶模块的初识
#### 什么是模块:
# 模块就是一个py文件(这个模块存放很多相似的功能,函数的集合体)
### 模块的分类:
# 内置模块: 标准库 ,python解释器自带的 ,200多种
# 第三方库: 通过pip install 安装第三方库 6000个
# 自己写的模块: 自己编写的特定功能的py文件
#### 自定义模块:
# 只是第一次引用时, 将此模块加载到内存,
# 执行文件: 被引用文件
二丶模块的导入 import
### 语法 : import 模块名 , 只加载一次(导入就不会再次加载)
### 调用格式 : 模块名 . XX功能
### 引用模块发送三件事:
#1. 把要引入模块加载到内存
#2. 在内存中创建一个以引入模块命名的名称空间
#3. 通过引入模块的名字,以.的方式引入此模块的(变量,函数,类名)
###注意:
# 通过import引入的模块,引入模块中的变量不会受到,当前模块相同名字的变量的影响
# 通过import 引入的模块, 他有自己的独立空间,与当前执行的文件没有关系.
### 起别名: import ...模块 as ...缩写名
# 将一个名字较长的模块名 简化成一个 简单名字
import tbjx as k
print(k.name)
### 同时调用多个模块 ,以,号分隔 (不建议使用, 会使代码清晰,不易维护)
import 模块1, 模块2 ,模块3
三丶from import
### 语法格式: from xxx模块 import 变量 , 只加载一次
from tbjx import func1
print(globals()) # 查看当前文件中的变量, 把需要用的具体变量,从引入模块拷贝一份.
### 特点:
# 优点: 使用起来方便 (更容易快速找到指定的要使用的 功能 )
# 缺点: 容易与当前执行文件产生覆盖效果(如果当前执行的文件中具有和导入的模块 相同名字的变量就会被覆盖.谁先加载,谁先被覆盖)
### 注意: (极端情况,一般没人这么折腾自己)
# 需求: 在引入一个模块的之后,去执行这个模块的中修改模块的某个变量的值. 不会对当前执行文件造成影响.
# 当前执行文件使用的是模块中同一个函数.(只有模块中的变量会被拷贝当前执行文件, 模块中的函数不会被拷贝)
# 引用模块中的函数,如果此模块用到一些变量,这些变量还是从此模块中寻找,不会改变当前执行文件的变量
### 起别名
from tbjx import name as n
##多个导入:
from tbjx import name as n
from tbjx import read1 as r
### * (尽量别用)
from xxx模块 import *
# 全部复制(模块中所有的都被全部加载到内存中), 效率低, 容易覆盖
# from .. import * 与__all__配合使用
# 在引入模块的文件中,创建一个列表 __all__=[变量1,变量2,函数名1,函数名2] 一般写在引入模块最上面
#####推荐:
# 当前执行的文件中 ,不要出现 与 引入模块相同的名字的变量.
四丶模块路径 和 "__name__"的使用
### __name__ 的使用 ,判断当前文件是可执行的脚本,还是模块
# 1. py文件的第一个功能: 执行文件(承载代码)脚本(主动) ,直接打印(__name___)得到__main__
# 2. py文件的第二个功能: 模块(被执行) 直接打印(__name___)得到 模块名
# 补充:
#1.使用pycharm是,点击run 一个.py的文件,(文件包括
Python进阶(八)----模块,import , from import 和 `__name__`的使用的更多相关文章
- Python进阶----pymysql模块的使用,单表查询
Python进阶----pymysql模块的使用,单表查询 一丶使用pymysql 1.下载pymysql包: pip3 install pymysql 2.编写代码 ...
- Python进阶之模块
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很 ...
- Python进阶--常用模块
一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...
- Python进阶之模块与包
模块 .note-content {font-family: "Helvetica Neue",Arial,"Hiragino Sans GB","S ...
- Python基础(八) 模块的引入与定义
模块定义 什么是模块:一个py文件就是一个模块 模块分为三类: 内置模块,(标准库):.python解释器自带的,time,os,sys,等等.200多种. 自定义模块:自己写的模块 第三方库(模块) ...
- Python 进阶_模块 & 包
目录 目录 模块的搜索路径和路径搜索 搜索路径 命名空间和变量作用域的比较 变量名的查找覆盖 导入模块 import 语句 from-import 语句 扩展的 import 语句 as 自动载入模块 ...
- Python进阶03 模块
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们之前看到了函数和对象.从本质上来说,它们都是为了更好的组织已经有的程序,以方便 ...
- python进阶----logging模块
在工作中经常要打印一些日志,下面介绍一下python中的logging模块 首先,先了解一下日志的级别,主要分为以下5种: debug 最低级别,一般开发用来打印一些调试信息 info ...
- python进阶八_警告和异常
心情有点纠结,怎么说呢,倒不是由于其它学习上的事情,反而是由于生活上狗血的剧情逼着人偏离,渐行渐远,人跟人之间有误会也是正常的,可能是由于交流不够,彼此不够了解吧,希望能尽快度过这一段纠结的日子,简单 ...
随机推荐
- mybatis在sql中的CDATA区
示例 <if test="startTime != null"> <![CDATA[ AND rra.create_time >= #{startTime} ...
- Tocmat 统计tomcat进程内的线程数
获取tomcat进程pid ps -ef | grep tomcat 统计该tomcat进程内的线程个数 ps -Lf 558899 | wc -l
- mybatis查询mysql的datetime类型数据时间差了14小时
场景: 数据库字段: mybatis使用 now() 生成时间. 结果: 使用mybatis查询mysql中的数据时,所有时间都比数据库时间多了14小时,考虑了一下,初步判定是系统时区的问题.因为my ...
- Java12新特性 -- 增强G1,自动返回未用堆内存给操作系统
Java 12 中增强了 G1 垃圾收集器关于混合收集集合的处理策略,这节主要介绍在 Java 12 中同时也对 G1垃圾回收器进行了改进,使其能够在空闲时自动将 Java 堆内存返还给操作系统,这也 ...
- beetl模版for循环渲染字符串
beetl for循环渲染html字符串的方式, beetl if条件判断输出, beet自定义标签和标签引用, beetl html赋值, beetl渲染json,beetl注释.变量定义, 更多文 ...
- ros 源码安装
版本lunar, 系统版本debian 9.8 参考: http://wiki.ros.org/lunar/Installation/Source 1. Installing bootstrap de ...
- ETF:现金替代标志
替代标志.表示该成份证券是否可被现金替代 0 – 沪市不可被替代 1 – 沪市可以被替代 2 – 沪市必须被替代 3 – 深市退补现金替代 4 – 深市必须现金替代 5 – 非沪深市场成分证券退补现金 ...
- iperf—流量测试
iperf是另外一款用于流量测试的软件,主要运行于Windows系统和安卓系统的手机/PAD(IOS系统下载需要收费). 一个工作在Server模式,另外一个工作在Client模式,输入Server的 ...
- SpringBoot示例教程(一)MySQL与Mybatis基础用法
示例需求 在Springboot2框架中,使用Mysql和Mybatis功能:1. Mysql+Datasource集成2. Mybatis+XML用法详解 数据库准备 采用了Oracle中的scot ...
- 读Secrets of the JavaScript Ninja(二)对象
面向对象和原型 理解原型 在JavaScript中,可通过原型实现继承.原型的概念很简单.每个对象都含有原型的引用,当查找属性时,若对象本身不具有该属性,则会查找原型上是否有该属性. 每个对象都可以有 ...