Python
中提供了一個方法能夠從文件中獲取定義,在腳本或者解釋器的一個交互式實例中使用, 這樣的文件被稱爲模塊;__name__
獲得下面是一個使用python
標準庫中模塊的例子python
import sys
print('命令行參數以下:')
for i in sys.argv:
print(i)
print('\n\nPython 路徑爲:', sys.path, '\n')
# 輸出結果以下
命令行參數以下:
../GitHub/PythonDemo/PythonStudy/7-模塊/1-模塊概述.py
Python 路徑爲: ['/Users/../GitHub/PythonDemo/PythonStudy/7-模塊', '/Users/../GitHub/PythonDemo/PythonStudy', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages', '/Applications/PyCharm.app/Contents/helpers/pycharm_matplotlib_backend']
複製代碼
argv
: 獲取命令行參數的列表import sys
引入python
標準庫中的sys.py
模塊import
: 這是引入一個模塊的方法(後面會提到)sys.path
: 包含了一個Python
解釋器自動查找所需模塊的路徑的列表Python
中不但可使用第三方模塊和系統模塊, 同時咱們還可使用自定義模塊,Python
中一個.py
文件就是一個模塊Titan.py
模塊, 代碼以下print('這是Titan模塊')
# 定義變量
age = 20
name = 'titan'
# 定義方法
def sayGood():
print('good')
def sayNice():
print('nice')
def sayBad():
print('bad')
複製代碼
import
方式在Python
中導入另外一個文件或者模塊, 受用的語法是import
git
# 引入單個或多個模塊
import module1[, module2[,... moduleN]
# 示例
# 一次導入多個模塊
import time, random, os
# 一次導入一個模塊
import calendar
複製代碼
須要注意的是: github
import
, 能夠防止模塊被重複引用.py
後綴import
語句的時候,Python
解釋器是怎樣找到對應的文件的呢?
Python
的搜索路徑,搜索路徑是由一系列目錄名組成的,Python
解釋器就依次從這些目錄中去尋找所引入的模塊。Python
編譯或安裝的時候肯定的,安裝新的庫應該也會修改。搜索路徑被存儲在sys
模塊中的path
變量使用示例app
import Titan
Titan.sayBad()
Titan.sayGood()
print(Titan.name)
# 輸出結果:
bad
good
titan
複製代碼
from…import
方式從模塊中導入一個指定的部分到當前的命名空間, 一樣也能夠導入一個模塊中的多個部分(或者導入多個方法或變量), 格式以下:dom
from modname import name1[, name2[, ... nameN]]
複製代碼
使用示例函數
from Titan import sayGood, sayBad, age
sayBad()
sayGood()
print(age)
# 輸出結果:
bad
good
20
複製代碼
須要注意的是:ui
from…import*
方式把一個模塊中全部的內容, 所有倒入當前命名空間, 可是最好不要過多地使用spa
# 格式:
from modname import *
# 使用:
from Titan import *
sayGood()
print(age)
複製代碼
__name__
屬性.py
文件, 一個模塊唄另外一個程序引用, 模塊中的一些可執行語句便會執行__name__
屬性來使程序僅調用模塊中的一部分if __name__ == '__main__':
print('這是Titan模塊')
else:
def sayGood():
print('good')
def sayNice():
print('nice')
def sayBad():
print('bad')
age = 20
name = 'titan'
複製代碼
name
和main
先後都是雙下劃線__name__
屬性, 當其值等於__main__
時, 代表該模塊自身在執行, 不然被引入了其餘文件__name__
屬性的值爲__main__
dir()
函數dir()
能夠找到模塊內定義的全部名稱, 以一個字符串列表的形式返回dir()
函數會羅列出當前定義的全部名稱import Titan
print(dir(Titan))
# 輸出結果:
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'age', 'name', 'sayBad', 'sayGood', 'sayNice']
print(dir())
# 輸出結果:
['Titan', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
# 這裏定義一個新的變量
sum = 30
print(dir())
# 輸出結果:
['Titan', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'sum']
# 把定義的變量刪除後
del sum
print(dir())
# 輸出結果:
['Titan', '__annotations__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
複製代碼
這裏咱們先思考這樣一個問題: 在同一個項目中有兩個或兩個以上的開發者分別定義了相同名字的模塊(固然獅子啊不一樣的目錄中, 同一個目錄下不可能建立出相同名字的文件), 那麼模塊該如何調用命令行
解決code
Python
模塊命名空間的形式,採用"點模塊名稱"A.B
的模塊表示了名爲A
的包中名爲B
的子模塊須要注意的是:
在每個包內(模塊的同級目錄下)必需要建立一個名爲__init__.py
的文件, 主要是爲了不一些濫竽充數的名字, 目前該文件內能夠什麼都不用寫, 如圖所示:
調用方法
import a.Titan
import b.Titan
import b.coder
a.Titan.sayGood()
b.Titan.sayGood()
b.coder.sayGood()
# 輸出結果:
good--a
good--b
good--coder
複製代碼
pip
簡介Python
中第三方庫是經過pip
安裝和管理的, pip
就像iOS
中的pod
同樣, 負責安裝和管理第三方庫Mac
和Linux
系統中pip
是默認安裝過的, 通常無需從新安裝, 若有問題, 請自行百度解決Mac
系統中會有一個默認的Python2.7
版本的, 我本身安裝了一個3.6的版本, 天然默認也安裝了pip
Python3.6
中pip
的命令, 這裏須要以pip3
爲命令頭執行# 查看當前pip版本
pip3 -V
# 安裝第三方庫
pip3 install ...
# 對pip進行升級
pip3 install --upgrade pip3
複製代碼
Mac
系統安裝第三方庫, 直接打開終端執行安裝命令便可Pillow
已是Python
平臺事實上的圖像處理標準庫了PIL
功能很是強大,但API
卻很是簡單易用pip3 install Pillow
複製代碼
下面是最多見的圖像縮放操做示例代碼
from PIL import Image
# 打開一個jpg圖像文件,注意是當前路徑:
im = Image.open('titan.jpg')
# 得到圖像尺寸
w, h = im.size
print('image size: %sx%s' % (w, h))
# 縮放到50%:
im.thumbnail((w//2, h//2))
print('image to: %sx%s' % (w//2, h//2))
# 把縮放後的圖像用jpeg格式保存:
im.save('jun.jpg', 'jpeg')
複製代碼
其餘功能如切片、旋轉、濾鏡、輸出文字、調色板等包羅萬象, 代碼以下:
from PIL import Image, ImageFilter
# 打開一個jpg圖像文件,注意是當前路徑:
im = Image.open('jun.jpg')
# 應用模糊濾鏡:
im2 = im.filter(ImageFilter.BLUR)
im2.save('jun1.jpg', 'jpeg')
複製代碼
相關參考