python基础知识-12-模块的了解
python其他知识目录
1、模块介绍:
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
简单介绍:
如果你从Python解释器退出并再次进入,之前的定义(函数和变量)都会丢失。因此,如果你想编写一个稍长些的程序,最好使用文本编辑器为解释器准备输入并将该文件作为输入运行。这被称作编写 脚本 。随着程序变得越来越长,你或许会想把它拆分成几个文件,以方便维护。你亦或想在不同的程序中使用一个便捷的函数, 而不必把这个函数复制到每一个程序中去。
为支持这些,Python有一种方法可以把定义放在一个文件里,并在脚本或解释器的交互式实例中使用它们。这样的文件被称作 模块 ;模块中的定义可以 导入 到其它模块或者 主 模块(你在顶级和计算器模式下执行的脚本中可以访问的变量集合)。
2、模块类型:
1)内置模块
使用方法 直接import导入使用
在Python的安装目录下是内置模块,比如:C:\python3\Lib
2)第三方模块 https://pypi.org/
使用方法 pip安装使用详解
添加pip环境变量
import sys sys.path.append("C:\python3\Scripts") print(sys.path) ------------------结果: ['D:\\.........., 'C:\\python3\\Scripts']
如下:刚刚pip安装的第三方模块。参考路径:C:\python3\Lib\site-packages
3)自定义模块
创建自定义模块
使用方法
3、模块导入:
3.1模块导入的基本了解:
import 语句
模块的引入
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
import module1[, module2[,... moduleN]]
比如要引用模块 os,就可以在文件最开始的地方用 import os 来引入
import os print(os.path.dirname("c:\mcw_test.py")) --------------------结果: c:\
在调用 os 模块中的函数时,必须这样引用:
模块名.函数名
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
import os print(os.path.dirname("/root/mcw_test.py")) -----------------------结果:、 /root
搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 需要把命令放在脚本的顶端:
3.2模块调用的案例分析
示例一:
有两个文件在同级目录mcw1.py,mokuai.py:
mcw1.py
def func():
print("我是魔降风云变")
示例一:
1) mokuai.pyimport mcw1func() -----------执行结果:func() NameError: name 'func' is not defined2) mokuai.py: import mcw1.func func() -----------执行结果: import mcw1.func ModuleNotFoundError: No module named 'mcw1.func'; 'mcw1' is not a package 3) mokuai.py: import mcw1 mcw1.func() ## 调用模块中的函数,模块.函数() -------------执行结果: 我是魔降风云变
示例二:
mcw1.py: def func():print("我是魔降风云变") func() print("我是mcw1模块里的函数")mokuai.py: import mcw1 mcw1.func() --------------执行调用模块的结果: 我是魔降风云变 我是mcw1模块里的函数 我是魔降风云变#代码分析:结果表明, 导入模块,加载此模块中所有的值到内存。
示例三:
导入非同一个目录下的模块
mcwtest2_dirdir2_file.py mcwtest_dirmcw1.pymokuai.py 正确正确调用方法: 1)导入某个模块里所有函数 import mcwtest_dir.mcw1 mcwtest_dir.mcw1.func() ------------结果: 我是魔降风云变 2)导入模块里单个函数 from mcwtest_dir.mcw1 import func func() ----------结果: 我是魔降风云变 3)导入模块里多个函数,不是所有函数都导入 from mcwtest_dir.mcw1 import func,func2 func() func2() --------------结果: 我是魔降风云变 我是小马过河 4)导入模块里所有函数。可以导入一个py文件里的所有函数,不能导入一个目录里的所有py里的所有函数 from mcwtest_dir.mcw1 import * func() func2() ------------结果; 我是魔降风云变 我是小马过河 5)重新定义函数,因为导入其它模块里的函数是先执行那个函数的,在本文件重新定义func后,覆盖了那个模块下定义的函数 from mcwtest_dir.mcw1 import func def func():print("重新定义func函数") func() -------------结果: 重新定义func函数def func(): #导入放在下面,就覆盖了本文件下定义的同名函数print("重新定义func函数") from mcwtest_dir.mcw1 import func func() --------------结果: 我是魔降风云变 6)如果本文件有定义同名函数,从外面模块导入的同名函数也需要,可以给导入进来的函数加个别名 from mcwtest_dir.mcw1 import func as f def func():print("重新定义func函数") func() f() -------------结果: 重新定义func函数 我是魔降风云变 7)添加文件的父目录到sys.path,父目录已经在sys.path里。导入时可以直接从文件里面导入函数 因为C:\mcw\已经在sys.path里,所有查询模块能找到C:\mcw\mcwtest_dir目录,但是不能找到该目录下的文件,只有将这个文件加入到sys.path里才能查询到这个目录下的文件。 import sys,os sys.path.append("C:\mcw\mcwtest_dir") from mcw1 import func func() ---------------结果; 我是魔降风云变
错误调用方法: 1)在sys.path里找不到这个函数,只能一层一层的找。 mcwtest2_dir\dir2_file.py import mcw1 func() ------结果;import mcw1 ModuleNotFoundError: No module named 'mcw1'2)差上级目录,只有在根目录mcw下才能找到,因为只有mcw在sys.path列表里。 import mcwtest_dir.mcw1 mcw1.func() -----------结果:mcw1.func() NameError: name 'mcw1' is not defined3)差函数名调用func() import mcwtest_dir.mcw1 mcwtest_dir.mcw1() --------------------结果:mcwtest_dir.mcw1() TypeError: 'module' object is not callable 4) 差一层mcw1文件名 import mcwtest_dir.mcw1 mcwtest_dir.func() ----------------结果:mcwtest_dir.func() AttributeError: module 'mcwtest_dir' has no attribute 'func'
导入模块:
import 模块 模块.函数()
from 模块 import 函数 函数() 【as起别名 / *】
from 模块 import 函数 as 别名 别名()
导入的另一个示例:
1) import mcwtest_dir.mcw1 mcwtest_dir.mcw1.func() 2) from mcwtest_dir import mcw1 mcw1.func() 3) from mcwtest_dir.mcw1 import func func() ----------结果: 我是魔降风云变
总结
模块和要执行的py文件在同一目录 且 需要 模块中的很多功能时,推荐用: import 模块 $模块.函数
其他推荐:from 模块 import 模块 $模块.函数()
其他推荐:from 模块.模块 import 函数 $函数()
3.3 sys.path可添加也可删除
import sys print(sys.path[0]) --------结果; C:\mcw\mcwtest2_dirimport sys print(sys.path[0]) sys.path.pop(0) print(sys.path) #sys.path里没有了C:\mcw\mcwtest2_dir,导入模块需要加上目录了。 -----------------结果: C:\mcw\mcwtest2_dir ['C:\\mcw', 'C:\。。。。。\\pycharm_matplotlib_backend']
4、搜索路径
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
import sys print(sys.path) --------------------------结果: [root@xiaoma ~]# python 1.py ['/root', '/usr/lib64/python27.zip', '/usr/lib64/python2.7', '/usr/lib64/python2.7/plat-linux2', '/usr/lib64/python2.7/lib-tk', '/usr/lib64/python2.7/lib-old', '/usr/lib64/python2.7/lib-dynload', '/usr/lib64/python2.7/site-packages', '/usr/lib/python2.7/site-packages', '/usr/lib/python2.7/site-packages/cloud_init-0.7.6-py2.7.egg', '/usr/lib/python2.7/site-packages/itchat-1.3.10-py2.7.egg']import sys print(sys.path) ---------------------结果: ['D:\\aPython_full目录\\小马过河的代码练习', 'C:\\mcw', 'C:\\mcw\\venv\\Scripts\\python36.zip', 'C:\\python3\\DLLs', 'C:\\python3\\lib', 'C:\\python3', 'C:\\mcw\\venv', 'C:\\mcw\\venv\\lib\\site-packages', 'C:\\mcw\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.6.egg', 'C:\\mcw\\venv\\lib\\site-packages\\pip-10.0.1-py3.6.egg', 'C:\\软件安装\\PyCharm 2018.3.5\\helpers\\pycharm_matplotlib_backend']
5、dir()函数
dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。
返回的列表容纳了在一个模块里定义的所有模块,变量和函数。如下一个简单的实例:
6)dir() dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。复制代码 import sys,os print(dir(os)) ----------------结果: ['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_float_times', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']
参考链接:
1)http://www.runoob.com/python/python-modules.html
2)https://docs.python.org/zh-cn/3.7/tutorial/modules.html
转载于:https://www.cnblogs.com/machangwei-8/p/10723974.html
python基础知识-12-模块的了解相关推荐
- Python文件处理os模块介绍 -*- Python基础知识12 -*-
文件处理 打开文件 open file mode encoding 操作文件 读取文档 逐个读取read 逐行读取 文件读取位置 写入文档 write 关闭文件 close with... as... ...
- python基础知识专题 - 模块的打包和发布
分发Python模块 jcLee95 的 CSDN 博客 邮箱 :291148484@163.com CSDN 主页:https://blog.csdn.net/qq_28550263?spm=100 ...
- python语言的单行注释以井号开头_推荐|零基础学习Python基础知识
原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...
- Python基础知识学习笔记——Matplotlib绘图
Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...
- python基础知识-python基础知识(一)
最近花时间整理了一下以前学过的python基础知识,语言最多的是使用. 1.1 开发模式 交互模式:简单的调试或者测试 开发流程 创建以.py结尾的python文件 在python文件中输入打印&qu ...
- Python基础知识笔记
文章目录 Python基础知识 教程:https://www.liaoxuefeng.com/wiki/1016959663602400 内置函数:https://docs.python.org/3/ ...
- 1、Python 基础知识总结
1.Python 简介 Python 是一门简单易学的,面向对象的,解释型的脚本语言,也是一种开源的.可移植性强的.可扩展性强的高级编程语言,常用于科学计算与人工智能.WEB 开发.金融.云计算等领域 ...
- Python基础知识总结
1. Python基础知识 1.1 Python历史 1.1.1 Python起源 Python的作者,Guido von Rossum,荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计 ...
- Python基础知识02
内容供自己学习使用,如有错误之处,请大佬们指正,谢谢! 作者:rookiequ python基础知识02 数据类型 列表(list):可以存放多个元素,并且元素类型可以不同 #可以存放多种数据类型 l ...
- TensorFlow实战之Python基础知识笔记
Python基础知识目录 一.初始Python 1. 解释和编译 2. Python语言特点 3. Python基础语法 二.基础知识 1. 数据类型 2. 常量.变量 3. 运算符 4. 条件语句 ...
最新文章
- 安装黑屏_含能公司黑屏管理助力智能化改造
- MySQL5.7.11免安装版的安装和配置以及解决MYSQL服务无法启动问题
- EditText 中文文档
- Python学习-字符编码的理解
- 第二讲、Linux的系统安装
- 操作系统时间片轮换_操作系统 时间片轮转法
- [SinGuLaRiTy] 二分图匈牙利算法
- Timus 1079. Maximum
- android下载模块封装,AndroidStudio 3.0 NDK开发2-AAR模块封装
- Code UI Automation脱离VS黑盒自动化测试工具编写
- Mercurial使用简单介绍zz
- git 配置beyond compare
- 冲突符号_冲突营销关键词连载(二) 冲突
- 修改PyCharm主题、字体大小、汉化PyCharm、安装translation翻译插件
- 【使用指南】ComponentOne Enterprise .NET开发控件集
- java publisher_Combine -- 常见的 Publisher 及 Operator
- 关于U盘烧录iso问题
- 思齐什么意思_思齐的寓意
- python 抽奖器_如何基于python实现年会抽奖工具
- win10强效杀毒去捆绑
热门文章
- 英语语法笔记Day7——并列主从句
- window10 无法使用内置管理员账户打开sticky notes 解决方法
- Axure-产品交互设计师的利器
- CImage::Loda 方法加载图片失败,因为vs2013中该方法不支持中文变量
- HTML5 2D平台游戏开发#9蓄力技
- 考考你、智商题 小明借爸爸500元 又借妈妈500元 买双鞋 970元 还剩30元 还给爸爸10元...
- Vue消息列表已读/未读状态实时更新及数据更新set()用法
- html5 360度图像查看,HTML5 Canvas实现360度全景图
- 3dmax怎么渲染全景图,如何使用vray渲染制作360度全景图?
- 交互式电子白板与计算机通过什么链接,交互式电子白板的作用详细介绍