最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

1. Python的特性和語(yǔ)法

2023-08-08 01:53 作者:茶桁文化  | 我要投稿

茶桁的AI秘籍-5

千里之行始于足下。

大家好,我是茶桁,這里是我們《AI秘籍》的第一節(jié),讓我們先從Python來(lái)開(kāi)始好好的打好基礎(chǔ)。

第一堂課,我們先從最基礎(chǔ)的Python特性開(kāi)始,當(dāng)然,還有一些基本語(yǔ)法。

上來(lái)就開(kāi)始講特性和語(yǔ)法,說(shuō)明我們將會(huì)遺棄慣用的“環(huán)境搭建”等更基礎(chǔ)的內(nèi)容,那些內(nèi)容網(wǎng)上已經(jīng)很豐富了,一查一大堆,并且相對(duì)來(lái)說(shuō)內(nèi)容都比較獨(dú)立,所以希望還不太會(huì)搭建開(kāi)發(fā)環(huán)境的同學(xué)可以自己去搜索看看?;蛘?,其實(shí)從我這篇《Apple M1的AI環(huán)境搭建》也能完全搭建起一個(gè)完整的Python開(kāi)發(fā)環(huán)境。(Windows和Linux的同學(xué)就只能在網(wǎng)上搜索一下看看了。)

總體來(lái)說(shuō),Python語(yǔ)言的使用率越來(lái)越高,它不僅可以用于GUI開(kāi)發(fā)、Web開(kāi)發(fā),還能進(jìn)行數(shù)據(jù)預(yù)處理、數(shù)據(jù)探索性分析(EDA),更是進(jìn)行數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)等任務(wù)的首選語(yǔ)言。

基于Python的包也越來(lái)越豐富,各種優(yōu)秀的庫(kù)層出不窮。根據(jù)”Tiobe編程語(yǔ)言排行榜”的最新統(tǒng)計(jì),Python結(jié)束了自己攀爬的勢(shì)頭,已經(jīng)開(kāi)始長(zhǎng)期占據(jù)榜首。Python的發(fā)展勢(shì)頭讓人們看到了它在各個(gè)領(lǐng)域都有著廣闊的應(yīng)用前景。

image-20230727185715840

得益于Python語(yǔ)言的簡(jiǎn)潔語(yǔ)法和高效開(kāi)發(fā)能力,使得集成系統(tǒng)變得非常方便。

與此同時(shí),Python相關(guān)的就業(yè)機(jī)會(huì)也非常豐富,待遇也相當(dāng)優(yōu)渥。

因此,無(wú)論從易用性、就業(yè)機(jī)會(huì)還是薪酬待遇來(lái)看,Python都是IT從業(yè)者必備的編程語(yǔ)言之一。

課程說(shuō)明

  1. 本課程所使用語(yǔ)言為Python3
  2. 本課程將會(huì)有一些案例,用于輔助學(xué)習(xí)和理解知識(shí)點(diǎn)。
  3. 基本所有案例均使用Jupyter Notebook做演示
  4. 一些項(xiàng)目會(huì)用到軟件工程和設(shè)計(jì)模式的思想。
  5. 本課程無(wú)任何文學(xué)色彩,重點(diǎn)在于簡(jiǎn)單通俗易懂。

接下來(lái),讓我們真實(shí)開(kāi)始吧。

Python的兩大特性

一句話總結(jié),就是Python是一門動(dòng)態(tài)的、強(qiáng)類型語(yǔ)言。

動(dòng)態(tài)語(yǔ)言

在了解“動(dòng)態(tài)語(yǔ)言”之前,我們先來(lái)了解一下“類型檢查”。

類型檢查是驗(yàn)證變量或表達(dá)式的數(shù)據(jù)類型是否符合語(yǔ)言規(guī)定的類型約束的過(guò)程。它用于確保程序在運(yùn)行時(shí)不會(huì)出現(xiàn)類型錯(cuò)誤,例如將一個(gè)字符串與一個(gè)整數(shù)相加或?qū)⒁粋€(gè)數(shù)字與一個(gè)布爾值進(jìn)行比較。類型檢查旨在捕捉潛在的類型不匹配錯(cuò)誤,并在編譯時(shí)或運(yùn)行時(shí)提供相應(yīng)的警告或錯(cuò)誤信息。

如果類型檢查發(fā)生在程序運(yùn)行階段(運(yùn)行時(shí)),則稱為”動(dòng)態(tài)類型語(yǔ)言”(dynamically typed languages)。常見(jiàn)的動(dòng)態(tài)語(yǔ)言包括:

  • Python
  • JavaScript
  • Ruby
  • PHP
  • Lua
  • Perl
  • Shell腳本

有動(dòng)態(tài)語(yǔ)言,則必然會(huì)有其相對(duì)的“靜態(tài)語(yǔ)言”,常見(jiàn)的“靜態(tài)類語(yǔ)言”包含:

  • C
  • C++
  • Java
  • C#
  • Swift
  • Kotlin
  • Rust
  • TypeScript

當(dāng)然,這些都只是一部分常見(jiàn)的動(dòng)態(tài)語(yǔ)言和靜態(tài)類型語(yǔ)言,還有許多其他編程語(yǔ)言也屬于這兩個(gè)類別。在實(shí)際開(kāi)發(fā)中,選擇使用動(dòng)態(tài)語(yǔ)言還是靜態(tài)類型語(yǔ)言取決于項(xiàng)目的需求、開(kāi)發(fā)團(tuán)隊(duì)的喜好和項(xiàng)目的規(guī)模等因素。每種類型的語(yǔ)言都有其獨(dú)特的特點(diǎn)和適用場(chǎng)景,因此選擇合適的語(yǔ)言是非常重要的。

強(qiáng)類型語(yǔ)言

強(qiáng)類型語(yǔ)言(Strongly Typed Language)要求在編程過(guò)程中嚴(yán)格定義和遵守?cái)?shù)據(jù)類型規(guī)則。在強(qiáng)類型語(yǔ)言中,變量必須明確地聲明其數(shù)據(jù)類型,并且在運(yùn)行時(shí)不能隱式地改變數(shù)據(jù)類型。這意味著變量在使用之前必須進(jìn)行類型轉(zhuǎn)換,以確保數(shù)據(jù)的一致性和安全性。

在強(qiáng)類型語(yǔ)言中,編譯器或解釋器會(huì)對(duì)數(shù)據(jù)類型進(jìn)行嚴(yán)格的檢查,如果發(fā)現(xiàn)不符合類型規(guī)則的操作,就會(huì)報(bào)錯(cuò)并拒絕執(zhí)行。這樣可以防止一些潛在的類型錯(cuò)誤,確保程序的穩(wěn)定性和正確性。

強(qiáng)類型語(yǔ)言的主要特點(diǎn)包括:

  1. 靜態(tài)類型檢查:在編譯時(shí)或解釋時(shí)進(jìn)行類型檢查,檢查數(shù)據(jù)類型是否匹配,避免類型不匹配的錯(cuò)誤。
  2. 顯式類型轉(zhuǎn)換:在進(jìn)行類型轉(zhuǎn)換時(shí),必須顯式地指定轉(zhuǎn)換的方式,例如強(qiáng)制類型轉(zhuǎn)換。
  3. 不支持隱式類型轉(zhuǎn)換:強(qiáng)類型語(yǔ)言不允許在不明確聲明的情況下將一個(gè)數(shù)據(jù)類型隱式地轉(zhuǎn)換為另一個(gè)數(shù)據(jù)類型。

這么說(shuō)可能并不直接,我們來(lái)拿個(gè)示例,我們輸入兩行代碼:

a = 5a = a + 's'

然后我們會(huì)看到程序拋出TypeError異常:

image-20230727202715960

這個(gè)異常意思是不支持int變量str變量相加。

常見(jiàn)的強(qiáng)類型語(yǔ)言包括:

  • Java
  • C++
  • C#
  • Python
  • Swift
  • Kotlin
  • TypeScript
  • Rust
  • Pascal
  • Ada
  • Delphi

一樣的,對(duì)應(yīng)的就是弱類型語(yǔ)言。弱類型語(yǔ)言容易與其他類型混合計(jì)算,其代表是JavaScript。(有一說(shuō)一,我還挺喜歡JS的這個(gè)特性的)

image-20230727203234464

弱類型語(yǔ)言包括:

  • JavaScript
  • PHP
  • Perl
  • Ruby
  • Tcl
  • Bash
  • AWK
  • MATLAB (在一些操作上可以被視為弱類型)

當(dāng)然,對(duì)于這個(gè)劃分其實(shí)并不是所有人都一致的,有些人還是會(huì)把Python歸結(jié)為弱類型語(yǔ)言,而通常意義上,大家會(huì)把C++劃分到弱類型。這里我們不去爭(zhēng)論,僅僅記住動(dòng)態(tài)/靜態(tài)、弱類型/強(qiáng)類型的區(qū)別就行了。

基本語(yǔ)法

基本語(yǔ)法里,我們介紹一下Python的命名規(guī)則、縮進(jìn)原則、特殊關(guān)鍵字和特殊運(yùn)算符四個(gè)方面。

命名規(guī)則

Python的變量命名規(guī)則包括以下幾條:

  1. 允許包括英文、數(shù)字以及下劃線(_),不能以數(shù)字開(kāi)頭。
  2. 名稱區(qū)分大小寫(xiě),例如”myVar”和”myvar”是兩個(gè)不同的變量。
  3. 以單下劃線(_)開(kāi)頭的變量通常用作受保護(hù)的變量,表示應(yīng)該將其視為私有,不建議直接訪問(wèn)。雖然Python沒(méi)有嚴(yán)格的訪問(wèn)控制,但這是一種約定俗成的做法。
  4. 以雙下劃線(__)開(kāi)頭和結(jié)尾的變量是Python中的特殊標(biāo)識(shí)符,具有特殊的意義,如類的私有成員或?qū)S脴?biāo)識(shí)符。

Python的變量命名習(xí)慣一般遵守蛇形命名法(snake case):

  1. 一般變量命名使用小寫(xiě)字母,多個(gè)單詞之間用下劃線連接,例如:book_id、book_store_count。
  2. 類名首字母大寫(xiě),如Python內(nèi)置模塊collections.abc中的Iterable類,我們自定義的Book類等。
  3. 類方法名也使用小寫(xiě)字母,多個(gè)單詞之間用下劃線連接,例如:get_store_count()。

與Java的命名方法不同,Java通常使用駝峰命名法(camel case)來(lái)命名變量和方法名,其中第一個(gè)單詞首字母小寫(xiě),后續(xù)單詞首字母大寫(xiě),例如:myVar、getStoreCount()。而Python則更傾向于使用蛇形命名法。這是因?yàn)镻ython社區(qū)普遍認(rèn)可了蛇形命名法,使得代碼在風(fēng)格上更加一致和易讀。

縮進(jìn)原則

Python最具特色的特點(diǎn)之一是使用縮進(jìn)來(lái)表示代碼的邏輯層次,而不是像Java和C++中使用{}。Python的縮進(jìn)層級(jí)結(jié)構(gòu)非常重要,它代表著代碼的邏輯結(jié)構(gòu)。

通常情況下,Python的縮進(jìn)為4個(gè)空格字符。例如,在定義一個(gè)Book類并重寫(xiě)add方法來(lái)計(jì)算兩本書(shū)的庫(kù)存量時(shí),代碼如下所示:

class Book(object):

 ? ?# 定義類的參數(shù)
 ? ?def __init__(self, b_id, b_name, b_store_count):
 ? ? ? ?self.b_id = b_id
 ? ? ? ?self.b_name = b_name
 ? ? ? ?self.b_store_count = b_store_count ? ?# 重寫(xiě)加法操作
 ? ?def __add__(self, book):
 ? ? ? ?return self.b_store_count + book.b_store_count# 創(chuàng)建兩個(gè)Book類的實(shí)例python_intro_book = Book(1, '金瓶梅', 100)
ml_intro_book = Book(2, '玉蒲團(tuán)', 200)# 求兩本書(shū)的總銷量sales_cnt = python_intro_book + ml_intro_book
print(sales_cnt)

上述代碼定義了一個(gè)Book類,包括初始化方法__init__和重寫(xiě)的加法操作__add__。通過(guò)這種縮進(jìn)結(jié)構(gòu),我們可以清晰地看到代碼的層次結(jié)構(gòu)和邏輯。

在Python編碼中,縮進(jìn)格式、行間空行數(shù)、變量和等號(hào)之間的空格等都遵循PEP8(Python Enhancement Proposal 8)規(guī)范。可以使用autopep8包來(lái)自動(dòng)實(shí)現(xiàn)PEP8規(guī)范,保持代碼的規(guī)范和易讀性。

特殊關(guān)鍵字

Python有35個(gè)關(guān)鍵字,這些關(guān)鍵字具有特殊的含義,不能用于自定義變量名,否則會(huì)引起語(yǔ)法錯(cuò)誤。以下是Python的關(guān)鍵字列表:

False ? ? ?await ? ? ?else ? ? ? import ? ? pass
None ? ? ? break ? ? ?except ? ? in ? ? ? ? raise
True ? ? ? class ? ? ?finally ? ?is ? ? ? ? return
and ? ? ? ?continue ? for ? ? ? ?lambda ? ? try
as ? ? ? ? def ? ? ? ?from ? ? ? nonlocal ? while
assert ? ? del ? ? ? ?global ? ? not ? ? ? ?with
async ? ? ?elif ? ? ? if ? ? ? ? or ? ? ? ? yield

這些關(guān)鍵字在Python編程中扮演著重要的角色。其中,TrueFalse用于表示布爾值的真和假,類似于Java中的truefalse;None表示空值,類似于Java中的null;Python使用not表示邏輯反操作,而Java使用!;Python使用and表示兩個(gè)條件同時(shí)滿足,Java使用&&;Python使用or表示兩個(gè)條件滿足其一,Java使用||;Python使用elif,而Java使用else if。

還有一些比較特殊的關(guān)鍵字,例如:

  • del用于刪除可迭代對(duì)象中的某個(gè)元素;
  • def用于定義函數(shù);
  • 帶有yield的關(guān)鍵字用于定義生成器(generator)函數(shù);
  • globalnonlocal是在Python函數(shù)式編程的閉包場(chǎng)景中使用的。

pass關(guān)鍵字用于占位,當(dāng)你在定義函數(shù)或類時(shí)暫時(shí)不想添加具體的實(shí)現(xiàn)時(shí),可以使用pass關(guān)鍵字。

這些關(guān)鍵字的具體用法將在后續(xù)文章中更詳細(xì)地介紹。在此,先對(duì)它們有一個(gè)整體的認(rèn)識(shí)即可。

特殊運(yùn)算符

Python的運(yùn)算符包括:

+ ? ? ? - ? ? ? * ? ? ? ** ? ? ?/ ? ? ? // ? ? ?% ? ? ?@<< ? ? ?>> ? ? ?& ? ? ? | ? ? ? ^ ? ? ? ~ ? ? ? :=
< ? ? ? > ? ? ? <= ? ? ?>= ? ? ?== ? ? ?!=

大部分運(yùn)算符在其他編程語(yǔ)言中也是常見(jiàn)的,不過(guò)這里重點(diǎn)介紹三個(gè)比較特殊的運(yùn)算符://、**:=

//運(yùn)算符用于兩個(gè)數(shù)值相除并向下取整,類似于Python的math.floor()功能:

print(5 // 2) ? # 輸出: 2print(5 // 4.5) # 輸出: 1.0

**運(yùn)算符用于進(jìn)行冪運(yùn)算:

print(2 ** 3) # 輸出: 8

:=運(yùn)算符是在Python 3.8版本中引入的,被形象地稱為“海象運(yùn)算符”。它可以在表達(dá)式中同時(shí)為變量賦值和比較:

n = len(a)if n > 10:
 ? ?print(f"{n}大于10")

可以用“海象運(yùn)算符”簡(jiǎn)化為:

if (n := len(a)) > 10:
 ? ?print(f"{n}大于10")

Python的比較運(yùn)算符還支持鏈?zhǔn)奖容^,使得編碼更加方便:

i = 3print(1 < i < 3) ?# 輸出: Falseprint(1 < i <= 3) # 輸出: True

此外,運(yùn)算符@用于裝飾器功能,本專欄會(huì)深入解釋它的本質(zhì),并提供相關(guān)案例,幫助你學(xué)會(huì)使用裝飾器。

總結(jié)

在本文中,我們一起學(xué)習(xí)了Python這門功能強(qiáng)大的編程語(yǔ)言。Python的兩大特性是動(dòng)態(tài)語(yǔ)言和強(qiáng)類型語(yǔ)言。

動(dòng)態(tài)語(yǔ)言意味著在運(yùn)行時(shí)執(zhí)行類型檢查,而不是在編譯時(shí)。這使得Python更加靈活和易于使用,允許我們?cè)诖a中動(dòng)態(tài)創(chuàng)建和修改變量。Python的動(dòng)態(tài)特性使其成為進(jìn)行數(shù)據(jù)預(yù)處理、數(shù)據(jù)探索性分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等任務(wù)的首選語(yǔ)言。

另一方面,強(qiáng)類型語(yǔ)言意味著變量的類型在聲明時(shí)就已經(jīng)確定,并且不能進(jìn)行隱式類型轉(zhuǎn)換。這確保了代碼的穩(wěn)定性和安全性,幫助我們避免一些常見(jiàn)的錯(cuò)誤。

在Python的基本語(yǔ)法方面,我們學(xué)習(xí)了變量命名規(guī)則,縮進(jìn)原則,特殊關(guān)鍵字和特殊運(yùn)算符。Python的命名規(guī)則允許使用英文、數(shù)字和下劃線,但不能以數(shù)字開(kāi)頭,并且區(qū)分大小寫(xiě)。特殊關(guān)鍵字包括Python的35個(gè)關(guān)鍵字,如if、else、for、while等等,它們有著特定的含義和用途。特殊運(yùn)算符中,//用于整數(shù)除法,**用于冪運(yùn)算,:=是在Python 3.8版本中引入的“海象運(yùn)算符”,使得在表達(dá)式中同時(shí)為變量賦值和比較變得更加方便。

通過(guò)學(xué)習(xí)Python的特性和基本語(yǔ)法,我們已經(jīng)具備了編寫(xiě)簡(jiǎn)單到復(fù)雜的程序的基礎(chǔ)知識(shí)。Python的易用性、豐富的庫(kù)和社區(qū)支持,使其成為一個(gè)優(yōu)秀的編程語(yǔ)言,適用于各種應(yīng)用場(chǎng)景。無(wú)論是初學(xué)者還是有經(jīng)驗(yàn)的開(kāi)發(fā)者,Python都是一個(gè)值得深入學(xué)習(xí)和探索的語(yǔ)言。

希望本文能夠?yàn)樽x者提供了一個(gè)對(duì)Python的初步認(rèn)識(shí),并激發(fā)了你繼續(xù)學(xué)習(xí)和研究的興趣。在接下來(lái)的學(xué)習(xí)過(guò)程中,我們可以更深入地了解Python的各種功能和應(yīng)用領(lǐng)域,并用Python來(lái)解決更復(fù)雜的問(wèn)題。

好了,我是茶桁,咱們下節(jié)見(jiàn)。


1. Python的特性和語(yǔ)法的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
胶州市| 新余市| 许昌市| 德昌县| 新源县| 平原县| 祥云县| 老河口市| 开化县| 镇原县| 高淳县| 尤溪县| 常宁市| 商南县| 巴彦县| 治县。| 敦化市| 来安县| 丁青县| 成武县| 象山县| 河北区| 荃湾区| 崇左市| 山阳县| 焦作市| 邻水| 察隅县| 田林县| 海丰县| 三门县| 磐安县| 璧山县| 海原县| 永宁县| 华安县| 嘉善县| 道真| 高雄县| 黄骅市| 高安市|