後端編程Python3-快速了解(下)PPT文稿

2021-02-23 張員外講編程

本節是第五講的第二小節,上節為大家介紹了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快速了解(下),更多實操示例請參照視頻講解。跟著張員外講編程,學習更輕鬆,不花錢還能學習真本領。

相關焦點

  • python操作Power Point:使用演示文稿
    python操作Power Point:使用演示文稿使用演示文稿python-pptx允許您創建新的演示文稿以及對現有演示文稿進行更改。實際上,它只允許您更改現有演示文稿; 只是如果你從一個沒有任何幻燈片的演示文稿開始,它首先感覺就像你從頭開始創建一個幻燈片。
  • 「技術文章」《Python 資料庫 GUI CGI編程》
    1.寫在前邊上一次,我們介紹了Python的入門的文章,今天我們就來介紹下Python的資料庫,GUI, CGI的編程,以及Python 2.x 與Python 3.x的區別。2.連接資料庫 Python 標準資料庫接口為 Python DB-API,MySQLdb 是用於Python連結Mysql資料庫的接口。
  • 程式設計師大神分享零基礎如何30天入門快速學習python
    了解Python是什麼,都能做些什麼?2. 知道什麼是變量、算法、解釋器3. Python基本數據類型4. 列表和元組的操作方法5. 字符串操作方法6.基本的字典操作方法以上這些可以略微掌握之後就進行下一步,遇到不會的可以在網上查找一下,或者看下書和筆記以及一些基礎的學習視頻。三、掌握Python的條件、循環和相關的執行語句任何知識它的基礎知識都是有些枯燥的,現在我們就可以動手來做一些邏輯層面的東西了。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    > 36深度學習項目實戰3 2實用編程技巧進階 1-1課程介紹。用程序快速排版 6s4 郵件自動化處理 秒速回復全靠 7s5 web自動化處理 速做網站不求人 8 sx學員成果分享 10[hybridDev之VBA基礎]務必理解對象模型 11編程讓生活更美好 之 初識 excel操控 12【VBA宏工程插件與python+xlwings混合調用】 13python
  • python初學者必看的學習路線 Python是近幾年比較火的程式語言
    Python是近幾年比較火的程式語言之一,因為人工智慧的火爆,讓很多人都想從事python開發。很多零基礎學員在學習python的時候都會走一些彎路,下面小編就為大家分享python學習路線圖,幫助零基礎學員在學習的時候少走彎路。 很多人都在問Python學習步驟應該如何安排?
  • 通過python-pptx模塊操作ppt文件
    本文主要介紹python操作ppt的技巧,編程的優勢在於處理速度,對於高大上的ppt設計,還是需要"以人為本", 所以該模塊的使用場景主要是ppt基本元素的提取和添加,適合大量內容的轉化,比如word轉ppt, 減少大量繁瑣的人工操作,儘管提供了一些基本的樣式設計,但是並不能滿足日常辦公對ppt美觀性的要求。
  • 自學程式語言先學Java還是python?記住這5點你就不會迷茫
    學習程式語言,首先要了解程式語言的背景,到底是做什麼的然後進行學習,怎麼去了解程式語言的背景呢,主要是解決怎麼樣的問題,比如Java語言學完了,到底Java能幹等,什麼崗位需要Java編程,你只有這樣去了解它是做什麼的之後,你才知道自己想做Java後端還、大數據還是機器學習。
  • Python遊戲編程
    為了達到這一目的,本課程應用python語言的語法知識帶領學生從無到有的開發遊戲,通過每個遊戲項目逐步應用學到的語法知識,在實際編程中加深體會。在課程設計中儘量站在初學者的角度,降低開發遊戲的難度,從而方便學生理解及掌握遊戲編程的基本原理和實現方法,逐步提高學生對編程的興趣和能力。
  • Python編程學了有用嗎?
    Python編程學了有用嗎?眾所周知,目前家長對於孩子的教育越來越重視,培養孩子的編程思維也是大家關心的話題,孩子學習Python語言,需要使用精確到標點、分號等特殊字符,可以提高孩子的編程能力和邏輯思維能力。作為成成年人學python編程可以大大提高工作效率。
  • Java VS Python:哪個未來發展更好?
    很多開發者認為Python是比Java更高效的語言,Python是一種解釋性語言,伴隨著優雅的語法,它是腳本編寫和快速應用程式開發在許多領域的絕佳選擇。Python是一種動態類型的程式語言,無需聲明變量。
  • Linux 平臺下 Python 腳本編程入門(一)
    在這個由兩篇文章構成的系列中,我們將回顧 Python 的基礎部分,希望初學編程的你能夠將這篇實用的文章作為一個編程入門的跳板,和日後使用 Python 時的一篇快速指引。Linux 中的 PythonPython 2.x 和 3.x 通常已經內置在現代 Linux 發行版中,你可以立刻使用它。
  • python前端和後端數據交互,tornado框架入門,初學小試牛刀!
    Python前端和後端是如何交互的,怎麼用tornado框架快速搭建前端和後端數據交互?前端與後端的數據交互,最常用的就是GET、POST,比較常用的用法是:提交表單數據到後端,後端返回json前端的數據發送與接收1)提交表單數據2)提交JSON數據後端的數據接收與響應
  • 前端開發,測試,後端,該如何選擇?
    首先,我是一名從業8年的前端工程師,後端也略會一二,期間也兼職過公司的測試崗位,談談我的一點想法,僅供參考。1、所謂前端首先要搞明白,你是否對前端開發、編程敲代碼感興趣,而不是說看中了IT行業的高薪,覺得別人去培訓機構培訓半年,出來在西安月薪8K等。如果你對編程不感興趣,那麼你在培訓機構或者是工作上班後,每天都是折磨,都是煎熬。
  • Python快速入門的方法
    因為Python簡單,所以學起來快,有編程經驗的程式設計師一周就能上手Python。但是!Python對有基本的程序概念的人來說很簡單,但對於新手來說真不一定算簡單。畢竟,寫起來簡單不代表概念簡單。那麼,作為一個新手,如何才能快速並有效的入門呢?
  • 2021年程式語言趨勢預測:Python和JavaScript仍火熱,Go不可小覷
    程式語言及框架似乎總是被人拿來比較,這裡我們只談語言。作為開發人員,在當今這個技術更迭飛快的時代要連年吃香並非易事,很多十年開發經驗以上的開發人員不知道經歷了多少語言的變化,今年還在用C語言,下一年就是D了。「PHP是世界上最好的程式語言」已被人忘卻,但「青春飯」和35歲「金龍躍魚門」的傳說確真實發生。
  • 杭州少兒編程培訓機構哪家好?少兒編程Python語言好學嗎
    現在,人工智慧和數據分析正在蓬勃發展,python是一顆冉冉升起的新星。有人說python可能是所有語言中最適合人類編程的。為什麼?因為python比任何其他語言更高效、更快、更強大!少兒編程Python語言好學嗎開發更有效率有數據表明,python的效率是Java的兩倍,這意味著python的代碼行數更少,對於編程技能掌握方面
  • 人生苦短,我用Python,那麼問題來了,普通人要學python嗎?
    從 2018 年起浙江省信息技術教材程式語言將會更換為 Python。   2、Python納入山東省的小學教材課程,小學生都開始接觸 Python 語言了。   3、Python 將加入全國計算機等級考試!
  • Python零基礎編程——起步並搭建環境
    基礎知識,不需要深入學習,簡單找本讀物學習下還是很有必要的。推薦下面這本書,以圖配文的形式詳細講解了二進位、內存、數據壓縮、源文件和可執行文件、作業系統和應用程式的關係、彙編語言、硬體控制方法等內容,讓你了解從用戶雙擊程序圖標到程序開始運行之間到底發生了什麼。
  • 小孩兒都能學會的零基礎Python學習教程啦?太驚訝了
    各個程式語言都有自己擅長的方面,比如 Linux 內核系統調用、底層交互方面,C++ 可能更佔優勢;實際業務場景中有大量的計算任務和並發時,可能要達到某一參數指標,Go 會更加簡單。只是語法簡單沒有用,在能滿足業務要求的前提下,誰最容易達成目標,誰才是最簡單的。