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 分割文件路徑