python语言核心技术_python核心技术
基本語(yǔ)法
Python的設(shè)計(jì)目標(biāo)之一是讓代碼具備高度的可閱讀性。它設(shè)計(jì)時(shí)盡量使用其它語(yǔ)言經(jīng)常使用的標(biāo)點(diǎn)符號(hào)和英文單字,讓代碼看起來(lái)整潔美觀。它不像其他的靜態(tài)語(yǔ)言如C、Pascal那樣需要重復(fù)書(shū)寫(xiě)聲明語(yǔ)句,也不像它們的語(yǔ)法那樣經(jīng)常有特殊情況和意外。
縮進(jìn)
Python開(kāi)發(fā)者有意讓違反了縮進(jìn)規(guī)則的程序不能通過(guò)編譯,以此來(lái)強(qiáng)制程序員養(yǎng)成良好的編程習(xí)慣。并且Python語(yǔ)言利用縮進(jìn)表示語(yǔ)句塊的開(kāi)始和退出(Off-side規(guī)則),而非使用花括號(hào)或者某種關(guān)鍵字。增加縮進(jìn)表示語(yǔ)句塊的開(kāi)始,而減少縮進(jìn)則表示語(yǔ)句塊的退出。縮進(jìn)成為了語(yǔ)法的一部分。例如if語(yǔ)句:python3
if age<21:
print("你不能買(mǎi)酒。")
print("不過(guò)你能買(mǎi)口香糖。")
print("這句話(huà)在if語(yǔ)句塊的外面。")
根據(jù)PEP的規(guī)定,必須使用4個(gè)空格來(lái)表示每級(jí)縮進(jìn)(不清楚4個(gè)空格的規(guī)定如何,在實(shí)際編寫(xiě)中可以自定義空格數(shù),但是要滿(mǎn)足每級(jí)縮進(jìn)間空格數(shù)相等)。使用Tab字符和其它數(shù)目的空格雖然都可以編譯通過(guò),但不符合編碼規(guī)范。支持Tab字符和其它數(shù)目的空格僅僅是為兼容很舊的的Python程序和某些有問(wèn)題的編輯程序。
控制語(yǔ)句
if語(yǔ)句,當(dāng)條件成立時(shí)運(yùn)行語(yǔ)句塊。經(jīng)常與else, elif(相當(dāng)于else if) 配合使用。
for語(yǔ)句,遍歷列表、字符串、字典、集合等迭代器,依次處理迭代器中的每個(gè)元素。
while語(yǔ)句,當(dāng)條件為真時(shí),循環(huán)運(yùn)行語(yǔ)句塊。
try語(yǔ)句,與except,finally配合使用處理在程序運(yùn)行中出現(xiàn)的異常情況。
class語(yǔ)句,用于定義類(lèi)型。
def語(yǔ)句,用于定義函數(shù)和類(lèi)型的方法。
pass語(yǔ)句,表示此行為空,不運(yùn)行任何操作。
assert語(yǔ)句,用于程序調(diào)試階段時(shí)測(cè)試運(yùn)行條件是否滿(mǎn)足。
with語(yǔ)句,Python2.6以后定義的語(yǔ)法,在一個(gè)場(chǎng)景中運(yùn)行語(yǔ)句塊。比如,運(yùn)行語(yǔ)句塊前加密,然后在語(yǔ)句塊運(yùn)行退出后解密。
yield語(yǔ)句,在迭代器函數(shù)內(nèi)使用,用于返回一個(gè)元素。自從Python 2.5版本以后。這個(gè)語(yǔ)句變成一個(gè)運(yùn)算符。
raise語(yǔ)句,制造一個(gè)錯(cuò)誤。
import語(yǔ)句,導(dǎo)入一個(gè)模塊或包。
from import語(yǔ)句,從包導(dǎo)入模塊或從模塊導(dǎo)入某個(gè)對(duì)象。
import as語(yǔ)句,將導(dǎo)入的對(duì)象賦值給一個(gè)變量。
in語(yǔ)句,判斷一個(gè)對(duì)象是否在一個(gè)字符串/列表/元組里。
表達(dá)式
Python的表達(dá)式寫(xiě)法與C/C++類(lèi)似。只是在某些寫(xiě)法有所差別。
主要的算術(shù)運(yùn)算符與C/C++類(lèi)似。+, -, *, /, //, **, ~, %分別表示加法或者取正、減法或者取負(fù)、乘法、除法、整除、乘方、取補(bǔ)、取余。>>, <, =用于比較兩個(gè)表達(dá)式的值,分別表示大于、小于、等于、不等于、小于等于、大于等于。在這些運(yùn)算符里面,~, |, ^, &, <>必須應(yīng)用于整數(shù)。
Python使用and, or, not表示邏輯運(yùn)算。
is, is not用于比較兩個(gè)變量是否是同一個(gè)對(duì)象。in, not in用于判斷一個(gè)對(duì)象是否屬于另外一個(gè)對(duì)象。
Python支持“列表推導(dǎo)式”(list comprehension),比如計(jì)算0-9的平方和:
>>> sum(x * x for x in range(10))
285
Python使用lambda表示匿名函數(shù)。匿名函數(shù)體只能是表達(dá)式。比如:
>>> add=lambda x, y : x + y
>>> add(3,2)
5
Python使用y if cond else x表示條件表達(dá)式。意思是當(dāng)cond為真時(shí),表達(dá)式的值為y,否則表達(dá)式的值為x。相當(dāng)于C++和Java里的cond?y:x。
Python區(qū)分列表(list)和元組(tuple)兩種類(lèi)型。list的寫(xiě)法是[1,2,3],而tuple的寫(xiě)法是(1,2,3)。可以改變list中的元素,而不能改變tuple。在某些情況下,tuple的括號(hào)可以省略。tuple對(duì)于賦值語(yǔ)句有特殊的處理。因此,可以同時(shí)賦值給多個(gè)變量,比如:
>>> x, y=1,2#同時(shí)給x,y賦值,最終結(jié)果:x=1, y=2
特別地,可以使用以下這種形式來(lái)交換兩個(gè)變量的值:
>>> x, y=y, x #最終結(jié)果:y=1, x=2
Python使用‘(單引號(hào))和"(雙引號(hào))來(lái)表示字符串。與Perl、Unix Shell語(yǔ)言或者Ruby、Groovy等語(yǔ)言不一樣,兩種符號(hào)作用相同。一般地,如果字符串中出現(xiàn)了雙引號(hào),就使用單引號(hào)來(lái)表示字符串;反之則使用雙引號(hào)。如果都沒(méi)有出現(xiàn),就依個(gè)人喜好選擇。出現(xiàn)在字符串中的\(反斜杠)被解釋為特殊字符,比如\n表示換行符。表達(dá)式前加r指示Python不解釋字符串中出現(xiàn)的\。這種寫(xiě)法通常用于編寫(xiě)正則表達(dá)式或者Windows文件路徑。
Python支持列表切割(list slices),可以取得完整列表的一部分。支持切割操作的類(lèi)型有str, bytes, list, tuple等。它的語(yǔ)法是...[left:right]或者...[left:right:stride]。假定nums變量的值是[1, 3, 5, 7, 8, 13, 20],那么下面幾個(gè)語(yǔ)句為真:
nums[2:5] == [5, 7, 8] 從下標(biāo)為2的元素切割到下標(biāo)為5的元素,但不包含下標(biāo)為5的元素。
nums[1:] == [3, 5, 7, 8, 13, 20] 切割到最后一個(gè)元素。
nums[:-3] == [1, 3, 5, 7] 從最開(kāi)始的元素一直切割到倒數(shù)第3個(gè)元素。
nums[:] == [1, 3, 5, 7, 8, 13, 20] 返回所有元素。改變新的列表不會(huì)影響到nums。
nums[1:5:2] == [3, 7] 從下標(biāo)為1的元素切割到下標(biāo)為5的元素但不包含下標(biāo)為5的元素,且步長(zhǎng)為2。
函數(shù)
Python的函數(shù)支持遞歸、默認(rèn)參數(shù)值、可變參數(shù),但不支持函數(shù)重載。為了增強(qiáng)代碼的可讀性,可以在函數(shù)后書(shū)寫(xiě)“文檔字符串”(Documentation Strings,或者簡(jiǎn)稱(chēng)docstrings),用于解釋函數(shù)的作用、參數(shù)的類(lèi)型與意義、返回值類(lèi)型與取值范圍等。可以使用內(nèi)置函數(shù)help()打印出函數(shù)的使用幫助。比如:
>>> def randint(a, b):
... "Return random integer in range [a, b], including both end points."...
>>> help(randint)
Help on function randint in module __main__:
randint(a, b)
Return random integer inrange[a, b], including both end points.
總結(jié)
以上是生活随笔為你收集整理的python语言核心技术_python核心技术的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工行北美原油交易时间
- 下一篇: python进展_Python3的介绍和