App下載

人工智能和機(jī)器學(xué)習(xí)系列(一) Python 基礎(chǔ)

陪你演戲 2021-08-24 10:32:26 瀏覽數(shù) (4308)
反饋

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)容。


0 人點(diǎn)贊