python的內(nèi)置函數(shù)(68個(gè))
10年積累的網(wǎng)站設(shè)計(jì)、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有沙縣免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
Python考核31個(gè)內(nèi)置函數(shù),
python內(nèi)置了很多內(nèi)置函數(shù)、類(lèi)方法屬性及各種模塊。當(dāng)我們想要當(dāng)我們想要了解某種類(lèi)型有哪些屬性方法以及每種方法該怎么使用時(shí),我們可以使用dir()函數(shù)和help()函數(shù)在python idle交互式模式下獲得我們想要的信息。
? dir()函數(shù)獲得對(duì)象中可用屬性的列表
Python中的關(guān)鍵詞有哪些?
dir(__builtins__):查看python內(nèi)置函數(shù)
help(‘keywords‘):查看python關(guān)鍵詞
如微分積分方程的求解程序、訪問(wèn)互聯(lián)網(wǎng)、獲取日期和時(shí)間、機(jī)器學(xué)習(xí)算法等。這些程序往往被收入程序庫(kù)中,構(gòu)成程序庫(kù)。
只有經(jīng)過(guò)嚴(yán)格檢驗(yàn)的程序才能放在程序庫(kù)里。檢驗(yàn),就是對(duì)程序作充分的測(cè)試。通常進(jìn)行的有正確性測(cè)試、精度測(cè)試、速度測(cè)試、邊界條件和出錯(cuò)狀態(tài)的測(cè)試。經(jīng)過(guò)檢驗(yàn)的程序不但能保證計(jì)算結(jié)果的正確性,而且對(duì)錯(cuò)誤調(diào)用也能作出反應(yīng)。程序庫(kù)中的程序都是規(guī)范化的。所謂規(guī)范化有三重含義:①同一庫(kù)里所有程序的格式是統(tǒng)一的;② 對(duì)這些程序的調(diào)用方法是相同的;③ 每個(gè)程序所需參數(shù)的數(shù)目、順序和類(lèi)型都是嚴(yán)格規(guī)定好的。
Python的庫(kù)包含標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)
標(biāo)準(zhǔn)庫(kù):程序語(yǔ)言自身?yè)碛械膸?kù),可以直接使用。help('modules')
第三方庫(kù):第三方者使用該語(yǔ)言提供的程序庫(kù)。
標(biāo)準(zhǔn)庫(kù): turtle 庫(kù)(必選)、 random 庫(kù)(必選)、 time 庫(kù)(可選)。
? turtle 庫(kù):圖形繪制庫(kù)
原理如同控制一只海龜,以不同的方向和速度進(jìn)行位移而得到其運(yùn)動(dòng)軌跡。
使用模塊的幫助時(shí),需要先將模塊導(dǎo)入。
例如:在IDLE中輸入import turtle
dir(turtle)
help(turtle.**)
1.畫(huà)布
畫(huà)布就是turtle為我們展開(kāi)用于繪圖區(qū)域, 我們可以設(shè)置它的大小和初始位置。
setup()方法用于初始化畫(huà)布窗口大小和位置,參數(shù)包括畫(huà)布窗口寬、畫(huà)布窗口高、窗口在屏幕的水平起始位置和窗口在屏幕的垂直起始位置。
參數(shù):width, height: 輸入寬和高為整數(shù)時(shí),表示 像素 ;為小數(shù)時(shí),表示占據(jù)電腦屏幕的比例。(startx,starty):這一坐標(biāo)表示
矩形窗口左上角頂點(diǎn)的位置,如果為空,則窗口位于屏幕中心:
例如:setup(640,480,300,300)表示在桌面屏幕(300,300)位置開(kāi)始創(chuàng)建640×480大小的畫(huà)布窗體。
2、畫(huà)筆
? color() 用于設(shè)置或返回畫(huà)筆顏色和填充顏色。
例如:color(‘red’)將顏色設(shè)為紅色,也可用fillcolor()方法設(shè)置或返回填充顏色,或用pencolor()方法設(shè)置或返回筆觸顏色。
不同的編程語(yǔ)言,會(huì)有不同 的緩存策略,例如,通過(guò)哈希映射、優(yōu)先級(jí)隊(duì)列等實(shí)現(xiàn)緩存。因此,不同的編程語(yǔ)言,在緩存的解決方案方面具有很大差異,可能需要幾分鐘,也可能需要幾小時(shí)。
但是,在Python中,標(biāo)準(zhǔn)工具包functools實(shí)現(xiàn)了一種名為L(zhǎng)RU(Least Recently Used)的緩存策略,可以通過(guò)傳入?yún)?shù),來(lái)設(shè)定緩存最近多少次的計(jì)算結(jié)果,如果傳入?yún)?shù)為None,那么則不緩存。
1. PIL.Image.open
代碼在這里:Pillow/Image.py at 3.1.x · python-pillow/Pillow · GitHub
open() 函數(shù)打開(kāi)圖像,但并不讀入,直到有操作發(fā)生。
具體的讀取操作是在 ImageFile.py 寫(xiě)的。大體流程是先檢測(cè)文件類(lèi)型,整塊地讀入文件內(nèi)容,然后調(diào)用解碼器解碼,做了很多優(yōu)化,效率應(yīng)該還是很高的。
2. scipy.ndimage.imread
代碼在這里:scipy/io.py at v0.17.1 · scipy/scipy · GitHub
imread 調(diào)用 scipy.misc.pilutil.imread。從名字就能看出來(lái)其實(shí)調(diào)用的還是 Pillow。
根據(jù) pilutil 代碼:scipy/pilutil.py at v0.17.1 · scipy/scipy · GitHub
確實(shí)是調(diào)用 pil.image.open(),然后返回一個(gè) fromimage()。
3. scipy.misc.imread
misc 的 __init__.py 在這里:scipy/__init__.py at v0.17.1 · scipy/scipy · GitHub
調(diào)用的還是 pilutil 中的 imread
相關(guān)代碼如下
try:
from .pilutil import *
from . import pilutil
__all__ += pilutil.__all__
del pilutil
except ImportError:
pass
也算是學(xué)了一招,從 pilutil 導(dǎo)入其所有函數(shù)添加到當(dāng)前空間,然后又刪除了 pilutil 消除影響。
4. skimage.io.imread
代碼在這里:scikit-image/_io.py at master · scikit-image/scikit-image · GitHub
是通過(guò)插件 plugin 來(lái)讀入不同的文件,而且會(huì)試用幾個(gè)不同的 plugins 來(lái)找到合適的。
使用 call_plugin 來(lái)調(diào)用,代碼在這里:scikit-image/manage_plugins.py at master · scikit-image/scikit-image · GitHub
可以根據(jù)如下代碼查看插件調(diào)用的優(yōu)先級(jí)
# For each plugin type, default to the first available plugin as defined by
# the following preferences.
preferred_plugins = {
# Default plugins for all types (overridden by specific types below).
'all': ['pil', 'matplotlib', 'qt', 'freeimage'],
'imshow': ['matplotlib'],
'imshow_collection': ['matplotlib']
}
plugins 的源代碼在這里:scikit-image/skimage/io/_plugins at master · scikit-image/scikit-image · GitHub??梢钥吹?pil 的 imread,是用 open 打開(kāi)圖像之后,再轉(zhuǎn)換成 ndarray。
5. cv2.imread
這里是調(diào)用的 CV::imread(),代碼在這里:opencv/loadsave.cpp at master · opencv/opencv · GitHub。一般來(lái)說(shuō) C\C++ 的實(shí)現(xiàn),應(yīng)該比 python 速度快一點(diǎn)。
6. matplotlib.image.imread
matplotlib 的文檔里面說(shuō),matplotlib 原生只可以讀取 PNG 文件,有 PIL 的時(shí)候,可以讀取其他類(lèi)型的文件。如果使用 URL 打開(kāi)在線(xiàn)圖像文件,需要符合 PIL 的文檔要求。
matplotlib.image.imread 的代碼在這里:matplotlib/image.py at master · matplotlib/matplotlib · GitHub。matplotlib 的原生 PNG 讀取和寫(xiě)入,是用 C 實(shí)現(xiàn)的,代碼在這里:matplotlib/_png.cpp at master · matplotlib/matplotlib · GitHub。
matplotlib 是先用 pil 的 open 打開(kāi)圖像,如果格式是 png,就用原生方法打開(kāi)。相關(guān)代碼如下:
handlers = {'png': _png.read_png, }
if format is None:
if cbook.is_string_like(fname):
parsed = urlparse(fname)
# If the string is a URL, assume png
if len(parsed.scheme) 1:
ext = 'png'
else:
basename, ext = os.path.splitext(fname)
ext = ext.lower()[1:]
elif hasattr(fname, 'name'):
basename, ext = os.path.splitext(fname.name)
ext = ext.lower()[1:]
else:
ext = 'png'
else:
ext = format
if ext not in handlers:
im = pilread(fname)
if im is None:
raise ValueError('Only know how to handle extensions: %s; '
'with Pillow installed matplotlib can handle '
'more images' % list(six.iterkeys(handlers)))
return im
聲明的處理器只有 png。如果是 png 文件,調(diào)用 _png.read_png。如果不是 png 直接使用 pilread(就是用 pil 的 Image.open 然后 pil_to_array)。
matplotlib 的源碼確實(shí)比較復(fù)雜,一大部分主體是用 C 寫(xiě)的,改動(dòng)很激進(jìn),功能更新猛烈。
可以使用多進(jìn)程或多線(xiàn)程并發(fā)下載。其實(shí)你的方法已經(jīng)是多進(jìn)程的一種了。
python中有多進(jìn)程模塊multiprocessing和多線(xiàn)程multithreading。
思路是這樣,將需要下載的連接送入隊(duì)列,然后各個(gè)進(jìn)程(或線(xiàn)程)從隊(duì)列里拿任務(wù)然后下載。前面的兩個(gè)類(lèi)庫(kù)都提供進(jìn)程、線(xiàn)程安全的隊(duì)列。
樓下給了個(gè)多線(xiàn)程的示例,這里我給一個(gè)稍微復(fù)雜點(diǎn)的進(jìn)程的示例。其實(shí)線(xiàn)程和進(jìn)程庫(kù)的接口基本是一致的。
#!/usr/bin/env?python
#?encoding=utf-8
#?test.py
from?multiprocessing?import?Queue,?Process
from?Queue?import?Empty
import?urllib
import?time
urls?=?[line.strip()?for?line?in?open('urls.txt')]
queue?=?Queue(1024)
for?url?in?urls:
queue.put(url)
def?download():
while?True:
try:
url?=?queue.get()
f?=?urllib.urlopen(url)
r?=?f.read()
#?這里保存你下載的文件
except?Empty:
time.sleep(5)
except?Exception,?e:
print?'download?error:?%s'?%?e
for?i?in?range(10):
p?=?Process(target=download)
p.start()
p.join()
使用方法:編輯一個(gè)文件urls.txt,每行一個(gè)url。然后:
nohup?./test.py?
結(jié)束進(jìn)程則需要找到它的進(jìn)程號(hào),然后kill -9
望采納,謝謝支持!
當(dāng)前題目:python速度函數(shù),Python快速
網(wǎng)站鏈接:http://muchs.cn/article12/phgsdc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、建站公司、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、ChatGPT、微信小程序
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)