友快網

導航選單

python語言的8大特點,包括包含8個要素,其中1個是. . . . . . . .

本節是第五講的第二小節,上節為大家介紹了Python發展歷程、安裝、以及開發工具IDLE的使用等,本節將為大家介紹Python語言的特點,共有8大特點(要素),幫助大家快速瞭解Python語言。由於內容較多,分為上、下兩部分展示。

控制流語句(Control Flow Statements)#要素5

在Python中,一塊程式碼,也就是說一條或多條語句組成的序列,稱為suite。由於 Python中的某些語法要求存在一個suite, Python就提供了關鍵字pass, pass實際上是 一條空語句,不進行任何操作,可以用在需要suite (或者需要指明我們已經考慮了特殊情況)但又不需要進行處理的地方。

if boolean_expression1:

suite1

elif boolean_expression2:

suite2

……

elif boolean_expressionN:

suiteN

else:

else_suite

與if語句對應的可以有0個或多個elif分支,最後的else分支是可選的。如果需要考慮某個特定的情況,但又不需要在這種情況發生時進行處理,那麼可以使用pass 作為該分支的suite。對習慣於C++或Java語法的程式設計師而言,第一個突出的差別是這裡沒有圓括號與方括號,另一個需要注意到的情況是冒號的使用,冒號是上面語法中的一個組成部分,但是最初使用時容易忘記。冒號與else、elif一起使用,實質上在後面要跟隨suite的任意地方也需要使用。

與大多數其他程式設計語言不同的是,Python使用縮排來標識其塊結構。由於suite是使用縮排指明的,因此很自然地帶來的一個問題是:使用哪種縮排? Python風格指南建議的是每層縮排4個空格,並且只有空格(沒有製表符)。大多數現代的文字編輯器可設定為自動處理這一問題(IDLE的編輯器當然也是如此,大多數其他可以感知Python程式碼的編輯器也是如此)。

while boolean_expression:

suite

while語句用於0次或多次執行某個suite,迴圈執行的次數取決於while迴圈中布林表示式的狀態,下面給出其語法格式:

while True:

item =get_next_item()

if not item:

break

process_Item(item)

break語句的作用是將控制流導向到break所在的最內層迴圈也就是說跳出迴圈;continue語句的作用是將控制流導向到迴圈起始處。

for variable in iterable:

suite

countries = [“Denmark”, “Finland”, “Norway”, ”Sweden“]

for country in countries:

print(country)

Python的for迴圈語句重用了關鍵字in (在其他上下文中,in是一個成員運算子), 並使用如下的語法格式。與while迴圈類似,for迴圈也支援break語句與continue語句。variable將逐一引用iterable中的每個物件,iterable是可以迭代的任意資料型別, 包括字串(此時的迭代是逐個字元進行)、列表、元組以及Python的其他組合資料 型別。

Python的很多函式與方法都會產生異常,並將其作為發生錯誤或重要事件的標誌。 與Python的其他物件一樣,異常也是一個物件,轉換為字串時(比如,列印時), 異常會產生一條訊息文字。異常處理的簡單語法格式如下:

try:

try_suite

except exception1 as variable1:

exception_suite1

……

except exceptionN as variableN:

exception_suiteN

要注意的是,as variable部分是可選的。我們可以只關心產生了某個特定的異常, 而不關心其具體的訊息文字。

異常處理以如下的邏輯工作:如果try塊中的suite都正常執行,而沒有產生異常, 則except模組將被跳過;如果try塊中產生了異常,則控制流會立即轉向第一個與該異常匹配的suite—這意味著,跟隨在產生異常的語句後面的suite中的語句將不再執行;如果發生了異常,並且給定了 as variable部分,則在異常處理suite內部variable引用的是異常物件。

如果異常發生在處理except塊時,或者某個異常不能與任何一個except塊匹配,Python就會在下一個封閉範圍內搜尋一個匹配的except塊。對合適的異常處理模組的搜尋是向外擴充套件的,並可以延展到呼叫棧內,直到發現一個匹配的異常處理模組,或者找不到匹配的模組,這種情況下,程式將終止,並留下一個未處理的異常,此時, Python會列印回溯資訊以及異常的訊息文字。

s = input(“enter an integer: “)

try:

i = int(s)

print(“valid integer entered:”, i)

except ValueError as err:

print(err)

‘’‘

如果使用者輸入的是3。5,那麼輸出為:

invalid literal for int() with base 10: ’3。5‘

但是如果使用者輸入的是13,那麼輸出為:

valid integer entered: 13

’‘’

算術運算子(Arithmetic Operators)#要素6

Python提供了完整的算術運算子集,包括用於基本四則數學運算的運算子+、-、 *、/此外,很多Python資料型別可以使用一些增強的賦值運算子,比如+=與*=。在運算元都是整數時,+、-、*等運算子可以分別按正常的加法、減法、乘法進行運算。要注意的是,像大多數程式設計語言一樣,在Python中,-號既可以作為單值運算子(否定),也可以作為二元運算子(減法),Python與一般程式語言不同的地方在於對除法的處理,除法運算子會產生一個浮點值,而不是一個整數值;很多其他程式設計語言都是 產生一個整數值,並剝離掉小數部分。如果需要產生一個整數值結果,我們可以使用 int()進行轉換(或使用剝離運算子//,後面會進行討論)

>>> 12 / 3

4。0

>>> 3 / 2

1。5

>>> a = 5

>>> a

5

>>> a += 8

>>> a

13

第一點需要記住的是,int資料型別是固定的——也就是說,一旦賦值,就不能改變,因此,對固定的物件使用增強的賦值運算子時,實際上是建立一個物件來儲存結果,之後,目標物件引用重新繫結,以便引用上面建立的結果物件,而不再引用以前的物件。根據這一原理,前面的例子中,在執行到a+=8語句時,Python會計算a+8, 將所得結果儲存到新的int物件,之後將a重新繫結為引用這個新的int物件(如果a 正在引用的原始物件沒有其他的物件引用,就會進入垃圾收集流程)。

第二個微妙之處在於,a operator b與a = a operator b並不完全一致。前者只查詢一次a的值,因而具有更快的可能性。此外,如果a是一個複雜的表示式(例如,列表元素的索引位置計算,如items[offset +index]),那麼使用增強的賦值運算子時後者較少出錯。這是因為,如果計算過程需要改變,那麼維護者只需要改變一次,而不是兩次。

Python過載(對不同的資料型別進行重用)了運算子+與將其分別用於字串與列表,前者表示連線,後者表示追加字串並擴充套件(追加另一個字串)列表:

>>> name = ‘John”

>>> name + “Doe”

’JohnDoe‘

>>> name += “ Doe”

>>> name

’John Doe‘

>>> seeds =[“sesame”, “sunflower”]

>>> seeds += [“pumpkin”]

>>> seeds

[’sesame‘, ’sunflower‘, ’pumpkin‘]

由於列表是可變的,使用+=後,原始的列表物件會被修改,因此,沒有必要對seeds進行重新繫結。

既然Python語法聰明地隱藏了可變的與固定的資料型別的區別,為什麼還需要規定這兩種資料型別?原因最可能還是在於效能。在實現上,固定的資料型別具有比可變的資料型別更加高效的潛力(因為這些固定的資料型別從不改變)。此外,有些組合 資料型別(比如集合)只能操縱固定的資料型別。另一方面,可變的資料型別使用起來更加方便。

#列表+=運算子右邊的運算元必須是一個iterable,如果不是,就會產生意外

>>> seeds += 5

Traceback (most recent call last):

TypeError: ’int‘ object is not iterable

#對列表進行擴充套件的正確方法是使用iterable物件,例如

>>> seeds += [5]

>>> seeds

[’sesame‘, ’sunflower‘, ’pumpkin‘, 5]

>>> seeds = [“sesame”, “sunflower”, “pumpkin”]

>>> seeds += “durian”

>>> seeds

[’sesame‘, ’sunflower‘, ’pumpkin‘, ’d‘,’u‘,’r‘,’i‘,’a‘,’n‘]

列表的+=運算子會擴充套件列表,並將給定的iterable中的每一項追加到列表後。由於字串是一個iterable,這會導致字串中的每個字元被單獨新增。如果我們使用 append()方法,那麼該引數總是以單獨的專案新增。

輸入/輸出(Input/Output)#要素7

Python提供了內建的input()函式,用於接收來自使用者的輸入。這一函式需要一個可選的字串引數(並將其在控制檯上列印),之後等待使用者輸入響應資訊或按Enter鍵(或 Return鍵)來終止。如果使用者不輸入任何文字,而只是按Enter鍵,那麼input()函式會返回一個空字串;否則,會返回一個包含了使用者輸入內容的字串,而沒有任何行終止符。

print(“Type integers, each followed by Enter; or just Enter to finish”)

total = 0

count = 0

while True:

line = input(“integer:”)

if line:

try:

number = int(line)

except ValueError as err:

print(err)

continue

total += number

count += 1

else:

break

if count:

print(“count =”, count, “total =”, total, “mean =”, total / count)

以下為該程式的執行情況:

Type integers, each followed by Enter; or just Enter to finish

number: 12

number: 7

number: lx

invalid literal for int() with base 10: ’lx‘

number: 15

number: 5

number:

count = 4 total = 39 mean = 9。75

儘管這一程式很短,但是程式魯棒性很好。如果使用者輸入的是無法轉換為整數的字串,那麼這一問題會被異常處理流程捕捉,並列印一條相關資訊,之後程式流程轉向到迴圈的開始處(“繼續迴圈“)。最後一個if語句的作用是:如果使用者不輸入任何數值,那麼摘要不會輸出,並且被0除也會避免。

函式的建立及呼叫(Creating and Calling Functions)#要素8

Python提供了一種將多個suites封裝為函式的途徑,函式就可以引數化,並透過傳遞不同的引數來呼叫。下面給出的是用於建立函式的通常語法格式:

def functionName(arguments):

suite

這裡,arguments是可選的;如果有多個引數,就必須使用逗號進行分隔。每個 Python函式有一個返回值,預設情況下為None,除非我們使用語法return value來從函式返回,此時value是實際的返回值。返回值可以是僅僅一個值,也可以是一組值。 呼叫者可以忽略返回值,並簡單地將其丟棄。

要注意的是,def是一條與賦值運算子工作方式類似的語句。執行def時,會建立 一個函式物件,同時建立一個帶有指定名的物件引用(引用該函式物件)。由於函式也是物件,因此可以儲存在組合資料型別中,並作為引數傳遞給其他函式,後續章節中將展示這一點。

在編寫互動式的控制檯應用程式時,一個頻繁的需求是從使用者處獲取整數,下面 給出了一個完成這一功能的函式:

def getint(msg):

while True:

try:

i = int(input(msg))

return i

except ValueError as err:

print(err)

age = getint(”enter your age:“)

這個函式有一個引數msg,在while迴圈內部,使用者被要求輸入一個整數,如果輸入無效,則會產生一個ValueError異常,並列印錯誤訊息,同時迴圈也將迭代進行。 輸入有效的整數後,會返回給呼叫者。

Python模組實際上就是包含Python程式碼的。py檔案,比如自定義函式與類(自定義資料型別)的定義,有時候還包括變數等。要使用某個模組內的函式功能,必須先匯入該模組,例如:import sys

要匯入一個模組,必須使用inport語句,其後跟隨。py檔名,但是不需要寫出該副檔名匯入一個模組後,就可以訪問其內部包含的任意函式、類以及變數。例如: print(sys。argv)

sys模組提供了 argv變數——該變數實際上是一個列表,其首項為該程式的名稱, 第二個引數及後續的引數為該程式的命令列引數。前面兩行構成了完整的echoargs。py 程式。如果在命令列中以echoargs。py -v命令呼叫該程式,就會在控制檯上列印 [’echoargs。py‘, ’-v‘]。(在 UNIX 上,第一條目應該是/echoargs。py’)

通常,使用模組中函式的語法格式為moduleName。fimctionName(arguments)。其中使用了我們在要素3中介紹的點(“存取屬性”)運算子。標準模組的模組名都是小寫字母,因此,一些程式設計師為自己編寫的模組使用首字母大寫的名(比如,MyModule),以便區別於標準模組。

下面看一個例項,random模組(在標準庫的random。py檔案中)提供了很多有用的函式:

import random

x = random。randint(1, 6)

y = random。choice([”apple“, ”banana“, ”cherry“, ”durian“])

在這些語句執行之後,x將包含一個1〜6之間(包含邊界值)的一個整數,y將包含傳遞給random。choice。函式的列表之間的一個字串。

常規的做法是將所有import語句放在。py檔案的起始處,建議程式設計師首先匯入標準庫模組,之後匯入第三方庫模組,最後才匯入自己編寫的模組。

以上內容部分摘自影片課程05後端程式設計Python-2快速瞭解(下),更多實操示例請參照影片講解。跟著張員外講程式設計,學習更輕鬆,不花錢還能學習真本領。

上一篇:【燒友評測】gtneo釋出天璣1200,效能堪比高通870,價格和效能相當的
下一篇:【教育資訊】人工智慧在教育領域的應用與發展專家觀點深度解讀