1,什么是模块
2,模块的分类
3,如何导入模块或自定义模块
4,常见的系统模块简析 random,math,os,os.path
壹 什么是Python的模块
我们之前在Python解释器上写的Python程序,建立了那么多函数,但是只要退出了解释器,我们定义的变量和函数都消失了;牛顿有句话说的好:要站在巨人的肩膀上;也就是一切都最好不要从零开始;于是乎,Python就提供了一个办法:把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件就被称为模块。
所有的python模块都放在了这个地方,调用和导入第三方模块都是在这里进行的,而且所有的模块文件都是py格式C:\Users\95385\AppData\Local\Programs\Python\Python37\Lib
贰 模块的分类
Python中的模块大致能分为以下几类:
- 系统模块
- 内置模块:已经安装在系统中的C:\Users\95385\AppData\Local\Programs\Python\Python37\Lib这个文件夹里面,用的时候需要导入即可。(builtins模块是默认导入的)
- 第三方模块
- 非官方的模块,在Python界占有重要的一席之地,也是Python社区对于Python语言的不断壮大的显著效果;需要借助工具pip来进行安装导入
- requests # pip install requests
- 自定义模块
- xxx.py 导入到其他的py文件中使用
- project->package->模块
叁 如何导入模块或者是自定义模块
import语句
若想使用模块库里面的源文件,需要在另一个py文件中执行 import 语句
import 模块名[, 模块名2[,... 模块名N]
因为当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。而搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端:
我们所调用的模块其实就是一个程序,模块里面的宗多功能就是程序里的各种事先写好的函数,方便我对门的调用
from ... import 语句
用来导入模块内的某个子模块(也就是模块程序的某个函数)
from 模块名e import 子模块[, 子模块2[, ... 子模块N]]
from ... import * 语句
用来导入模块内的所有子模块(也就是模块程序中的所有函数)
from 模块名 import *
使用别名导入
import 模块名 as 别名
这样再次导入的时候就不用输入那种一大堆一大堆的模块名称了,记也记不住,用个别名多好
肆 常见的系统模块简析
random模块
首先导入模块:
import random
这是一个随机数的模块,模块中有各种方法可以产生多种不同的随机数形式(要注意,凡是用晶体管计算机用时钟或是算法产生的随机数,都是伪随机数)
>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_BuiltinMethodType', '_MethodType', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_inst', '_itertools', '_log', '_os', '_pi', '_random', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>>
有这么多模块......
- random() 返回一个(0,1]之间的随机数
- randint(m, n) 返回[m,n]之间的随机整数
- choice() 从一个序列中随机选择元素
- randrange(x) 随机随机产生一个[0,x)之间的整数
math模块
专门为数学相关专业准备的内置模块,可以方便的调用操作各种数学理论方面的东西;
数学毕竟是万科之宗,所有工科的尽头就是数学,所有文科的尽头就是哲学;数学和哲学的尽头都是神学(逃
>>> import math
>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
>>>
- ceil 只要数值存在小数位,则向上取整
- floor 只要数值存在小数位,则向下取整
- e 自然常数 不要加括号了
- pi 圆周率
- fabs 求绝对值
- fmod 求模(求余数)
- pow 求幂次方
- sqrt 开平方根
os模块
os 模块提供了非常丰富的方法用来处理文件和目录;这里就仅仅介绍几个常用的os模块,先粘贴一个文档,有需要自己去查
>>> import os
>>> 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', '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_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']
>>>
有丶多
- chdir 修改当前工作空间路径
- chmod 修改权限
-
os.chmod(path, mode)
-
- cpu_count 获取当前系统的cpu核数
- getcwd 该属性表示当前路径,注意,获取的是绝对路径
- listdir 遍历得到当前工作空间下的所有文件及文件夹,返回一个列表
- makedirs 创建文件夹,可以级联创建多层
- mkdir 创建文件夹,注意:只能创建一层
- 同上
- remove 删除文件
- 不演示了
- removedirs 删除文件夹,注意,可以多级删除
- rename 重命令 不演示;
- rmdir 删除文件夹,注意,应该只能一级一级删除 不演示了
- scandir 遍历得到当前工作空间下的所有文件及文件夹,返回一个迭代器对象
- sep 返回系统对应的文件分割符
- win10
- kaliLinux(Debian)
- system 该方法可以执行该系统对应的所有终端命令
os.path模块
这个是os的子模块,os.path 主要是用来操作文件的,判断文件是否存在、判断是文件还是文件夹等等,非常适合用于python的系统运维;
调用的时候需要 :
from os import path
- abspath 显示当前目录内文件(文件夹)的相对路径的绝对路径
- basename 一般而言,显示路径对应的文件名称
- exists 判断文件或者文件夹是否存在
- getsize 获取文件的大小 单位是 B 字节
- isdir 判断是否是目录
- isfile 判断是否是文件
- join 拼接路径
- split 分割文件路径