Python 是人工智能和機(jī)器學(xué)習(xí)的首要編程語(yǔ)言。本文將向您介紹重要的 Python 基礎(chǔ)知識(shí),包括:從何處獲取 Python、Python 2 和 Python 3 之間的區(qū)別以及熟悉的語(yǔ)言概念(如語(yǔ)法和變量),如何在 Python 中工作。
簡(jiǎn)介
當(dāng)開(kāi)發(fā)人員開(kāi)始使用人工智能 (AI) 和機(jī)器學(xué)習(xí) (ML) 軟件時(shí),他們今天最有可能遇到的編程語(yǔ)言是 Python 和 C/C++。大多數(shù)情況下,C/C++ 用于專門(mén)的應(yīng)用程序,例如嵌入式物聯(lián)網(wǎng) (IoT) 和高度優(yōu)化的、特定于硬件的神經(jīng)網(wǎng)絡(luò)庫(kù)。
Python 是大多數(shù) AI 和 ML 應(yīng)用程序開(kāi)發(fā)中最常用的語(yǔ)言,即使是為那些 IoT 和硬件加速應(yīng)用程序進(jìn)行原型設(shè)計(jì)和優(yōu)化模型也是如此。
對(duì)于從 C#、Java 甚至 JavaScript 等其他語(yǔ)言開(kāi)始使用 Python 的開(kāi)發(fā)人員,本文將向您介紹 Python 獨(dú)特語(yǔ)法的關(guān)鍵元素,例如循環(huán),以及它們與您可能了解的內(nèi)容有何不同。
本系列的其他文章將探討如何使用可供 AI 和 ML 開(kāi)發(fā)人員使用的眾多 Python 庫(kù),例如 OpenCV、Natural Language Toolkit (NLTK)、Keras 和 TensorFlow。
本文將向您介紹重要的 Python 基礎(chǔ)知識(shí),包括:
- 從哪里獲得 Python
- Python 2 和 Python 3 的區(qū)別
- 熟悉的語(yǔ)言概念(如語(yǔ)法和變量)如何在 Python 中工作
從哪里獲得 Python
開(kāi)發(fā)人員通常會(huì)問(wèn)的第一個(gè)問(wèn)題是:我從哪里得到 Python?
答案是:這取決于您的系統(tǒng)和編程環(huán)境。默認(rèn)情況下,Python 安裝在 Mac OS 和一些 Linux 發(fā)行版上。對(duì)于沒(méi)有 Python 的系統(tǒng),您可以從以下位置獲取安裝程序:
另一種選擇是Jupyter Notebooks和 JupyterLabs 交互式開(kāi)發(fā)工具。
第三種選擇——我們推薦并將用于這些 Python AI/ML 文章的選擇——Anaconda,一個(gè)專為統(tǒng)計(jì)、數(shù)據(jù)科學(xué)和 AI/ML 項(xiàng)目設(shè)計(jì)的綜合軟件平臺(tái)。
Anaconda 包括 JupyterLab(前面提到的基于 Web 的 IDE)以及您在學(xué)習(xí) AI 時(shí)可能需要的許多其他工具、庫(kù)和示例數(shù)據(jù)源。一旦我們了解機(jī)器學(xué)習(xí)庫(kù)、數(shù)據(jù)集和可視化,您會(huì)發(fā)現(xiàn)它們很有幫助。
哪個(gè)版本:Python 2 或 Python 3?
對(duì)于語(yǔ)言新手來(lái)說(shuō),使用 Python 2 還是 Python 3 是一個(gè)常見(jiàn)的困惑來(lái)源。
Python 2 是一個(gè)仍然經(jīng)常使用的舊版本,并且仍然作為 Python 的默認(rèn)版本安裝在一些當(dāng)前的操作系統(tǒng)中。對(duì) Python 2 的官方支持將于 2020 年初結(jié)束。
如果您剛開(kāi)始使用 Python,則應(yīng)該使用 Python 3。
Python 3 的持續(xù)支持和開(kāi)發(fā)仍在繼續(xù)。這也適用于您可能想要使用的庫(kù):有些可能仍支持這兩個(gè)版本,但許多將完全轉(zhuǎn)移到 Python 3 或可能會(huì)這樣做。
你怎么知道你的系統(tǒng)上安裝了哪個(gè)版本?
在 Linux 系統(tǒng)和 Mac OS 上,該python命令默認(rèn)為 ?Python 2
?,您可以將python3命令用于 ?Python 3
?。
要確定系統(tǒng)上安裝了哪個(gè)版本,請(qǐng)轉(zhuǎn)到終端窗口或命令提示符并運(yùn)行以下命令:
python --version
如果安裝了 Python,它會(huì)返回python
命令使用的 Python 版本。
Python 2.7.16
該python3 --version
命令對(duì) Python 3 執(zhí)行相同的操作。
Python 3.7.4
識(shí)別代碼示例中的 Python 版本
在線教程并不總是明確提及它們是使用 Python 2 還是 Python 3。幸運(yùn)的是,您可以使用一些啟發(fā)式方法來(lái)確定教程使用的版本。
一是在標(biāo)準(zhǔn)輸出上打印文本的方式不同。在 Python 3 中,只有一種有效的方法可以做到這一點(diǎn):
# Python 2 and Python 3
# This is a comment, by the way
print("Hello, world!")
該語(yǔ)法在 Python 2 中也有效,但 Python 2 示例更常用這種替代語(yǔ)法:
# This only works in Python 2
print "Hello, world!"
Python 語(yǔ)言基礎(chǔ):類型和變量
Python 是動(dòng)態(tài)類型的。類型不與變量名相關(guān)聯(lián),只與變量值相關(guān)聯(lián)。這與靜態(tài)類型語(yǔ)言(例如 C# 和 Java)不同,在這些語(yǔ)言中,如果您定義了以后int i = 0;,
就無(wú)法編寫(xiě)i = "test";
。在 Python 中,你可以。
Python 是強(qiáng)類型的(例如,JavaScript 是弱類型的)。在強(qiáng)類型語(yǔ)言中,對(duì)不同類型值之間的操作有更嚴(yán)格的限制。在 JavaScript 中,您可以執(zhí)行"abc" + 1
并以 string 結(jié)束"abc1"
,但是如果您在 Python 中嘗試相同的操作,您將收到一個(gè)錯(cuò)誤,表明您無(wú)法將字符串與整數(shù)連接起來(lái)。
在 Python 中分配變量可以這樣完成:
name = "value"
請(qǐng)注意,行不以分號(hào)結(jié)尾。
定義和調(diào)用函數(shù)如下所示:
def say_hello(who):
print("Hello ", who)
name = input("Your name: ")
say_hello(name)
這是在 Jupyter Notebook 中的樣子:
與 C# 等語(yǔ)言不同,Python 不使用方括號(hào)來(lái)指定哪些代碼行屬于函數(shù)。相反,Python 使用縮進(jìn)。具有相同縮進(jìn)級(jí)別的一系列行形成一個(gè)塊??s進(jìn)代碼的推薦方法是每個(gè)縮進(jìn)級(jí)別使用四個(gè)空格。但是,您也可以使用制表符或其他數(shù)量的空格。縮進(jìn)只需在塊內(nèi)保持一致。
您可以使用return
關(guān)鍵字從函數(shù)返回一個(gè)值:
def sum(a, b):
return a + b
如果函數(shù)沒(méi)有return
語(yǔ)句,它將返回None
(Python's null
)。
Python 也支持高階函數(shù)(返回函數(shù)或?qū)⒑瘮?shù)作為參數(shù)的函數(shù))。例如,該operation
函數(shù)返回兩個(gè)函數(shù)之一:
def sum(a, b):
return a + b
def difference(a, b):
return a - b
def operation(calculate_sum):
if calculate_sum:
return sum
else:
return difference
然后可以這樣使用:
operation(True)(5, 4)
結(jié)論
我們討論了 Python 2 和 Python 3 之間的區(qū)別,并了解了如何識(shí)別代碼片段中使用的版本。然后我們了解了 Python 的一些基礎(chǔ)知識(shí):類型、變量和函數(shù)。更多關(guān)于Python3,可以學(xué)習(xí)一下Python3相關(guān)教程的內(nèi)容。