Python程序員快速入門?第一個編程實例

Python 程序員 C語言 腳本語言 算術 數學 異步社區 2019-05-21

Python有兩種主要的方式來完成你的要求:語句和表達式(函數、算術表達式等)。相信大部分讀者已經瞭解二者的不同,但是不管怎樣,我們還是再來複習一下。語句使用關鍵字來組成命令,類似告訴解釋器一個命令。你告訴Python做什麼,它就為你做什麼,語句可以有輸出,也可以沒有輸出。下面我們先用print語句完成程序員們老生常談第一個編程實例,Hello World。

>>> print 'Hello World!' 
Hello World!

而表達式沒有關鍵字。它們可以是使用數學操作符構成的算術表達式,也可以是使用括號調用的函數。它們可以接受用戶輸入,也可以不接受用戶輸入,有些會有輸出,有些則沒有。(在Python中未指定返回值的函數會自動返回None,等價於NULL)下面舉一個例子,函數abs()接受一個數值輸入,然後輸出這個數值的絕對值。

>>> abs(4)
4
>>> abs(-4)
4

本章中我們將分別介紹語句和表達式。我們先來研究 print 語句。

1.1 程序輸出,print語句及“Hello World!”

有些語言,比如C,通過函數輸出數據到屏幕,例如函數printf()。然而在Python和大多數解釋執行的腳本語言中,則使用語句進行輸出。很多的shell腳本語言使用echo命令來輸出程序結果。

Python程序員快速入門?第一個編程實例

核心筆記:在交互式解釋器中顯示變量的值

通常當你想看變量內容時,你會在代碼中使用print語句輸出。不過在交互式解釋器中,你可以用 print 語句顯示變量的字符串表示,或者僅使用變量名查看該變量的原始值。

在下面的例子中,我們把一個字符串賦值給變量myString,先用print 來顯示變量的內容,之後用變量名稱來顯示。

>>> myString = 'Hello World!'
>>> print myString
Hello World!
>>> myString
'Hello World!'

注意,在僅用變量名時,輸出的字符串是用單引號括起來了的。這是為了讓非字符串對象也能以字符串的方式顯示在屏幕上——即它顯示的是該對象的字符串表示,而不僅僅是字符串本身。引號表示你剛剛輸入的變量的值是一個字符串。等你對Python有了較深入的瞭解之後,你就會知道print語句調用str()函數顯示對象,而交互式解釋器則調用repr()函數來顯示對象。

下劃線( _ )在解釋器中有特別的含義,表示最後一個表達式的值。所以上面的代碼執行之後,下劃線變量會包含字符串。

>>> _
Hello World!

Python的print語句,與字符串格式操作符(%)結合使用,可實現字符串替換功能,這一點和 C 語言中的printf()函數非常相似。

>>> print "%s is number %d!" % ("Python",1)
Python is number 1!

%s表示由一個字符串來替換,而%d表示由一個整型來替換,另外一個很常用的就是%f,它表示由一個浮點型來替換。我們會在本章中看到更多類似的例子。Python非常靈活,所以即使你將數字傳遞給 %s,也不會像其他要求嚴格的語言一樣引發嚴重後果。參閱6.4.1節以瞭解更多關於字符串格式操作符的信息。Print語句也支持將輸出重定向到文件。這個特性是從Python2.0開始新增的。符號 >> 用來重定向輸出,下面這個例子將輸出重定向到標準錯誤輸出。

import sys
print >> sys.stderr, 'Fatal error: invalid input!'

下面是一個將輸出重定向到日誌文件的例子。

logfile = open('/tmp/mylog.txt', 'a')
print >> logfile, 'Fatal error: invalid input!'
logfile.close()

1.2 程序輸入和raw_input()內建函數

從用戶那裡得到數據輸入的最容易的方法是使用raw_input()內建函數。它讀取標準輸入,並將讀取到的數據賦值給指定的變量。你可以使用 int() 內建函數將用戶輸入的字符串轉換為整型。

>>> user = raw_input('Enter login name: ')
Enter login name: root
>>> print 'Your login is:', user
Your login is: root

上面這個例子只能用於文本輸入。下面是輸入一個數值字符串(並將字符串轉換為整型)的例子:

>>> num = raw_input('Now enter a number: ') 
Now enter a number: 1024
>>> print 'Doubling your number: %d' % (int(num) * 2)
Doubling your number: 2048

內建函數int()將數值字符串轉換成整型值,這樣才可以對它進行數學運算。參閱第6.5.3節以瞭解更多有關內建函數raw_input()的知識。

核心筆記:從交互式解釋器中獲得幫助

在學習 Python 的過程中,如果需要得到一個生疏函數的幫助,只需要對它調用內建函數help()。通過用函數名作為 help()的參數就能得到相應的幫助信息。

>>> help(raw_input)
Help on built-in function raw_input in module __builtin__:
raw_input(...)  
   raw_input([prompt]) -> string

從標準輸入讀取一個字符串並自動刪除串尾的換行字符。如果用戶鍵入了EOF字符(Unix: Ctrl+D, Windows: Ctrl+Z+回車),則引發EOFError,在Unix平臺,只要可用,就使用GNU readline庫。如果提供提示字符串參數,則顯示該字符串並自動刪去字符串末尾的換行字符。(本段是help(raw_input)的輸出,譯文是對其加以解釋,方便讀者理解——譯者注)

核心風格: 一直在函數外做用戶交互操作

新手在需要顯示信息或得到用戶輸入時,很容易想到使用 print 語句和raw_input()內建函數。不過我們在此建議函數應該保持其清晰性,也就是它只應該接受參數,返回結果。從用戶那裡得到需要的數據,然後調用函數處理,從函數得到返回值,然後顯示結果給用戶。這樣你就能夠在其他地方也可以使用你的函數而不必擔心自定義輸出的問題。這個規則的一個例外是,如果函數的基本功能就是為了得到用戶輸出,或者就是為了輸出信息,這時在函數內使用print語句或 raw_input() 也未嘗不可。更重要的是,將函數分為兩大類,一類只做事,不需要返回值(比如與用戶交互或設置變量的值),另一類則執行一些運算,最後返回結果。如果輸出就是函數的目的,那麼在函數體內使用print語句也是可以接受的選擇。

1.3 註釋

和大部分腳本及Unix-shell語言一樣,Python也使用 # 符號標示註釋,從 # 開始,直到一行結束的內容都是註釋。

>>> # one comment
... print 'Hello World!'    # another comment
Hello World!

有一種叫做文檔字符串的特別註釋。你可以在模塊、類或者函數的起始添加一個字符串,起到在線文檔的功能,這是Java程序員非常熟悉的一個特性。

def foo():
   "This is a doc string."
   return True  

與普通註釋不同,文檔字符串可以在運行時訪問,也可以用來自動生成文檔。

1.4 操作符

和其他絕大多數的語言一樣,Python中的標準算術操作符以你熟悉的方式工作。

+    -    *    /    //   %    **

加、減、乘、除和取餘都是標準操作符。Python有兩種除法操作符,單斜槓用作傳統除法,雙斜槓用作浮點除法(對結果進行四捨五入)。傳統除法是指如果兩個操作數都是整型的話,它將執行的是地板除(取比商小的最大整數)(關於“地板除”請參考第5章——譯者注),而浮點除法是真正的除法,不管操作數是什麼類型,浮點除法總是執行真正的除法。你可以在第5章學到更多有關傳統除法、真正的除法及浮點除法的知識。

還有一個乘方操作符,雙星號(**)。儘管我們一直強調這些操作符的算術本質,但是請注意對於其他數據類型,有些操作符是被重載了,比如字符串和列表。讓我們看一個例子。

>>> print -2 * 4 + 3 ** 2
1

就像你看到的,操作符的優先級和你想象的一樣:+和−優先級最低,*、/、//、%優先級較高,單目操作符+和−優先級更高,乘方的優先級最高。(3**2)首先求值,然後是(−2*4),然後是對兩個結果進行求和。

Python當然也有標準比較操作符,比較運算根據表達式的值的真假返回布爾值。

<    <=   >    >=   ==   !=   <>

試一試,看看這些比較運算會得到什麼結果。

>>> 2 < 4
True
>>> 2 == 4
False
>>> 2 > 4
False
>>> 6.2 <= 6
False
>>> 6.2 <= 6.2
True
>>> 6.2 <= 6.20001
True

Python目前支持兩種“不等於”比較操作符,!=和<>,分別是C風格和ABC/Pascal風格。目前後者慢慢地被淘汰了,所以我們推薦使用前者。

Python也提供了邏輯操作符。

and   or   not

使用邏輯操作符可以將任意表達式連接在一起,並得到一個布爾值。

>>> 2 < 4 and 2 == 4
False
>>> 2 > 4 or 2 < 4
True
>>> not 6.2 <= 6
True
>>> 3 < 4 < 5
True

最後一個例子在其他語言中通常是不合法的,不過Python支持這樣的表達式,既簡潔又優美。它實際上是下面表達式的縮寫:

>>> 3 < 4 and 4 < 5

核心風格:合理使用括號增強代碼的可讀性

在很多場合使用括號都是一個好主意,而沒用括號的話,會使程序得到錯誤結果,或使代碼可讀性降低,引起閱讀者困惑。括號在Python語言中不是必須存在的,不過為了可讀性,使用括號總是值得的。任何維護你代碼的人會感謝你,在你再次閱讀自己的代碼時,你也會感謝你自己。

相關推薦

推薦中...