模块
时间:2019-10-24
本文章向大家介绍模块,主要包括模块使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
模块
什么是模块
- 本质就是一个.py文件
- 一个py文件就是一个模块。
- python封装语句的最小单位:模块(py文件)
- 模块不宜过大(1000行~2000行)
- 自定义模块:实际上就是.py
模块的成员
- 模块的成员:(可执行语句,不立即执行语句)模块中的变量,for循环,if结构,函数定义
- 可执行语句,不立即执行语句
- 可执行语句:定义变量。函数调用。循环语句。if条件判断。
- 不立即执行:函数定义
- 模块的运行方式:
- 脚本方式:(直接用解释器执行,pycharm中run运行)
- 模块方式:被其他的模块导入执行。为导入它的模块提供资源。(函数定义。变量。类定义等..。)
#模块的导入
- 自定义被其他模块导入时,其中的可执行语句会立即执行。
python中怎么判断自定义模块属于开发阶段还是使用阶段
__name__ 方法:
如果是以脚本方式运行:固定字符串'__main__'
如果是以导入方式运行:__name__所处模块的名字
系统在导入模块时的路径问题
- 内存中:如果之前成功导入过某个模块,直接使用已经存在的模块。
- 内置路径中:安装路径下:Lib
- PYTHONPATH:import 时候寻找模块的路径
- sys.path:用C语言集成在解释器。是一个路径的列表。
- 总结:如果都找不到,就报错
- 动态修改sys.path
sys.path
- 添加需要添加模块的路径到sys.path
- sys.path.append(r'F:\\PyCharms wenjian\\day15\\a')
- 使用相对位置添加路径(——file——)
- 使用os模块找到一个路径的父路径(os.path.dirname)
#导入模块的多种方式。
- import xxx (xxx模块名) 导入一个模块的所有成员
- import XXX,XXX (XX多个模块名) 导入多个模块的成员(不推荐使用)(os,sys 可以考虑一起写)
- from XXX import a (从XX导入a)从某地方(xxx)导入指定的a
- from xxx import a,b,c 从某地方(xxx)导入多个a,b,c
- from xxx import * 从某地方导入全部成员
- import xxx 与form xxx import * 区别:
- import xxx:使用其中成员 必须使用模块名作为前缀。不容易产生命名冲突
- form xxx import * : 无需指定模块名作为前缀。直接使用成员名即可(容易产生命名冲突,在后定义的成员生效。)
- 怎么解决命名冲突问题:
- 改用import 方式。
- 使用别名解决冲突。
- 自己避免使用重名名称
使用别名(alias)
- 给成员起别名,为了避免名称冲突:
- from d15上课 import a as aaa
- 给模块写别名,简化书写
- import d15上课 as aa
print(aa.a)
导入模块所有成员
form 模块名 import *
__all__
-__all__ 是一个列表,用于表示本模块可以被外界使用的成员。元素是成员名的字符串。(控制可以使用的成员)
-__all__ 放置在定义模块中(表示该模块可以被调用的元素名)(使用字符串形式书写)
__all__=['a1',"a2"]
相对导入
- 在同一个文件夹(项目)下的两个模块,将一个模块导入另一个模块。(相对导入)
- 相对路径(。表示当前路径 ..上级路径)
原文地址:https://www.cnblogs.com/luyi84895838/p/11731401.html
- 奇数分频
- Nginx log error:client sent invalid userid cookie
- Shell 参数扩展及各类括号在 Shell 编程中的应用
- linux 系统监控、诊断工具之 IO wait
- 关于 MySQL UTF8 编码下生僻字符插入失败/假死问题的分析
- Windows用户自查:微软紧急更新修复Meltdown和Spectre CPU漏洞
- rsync error: protocol incompatibility / mismatch
- 玩转 SHELL 脚本之:Shell 命令 Buffer 知多少?
- 使用实体嵌入的结构化数据进行深度学习
- CoffeeMiner:劫持WiFi网络接入设备进行“挖矿”的框架
- 数码管显示电路的Verilog HDL 实现
- 超前进位加法器
- 使用腾讯云“自定义监控”监控 GPU 使用率
- 非整数分频模块
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法