西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

面向?qū)ο缶幊棠_本(Python)

v3.8.3官方版
  • 面向?qū)ο缶幊棠_本(Python)v3.8.3官方版
  • 軟件大小:26.3M
  • 更新時間:2020-05-15 09:10
  • 軟件語言:中文
  • 軟件廠商:
  • 軟件類別:國產(chǎn)軟件 / 免費軟件 / 編程工具
  • 軟件等級:3級
  • 應用平臺:WinAll
  • 官方網(wǎng)站:https://www.python.org
  • 應用備案:
好評:50%
壞評:50%

軟件介紹

Python是一種編程語言,它使用對象,類和清晰的語法語言來幫助您創(chuàng)建,編輯和生成自己的應用程序。無論你是編程新手還是經(jīng)驗豐富的開發(fā)人員,都可以輕松學習和使用Python。有需要的小伙伴歡迎來西西下載Python2020最新版本。

軟件特征:

以交互方式編寫 Python 代碼
Python 的解釋器允許您編寫和執(zhí)行代碼,以及定義變量。突出顯示的是語法語言的簡單性,旨在幫助您以交互方式編寫代碼,從而顯著提高可讀性并縮短調(diào)試時間。

輕松創(chuàng)建,測試和編輯代碼
用 Python 編寫的代碼可以通過在解釋器中運行來多次編輯和測試。與其他語言不同,它不會限制您在執(zhí)行環(huán)境之外編輯代碼,因此您只需使用解釋器進行更改即可。

由于它是一種面向?qū)ο蟮木幊陶Z言,Python 使用數(shù)據(jù)結(jié)構(gòu)將信息存儲在主程序無法訪問的位置,可以使用專用函數(shù)檢索。

由于其語法清晰,任何計算機用戶都可以輕松理解 Python。如果您剛開始學習編程,開發(fā)人員的網(wǎng)站會為您提供多個教程和資源。

新功能說明:

新功能

賦值表達式

有一種新語法:=可將值賦給變量,作為較大表達式的一部分。由于它與海象的眼睛和象牙很像,因此被親切地稱為“海象操作員” 。

在此示例中,賦值表達式有助于避免調(diào)用 len()兩次:

if (n := len(a)) > 10:    print(f"List is too long ({n} elements, expected <= 10)")

在正則表達式匹配期間會產(chǎn)生類似的好處,其中需要兩次匹配對象,一次是測試是否發(fā)生匹配,另一次是提取子組:

discount = 0.0if (mo := re.search(r'(\d+)% discount', advertisement)):    discount = float(mo.group(1)) / 100.0

該運算符對while循環(huán)也很有用,該循環(huán)計算一個值以測試循環(huán)終止,然后在循環(huán)體中再次需要相同的值:

# Loop over fixed length blockswhile (block := f.read(256)) != '':    process(block)

另一個具有啟發(fā)性的用例出現(xiàn)在列表理解中,其中表達式主體中還需要在過濾條件下計算出的值:

[clean_name.title() for name in names if (clean_name := normalize('NFC', name)) in allowed_names]

嘗試限制使用海象運算符來清理可降低復雜性并提高可讀性的案例。

看到 有關(guān)完整說明,請參見PEP 572。

(由Emily Morehouse在bpo-35224中貢獻。)

僅位置參數(shù)

有一個新的函數(shù)參數(shù)語法,/以指示某些函數(shù)參數(shù)必須在位置上指定,并且不能用作關(guān)鍵字參數(shù)。這help()與用Larry Hastings的Argument Clinic工具注釋的C函數(shù)所顯示的符號相同。

在以下示例中,參數(shù)a和b是僅位置的,而c或d可以是位置或關(guān)鍵字,而e或f必須是關(guān)鍵字:

def f(a, b, /, c, d, *, e, f):    print(a, b, c, d, e, f)

以下是有效的呼叫:

f(10, 20, 30, d=40, e=50, f=60)

但是,這些是無效的調(diào)用:

f(10, b=20, c=30, d=40, e=50, f=60)   # b cannot be a keyword argumentf(10, 20, 30, 40, 50, f=60)           # e must be a keyword argument

這種表示法的一個用例是,它允許純Python函數(shù)完全模擬現(xiàn)有C編碼函數(shù)的行為。例如,內(nèi)置divmod()函數(shù)不接受關(guān)鍵字參數(shù):

def divmod(a, b, /):    "Emulate the built in divmod() function"    return (a // b, a % b)

另一個用例是在參數(shù)名稱無用時排除關(guān)鍵字參數(shù)。例如,內(nèi)置len()函數(shù)具有簽名。這避免了尷尬的調(diào)用,例如:len(obj, /)

len(obj='hello')  # The "obj" keyword argument impairs readability

將參數(shù)標記為僅位置的另一個好處是,它允許將來更改參數(shù)名稱而不會破壞客戶端代碼。例如,在statistics模塊中,將來可能會更改參數(shù)名稱dist?梢酝ㄟ^以下功能規(guī)范來實現(xiàn):

def quantiles(dist, /, *, n=4, method='exclusive')    ...

由于左側(cè)的參數(shù)/未作為可能的關(guān)鍵字公開,因此參數(shù)名稱仍可用于**kwargs:

>>>

>>> def f(a, b, /, **kwargs):...     print(a, b, kwargs)...>>> f(10, 20, a=1, b=2, c=3)         # a and b are used in two ways10 20 {'a': 1, 'b': 2, 'c': 3}

這大大簡化了需要接受任意關(guān)鍵字參數(shù)的函數(shù)和方法的實現(xiàn)。例如,以下是該collections模塊中代碼的摘錄:

class Counter(dict):    def __init__(self, iterable=None, /, **kwds):        # Note "iterable" is a possible keyword argument

看到 有關(guān)完整說明,請參見PEP 570。

(由Pablo Galindo在bpo-36540中貢獻。)

編譯后的字節(jié)碼文件的并行文件系統(tǒng)緩存

新的 PYTHONPYCACHEPREFIX設置(也可作為 )將隱式字節(jié)碼緩存配置為使用單獨的并行文件系統(tǒng)樹,而不是每個源目錄中的默認子目錄。-X pycache_prefix__pycache__

緩存的位置報告在sys.pycache_prefix (None指示__pycache__ 子目錄中的默認位置)。

(由Carl Meyer在bpo-33499中貢獻。)

調(diào)試版本使用與發(fā)布版本相同的

不管是在發(fā)布模式還是調(diào)試模式下構(gòu)建,Python現(xiàn)在都使用相同的ABI。在Unix上,當Python以調(diào)試模式構(gòu)建時,現(xiàn)在可以加載以發(fā)布模式構(gòu)建的C擴展和使用穩(wěn)定ABI構(gòu)建的C擴展。

現(xiàn)在,發(fā)行版本和調(diào)試版本與ABI兼容:定義 Py_DEBUG宏不再意味著該Py_TRACE_REFS宏,它引入了唯一的ABI不兼容性。該Py_TRACE_REFS宏,它增加了sys.getobjects()功能和PYTHONDUMPREFS 環(huán)境變量,可以使用新的 構(gòu)建選項進行設置。(由Victor Stinner在bpo-36465中貢獻。)./configure --with-trace-refs

在Unix上,除了Android和Cygwin之外,C擴展不再鏈接到libpython。現(xiàn)在,靜態(tài)鏈接的Python可以加載使用共享庫Python構(gòu)建的C擴展。(由Victor Stinner在bpo-21536中貢獻。)

在Unix上,當Python以調(diào)試模式構(gòu)建時,import現(xiàn)在還將尋找以發(fā)布模式編譯的C擴展以及使用穩(wěn)定的ABI編譯的C擴展。(由Victor Stinner在bpo-36722中貢獻。)

要將Python嵌入到應用程序中,--embed必須傳遞一個新選項 以獲。▽贸绦蜴溄拥絣ibpython)。要同時支持3.8和更早版本的3.8,請首先嘗試使用該命令,如果先前的命令失敗,則回退到(無)。python3-config --libs --embed-lpython3.8python3-config --libs --embedpython3-config --libs--embed

添加pkg-config python-3.8-embed模塊以將Python嵌入到應用程序中:includes 。要同時支持3.8和更早版本的3.8,請首先嘗試使用該命令,如果先前的命令失敗,則回退到(無)(用Python版本替換)。pkg-config python-3.8-embed --libs-lpython3.8pkg-config python-X.Y-embed --libspkg-config python-X.Y --libs--embedX.Y

另一方面,不再包含 。C擴展不得鏈接到libpython(Android和Cygwin除外,它們的情況由腳本處理);此更改是有意向后不兼容的。(由Victor Stinner在bpo-36721中貢獻。)pkg-config python3.8 --libs-lpython3.8

f字符串支持=自記錄表達式和調(diào)試

=在f-string中添加了一個說明符。f字符串(例如) f'{expr=}'將擴展為表達式的文本,等號,然后擴展為求值表達式的表示形式。例如:

>>>

>>> user = 'eric_idle'>>> member_since = date(1975, 7, 31)>>> f'{user=} {member_since=}'"user='eric_idle' member_since=datetime.date(1975, 7, 31)"

常用的f字符串格式說明符允許對表達式結(jié)果的顯示方式進行更多控制:

>>>

>>> delta = date.today() - member_since>>> f'{user=!s}  {delta.days=:,d}''user=eric_idle  delta.days=16,075'

的=說明符將顯示整個表達式所以可以示出的計算:

>>>

>>> print(f'{theta=}  {cos(radians(theta))=:.3f}')theta=30  cos(radians(theta))=0.866

(由Eric V. Smith和Larry Hastings在bpo-36817中貢獻。)

PEP 578:Python運行時審核掛鉤

PEP添加了“審核掛鉤”和“已驗證的打開掛鉤”。兩者都可以從Python和本機代碼獲得,從而允許使用純Python代碼編寫的應用程序和框架利用額外的通知,同時還允許嵌入程序或系統(tǒng)管理員在始終啟用審核的情況下部署Python版本。

看到 PEP 578詳細信息。

PEP 587:Python初始化配置

的 PEP 587添加了新的C API以配置Python初始化,從而提供了對整個配置的更好控制和更好的錯誤報告。

常見問題答疑:

如何在Windows下運行Python程序?

這不一定是一個簡單的問題。如果您已經(jīng)熟悉從Windows命令行運行程序,那么一切似乎都是顯而易見的。否則,您可能需要更多指導。

除非使用某種集成開發(fā)環(huán)境,否則最終將 在各種稱為“ DOS窗口”或“命令提示窗口”的窗口中鍵入 Windows命令。通常,您可以通過搜索從搜索欄創(chuàng)建這樣的窗口cmd。您應該能夠識別出何時啟動了這樣的窗口,因為您將看到Windows“命令提示符”,通常如下所示:

C:\>

該字母可能有所不同,并且后面可能還有其他內(nèi)容,因此您可能會很容易看到以下內(nèi)容:

D:\YourName\Projects\Python>

取決于計算機的設置方式以及您最近對計算機所做的其他操作。一旦啟動了這樣的窗口,就可以很好地運行Python程序。

您需要意識到Python腳本必須由另一個稱為Python 解釋器的程序處理。解釋器讀取您的腳本,將其編譯為字節(jié)碼,然后執(zhí)行字節(jié)碼以運行您的程序。那么,如何安排解釋器處理Python?

首先,您需要確保命令窗口將單詞“ py”識別為啟動解釋器的指令。如果您打開了命令窗口,則應嘗試輸入命令py并按回車鍵:

C:\Users\YourName> py

然后,您應該看到類似以下內(nèi)容:

Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)] on win32Type "help", "copyright", "credits" or "license" for more information.>>>

您已經(jīng)以“交互模式”啟動了解釋器。這意味著您可以交互輸入Python語句或表達式,并在等待時執(zhí)行或評估它們。這是Python最強大的功能之一。通過輸入一些您選擇的表達式并查看結(jié)果來進行檢查:

>>>

>>> print("Hello")Hello>>> "Hello" * 3'HelloHelloHello'

許多人將交互模式用作方便但高度可編程的計算器。當您想結(jié)束交互式Python會話時,請在輸入a的同時調(diào)用該exit()函數(shù)或按住Ctrl鍵Z,然后按“ Enter”鍵以返回Windows命令提示符。

您可能還會發(fā)現(xiàn),您有一個開始菜單項,例如開始Start程序‣Python 3.x‣Python(命令行),這會導致您>>>在新窗口中看到提示。如果是這樣,則在您調(diào)用exit()函數(shù)或輸入Ctrl-Z 字符后,該窗口將消失;Windows在窗口中運行單個“ python”命令,并在終止解釋器時將其關(guān)閉。

現(xiàn)在我們知道該py命令已被識別,您可以為其提供Python腳本了。您必須提供Python腳本的絕對路徑或相對路徑。假設您的Python腳本位于您的桌面上,名為hello.py,并且您的主目錄中很好地打開了命令提示符,因此您會看到類似以下內(nèi)容的內(nèi)容:

C:\Users\YourName>

因此,現(xiàn)在您將要求該py命令py通過在腳本路徑后鍵入以下內(nèi)容來將腳本提供給Python :

C:\Users\YourName> py Desktop\hello.py hello

如何使Python腳本可執(zhí)行?

在Windows上,標準的Python安裝程序已經(jīng)將.py擴展名與文件類型(Python.File)關(guān)聯(lián),并為該文件類型提供了運行解釋器()的打開命令。這足以使腳本在命令提示符下以“ foo.py”的身份可執(zhí)行。如果您希望能夠通過簡單地鍵入'foo'而沒有擴展名來執(zhí)行腳本,則需要將.py添加到PATHEXT環(huán)境變量中。D:\Program Files\Python\python.exe "%1" %*

為什么Python有時需要很長時間才能啟動?

通常,Python在Windows上的啟動速度非常快,但偶爾也有錯誤報告稱Python突然開始需要很長時間才能啟動。這使您更加困惑,因為Python在其他配置相同的Windows系統(tǒng)上可以正常工作。

該問題可能是由問題機器上的病毒檢查軟件配置錯誤引起的。當某些病毒掃描程序配置為監(jiān)視來自文件系統(tǒng)的所有讀取時,會引入兩個數(shù)量級的啟動開銷。嘗試檢查系統(tǒng)上病毒掃描軟件的配置,以確保它們的配置確實相同。McAfee被配置為掃描所有文件系統(tǒng)讀取活動時,是一個特別的冒犯者。

如何從Python腳本制作可執(zhí)行文件?

有關(guān)distutils擴展的信息,請參見cx_Freeze,該擴展允許您從Python代碼創(chuàng)建控制臺和GUI可執(zhí)行文件。 py2exe是構(gòu)建基于Python 2.x的可執(zhí)行文件的最流行的擴展,尚不支持Python 3,但正在開發(fā)中。

是一個*.pyd文件相同的DLL?

是的,.pyd文件是dll的文件,但是有一些區(qū)別。如果您有一個名為的DLL foo.pyd,則它必須具有一個函數(shù)PyInit_foo()。然后,您可以編寫Python“ import foo”,Python將搜索foo.pyd(以及foo.py,foo.pyc),如果找到,將嘗試調(diào)用PyInit_foo()以對其進行初始化。您不要將.exe與foo.lib鏈接,因為那樣會使Windows要求該DLL存在。

請注意,foo.pyd的搜索路徑是PYTHONPATH,與Windows用于搜索foo.dll的路徑不同。另外,不需要foo.pyd即可運行程序,而如果將程序與dll鏈接,則該dll是必需的。當然,如果您想說foo.pyd是必需的。在DLL中,鏈接在源代碼中用聲明。在.pyd中,鏈接在可用功能列表中定義。import foo__declspec(dllexport)

如何將Python嵌入Windows應用程序?

將Python解釋器嵌入Windows應用程序可以總結(jié)如下:

不要直接將Python構(gòu)建到.exe文件中。在Windows上,Python必須是DLL才能處理本身就是DLL的導入模塊。(這是第一個未記錄的關(guān)鍵事實。)相反,鏈接到;。它通常安裝在中。 NN是Python版本,對于Python 3.3,數(shù)字是“ 33”。pythonNN.dllC:\Windows\System

您可以通過兩種不同的方式鏈接到Python。加載時鏈接表示針對,而運行時鏈接表示針對。(一般說明:是對應于的所謂的“ import lib” 。它僅定義鏈接器的符號。)pythonNN.libpythonNN.dllpythonNN.libpythonNN.dll

運行時鏈接大大簡化了鏈接選項;一切都在運行時發(fā)生。您的代碼必須使用Windows 例程加載。該代碼還必須使用Windows 例程獲取的指針使用訪問例程和數(shù)據(jù)(即Python的C API)。宏可以使這些指針對調(diào)用Python C API中的例程的任何C代碼透明。pythonNN.dllLoadLibraryEx()pythonNN.dllGetProcAddress()

Borland注意:首先使用Coff2Omf.exe 轉(zhuǎn)換為OMF格式。pythonNN.lib

如果您使用SWIG,則很容易創(chuàng)建一個Python“擴展模塊”,它將使應用程序的數(shù)據(jù)和方法可供Python使用。SWIG將為您處理幾乎所有繁瑣的細節(jié)。結(jié)果是鏈接到您的.exe文件的C代碼 (!)您不必創(chuàng)建DLL文件,而且還簡化了鏈接。

SWIG將創(chuàng)建一個初始化函數(shù)(C函數(shù)),該函數(shù)的名稱取決于擴展模塊的名稱。例如,如果模塊的名稱是leo,則init函數(shù)將稱為initleo()。如果您應該使用SWIG陰影類,則init函數(shù)將稱為initleoc()。這將初始化陰影類使用的幾乎隱藏的幫助程序類。

您可以將第2步中的C代碼鏈接到.exe文件的原因是,調(diào)用初始化函數(shù)等效于將模塊導入Python。ㄟ@是第二個未記錄的關(guān)鍵事實。)

簡而言之,您可以使用以下代碼通過擴展模塊初始化Python解釋器。

#include "python.h"...Py_Initialize();  // Initialize Python.initmyAppc();  // Initialize (import) the helper class.PyRun_SimpleString("import myApp");  // Import the shadow class.

Python的C API存在兩個問題,如果您使用MSVC(用于構(gòu)建pythonNN.dll的編譯器)以外的其他編譯器,這些問題將變得顯而易見。

問題1:帶有FILE *參數(shù)的所謂“非常高級”函數(shù)在多編譯器環(huán)境中將不起作用,因為每個編譯器對結(jié)構(gòu)FILE的概念將有所不同。從實現(xiàn)的角度來看,這些是非常低級的功能。

問題2:在生成包裝器以使函數(shù)無效時,SWIG生成以下代碼:

Py_INCREF(Py_None);_resultobj = Py_None;return _resultobj;

las,Py_None是一個宏,它擴展為對pythonNN.dll中稱為_Py_NoneStruct的復雜數(shù)據(jù)結(jié)構(gòu)的引用。同樣,此代碼在多編譯器環(huán)境中將失敗。將此類代碼替換為:

return Py_BuildValue("");

%typemap盡管我無法使它生效(我是完整的SWIG新手),但也許可以使用SWIG的命令自動進行更改。

在Windows應用程序內(nèi)部使用Python Shell腳本建立Python解釋器窗口不是一個好主意;生成的窗口將獨立于您應用程序的窗口系統(tǒng)。相反,您(或wxPythonWindow類)應創(chuàng)建一個“本機”解釋器窗口。將該窗口連接到Python解釋器很容易。您可以將Python的I / O重定向到支持讀取和寫入的_any_對象,因此您所需要的只是一個包含read()和write()方法的Python對象(在擴展模塊中定義)。

如何防止編輯器將制表符插入我的Python源代碼?

FAQ不建議使用標簽和Python樣式指南, PEP 8,建議分布式Python代碼有4個空格;這也是Emacs的python-mode默認設置。

在任何編輯器下,混合使用制表符和空格是一個壞主意。MSVC在這方面沒有什么不同,并且可以很容易地配置為使用空格:選取“ 工具”‣“選項”‣“選項卡”,對于文件類型“默認”,將“標簽大小”和“縮進大小”設置為4,然后選擇“插入空格”單選按鈕。

Python引發(fā),IndentationError或者TabError制表符和空格混合導致前導空格出現(xiàn)問題。您也可以運行該tabnanny模塊以批處理方式檢查目錄樹。

如何檢查按鍵是否暢通無阻?

使用msvcrt模塊。這是Windows的標準擴展模塊。它定義了一個功能kbhit(),該功能檢查是否存在鍵盤擊鍵,并getch()獲得一個字符而不回顯它。

軟件標簽: Python 編程

軟件截圖

面向?qū)ο缶幊棠_本(Python) v3.8.3官方版

其他版本下載

發(fā)表評論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評論 > 字數(shù): 0/500

TOP
軟件下載