在 python 官網(wǎng)下載 Gzipped source tar ball, 解壓縮后, 會發(fā)現(xiàn) Lib/os.py 文件這行代碼
創(chuàng)新互聯(lián)公司專注于長安企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站,商城網(wǎng)站建設(shè)。長安網(wǎng)站建設(shè)公司,為長安等地區(qū)提供建站服務(wù)。全流程按需制作網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
from posix import *
可是沒有文件叫 posix.py 啊, 到底在那 ? 其實 posix module 是 builtin 的其中一分子,如下示范:
import sys
print sys.builtin_module_names
(*__builtin__*, *__main__*, *_ast*, *_codecs*, *_sre*, *_symtable*, *_warnings*, *_weakref*, *errno*, *exceptions*, *gc*, *imp*, *marshal*, *posix*, *pwd*, *signal*, *sys*, *thread*, *zipimport*)
所以要去 Modules 目錄查找 c 代碼, 你會看見 posixmodule.c, 打開它看見這行代碼:
{"listdir", posix_listdir, METH_VARARGS, posix_listdir__doc__},
再尋找上面所得到的 posix_listdir method, 可以找到 listdir 源代碼:
static PyObject *
posix_listdir(PyObject *self, PyObject *args)
{
/* XXX Should redo this putting the (now four) versions of opendir
in separate files instead of having them all here... */
#if defined(MS_WINDOWS) !defined(HAVE_OPENDIR)
PyObject *d, *v;
HANDLE hFindFile;
BOOL result;
它是內(nèi)置函數(shù)。build-in,應(yīng)該是C語言的。用的應(yīng)該是 c的library
在python2.73.源碼中
有這樣一句。pymath.h:extern double round(double);
在pymath.c中定義如下:
#ifndef HAVE_ROUND
double
round(double x)
{
double absx, y;
absx = fabs(x);
y = floor(absx);
if (absx - y = 0.5)
y += 1.0;
return copysign(y, x);
}
眾所周知,Python內(nèi)建了許多函數(shù)模塊,并且我們可能還會安裝許多第三方模塊等等。
下面以getpass為例查看其源代碼。
1.help(getpass)
輸入該命令找到file路徑,并且可以查看其其提供的功能。
2.利用getpass.__file__查看位置
最后找到該文件,用記事本或其他編輯器打開即可。
3.PyCharm編輯器
在該類或方法上按住“ctr+鼠標左鍵”可以快速查看源代碼。
4.dir(對象名)
該方法可以快速查看有哪些方法。
想要查看每個功能的解釋,用help(type(對象名))?
python學習網(wǎng),大量的免費python視頻教程,歡迎在線學習!
pip?install?ipython
ipython
一般來說這樣就能看到源代碼了,不過numpy好像比較特殊,可以參考如下方法:
安裝pipenv,
用pipenv打開numpy源碼
$?pipenv?--three
$?python3.6?-c?"from?pathlib?import?Path;fn='Pipfile';Path(fn).write_text(Path(fn).read_text().replace('pypi.org',?'mirrors.aliyun.com/pypi'))"
$?pipenv?shell
$?pipenv?install?numpy
$?pipenv?open?numpy
python 所有版本的源代碼可以在這里下載到:
python沒有像matlab那樣的函數(shù)可以直接查看某個函數(shù)的源代碼,只有去下載整個源代碼查看了,不過找起來應(yīng)該也不難,另外你也可以寫一個小程序來查看對應(yīng)函數(shù)的源代碼。
Python的函數(shù)調(diào)用方式是通過import來調(diào)用的對應(yīng)的py文件。
庫函數(shù)有內(nèi)建函數(shù)build_in(會寫python的時候已經(jīng)可以不用看了,不會寫的時候看也看不懂),和通過pip直接下載或者github上下載再安裝的函數(shù)。本質(zhì)上都是py文件。后者有時候由于環(huán)境的不同需要自行修改(這種情況較少),一般在安裝路徑下"\Lib\site-packages"文件夾中存在。
學習庫函數(shù)最好的方法是看網(wǎng)上官方的幫助文檔,此外還可以通過python自帶的dir()方法查看所有的屬性和方法,或者用help()方法查看幫助文檔(部分別人造的輪子不一定有)。
另外推薦使用ipython,Python創(chuàng)始人之一的成員編寫的交互式系統(tǒng)。
代碼:
defnot_empty(s):
returnsandlen(s。strip())0
#returnsands。strip()
#如果直接單寫s。strip()那么s如果是None,會報錯,因為None沒有strip方法。
#如果s是None,那么Noneand任何值都是False,直接返回false
#如果s非None,那么判定s。trip()是否為空。
這樣子filter能過濾到None,"",""這樣的值。
分成兩部分看。第一部分是對長度進行序列。相當于就是range(5)他的結(jié)果就是。01234。第二部分就是具體的排序規(guī)則。
排序規(guī)則是用nums的值進行排序,reverse沒申明就是默認升序。就是用nums(0到4)的值進行排序,根據(jù)這個結(jié)果返回的一個range(5)的數(shù)組。
PEP的規(guī)定:
必須使用4個空格來表示每級縮進。使用Tab字符和其它數(shù)目的空格雖然都可以編譯通過,但不符合編碼規(guī)范。支持Tab字符和其它數(shù)目的空格僅僅是為兼容很舊的的Python程序和某些有問題的編輯程序。
Python的函數(shù)支持遞歸、默認參數(shù)值、可變參數(shù),但不支持函數(shù)重載。為了增強代碼的可讀性,可以在函數(shù)后書寫“文檔字符串”(Documentation Strings,或者簡稱docstrings)。
用于解釋函數(shù)的作用、參數(shù)的類型與意義、返回值類型與取值范圍等。可以使用內(nèi)置函數(shù)help()打印出函數(shù)的使用幫助。
文章題目:python函數(shù)的源代碼 Python函數(shù)代碼
文章出自:http://www.rwnh.cn/article26/hhgsjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計、網(wǎng)站收錄、微信小程序、虛擬主機、ChatGPT、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)