Python程序语言-基础观念

来源:百度文库 编辑:神马文学网 时间:2024/10/04 07:19:17
BasicConcept 基礎觀念
簡介
僅僅在螢幕上印出 "哈囉, 世界" 顯然對學習一門程式語言來說是還不夠的。
你期待使用周蟒語言能達成更多的事情 -- 你可能會想接收一些輸入資料,處理它,再從中得到一些輸出結果。
在周蟒語言中,這些想法我們可以透過常量 (constants) 和變量 (variables) 來實現。
常量
字面常量
字面常量 (Literal Constants) 就是‘如同字面意義的‘常量。
如"數值",5, 1.23, 9.25e-3 都是數值型態的字面常量;
或是"字串",‘這是個字串‘(單引號),"這也是個字串!"(雙引號), ‘This is a string‘,"This is also a string", 這些都是都是字串型態的字面常量。
這些常量之所以被叫作字面常量,是因為我們總是按照這些資料的字面意義來使用它們。
舉個例子,數值 2 總是代表數值 2, 而不是代表其他東西。 因為它是個常量,所以它的值不能被改變。也因此這些值被稱為字面常量。
數值
周蟒語言中定義了4種類型的數值(Numbers) -整數(integers),長整數 (long integers),浮點數 (floating point) 和複數 (complex numbers)。
2,1025 都是整數的例子
長整數不過是大一些的整數
3.23,52.3E-4 是浮點數的例子。標記符號‘E‘ 表示 10 的冪(科學數學表示法)。在此 52.3E-4 代表的是 52.3 x 10-4 這個數值。
(-5 + 4j) 和 (2.3 - 4.6j) 是複數的例子
字串
字串(Strings)基本上就是一堆字的組合。換個更正式一點的說法來說則是: 字串是字元的序列。
最簡單指定字串的方法就是使用單引號或雙引號。
單引號
你可以用單引號(Single Quotes)來指定字串如 ‘括號‘。所有的空白 (space 或 tabs )都照原樣保留。
雙引號
雙引號 (Double Quotes) 與單引號中的字串使用完全相同。但可以避免一些縮寫符號的問題,例如英文的 "What‘s your name?"語句。
給 C/C++ 使用者的話
周蟒語言中並沒有另外的 char 資料型態。事實上你不是很需要它,而且相信你也不會想念它。
給 Perl/PHP 使用者的話:
請記得單引號和雙引號的作用是一樣的--它們在各方面都沒有任何不同。變量
學到字面常量的概念後很快就開始覺得無聊了 -- 我們需要一些可以讓我們儲存任何資訊,又可以對它們進行處理的方法。
這就是為什麼要引入變量(Variables)的原因了。
變量如同它的名字 -- 變量的值是可以改變的。
例如,你可以使用變量來儲存任何訊息。變量只是電腦中用來儲存資訊的一部分記憶體。
與字面常量不同,你需要用某些方式來存取變量,因此用到的變量需要被‘命名‘。
我們先來看看我們可以用什麼名稱來命名變量吧。
標識符號的命名
變量是標識符號(Identifier)的一種。
標識符號的作用是用來標示‘某樣東西‘的名字,如姓名是每個人的標識符號。
在命名周蟒中的標識符號時,你必須遵循一些規則:
標識符號的第一個字符必須是字母表中的字母(大寫或小寫)或者底線(‘‘)。
標識符號名稱的其他部分可以由字母(大寫或小寫)、底線(‘_‘)或數字(0-9)組成。
標識符號名稱需要區分大小寫。例如,英文的 ‘myname‘ 和 ‘myName‘ 是不同的標識符號。注意兩者的 n, N 大小寫不同。
有效標識符號名稱的例子有 i、變量、my_name、name_23 和 a1b2_c3。
無效標識符號名稱的例子有 2things(字首不能為數字)、this is spaced out(中間有空格) 和 my-name(中間不是底線)。
資料型別
變量可以暫存不同型別的值,稱為資料型別 (Data Types)。我們已經討論過基本的型別如數值和字符串了。在後面的章節裡面,我們會瞭解怎麼使用類別來創造我們自己的型別。
物件
請記得任何在周蟒程式中使用的任何東西都是物件(Objects). 周蟒語言是非常物件導向的語言, 數字, 字串, 函式, 類別...所有東西都是物件.
使用變量和字面常量
我們來看看怎麼一起使用變量和如同字面意義的常量. 儲存下面的程式範例後運行這個程式.
如何撰寫周蟒程式
以下是如何儲存並運行周蟒程式的標準流程。
1. 打開你選擇的編輯器。 2. 輸入範例中的程式碼。 3. 儲存文件檔案,以範例程式第二行指出的檔案名稱為檔名。
按照慣例, 所有的 python 程式都以副檔名 .py 來儲存,周蟒程式可以用 .twpy或 .cnpy 為附檔名來儲存。4. 使用命令 "zhpy program.py" 啟動周蟒直譯器,或使用 IDLE 編輯器執行程式。你也可以使用之前提過的其他方法來執行程式。#!/usr/bin/env zhpy
# 檔名: var.twpy
i = 5
印出 i
i = i + 1
印出 i
s = ‘這是個字串.‘
印出 s
python 版:
#!/usr/bin/env python
# File name: var.py
i = 5
print i
i = i + 1
print i
s = ‘This is a string.‘
print s
輸出結果:
$ zhpy var.twpy
5
6
這是個字串.
python 版:
$ python var.py
5
6
This is a string.程式如何運作
首先, 我們使用賦值運算符號 "=" 賦予如同字面常量 ‘5‘ 一個識別符號 ‘i‘, 這行程式被稱為一個表達式(expression)。因為這行程式將表達它要做的某些事情。
在這個範例中,我們將識別符號 i 與 5 這個數值連結在一起。 下一步,我們用‘印出‘表達式來輸出變量 i 的值,即將變量的值‘印出‘到螢幕上。
我們接著對儲存在變量 i 中的值加上 1 後, 儲存回變量 i 中。
我們將處理這個表達式的前後變量 i 中所儲存的值都印出到螢幕上。並確認變量 i 的值現在變成了 6。
相當需要注意的一點是:
在表達式右手邊的內容,會優先被處理。 結果的值會被賦予(儲存)給左手邊的變量。
這就是為什麼像 i = i + 1 這樣的表達式,在賦值運算符號 (‘=‘) 的左右手邊都能使用變量 i 的原因。
同樣地, 我們賦予字面常量一個變量 s,然後將它印出到螢幕上。
給C/C++使用者的話
使用變量時只需要給它們賦一個值。不需要聲明或定義資料型別。邏輯行和自然行
自然行(Physical Lines)是你在寫程式時所看見的一行程式。 而邏輯行(Logical and)則是周蟒直譯器所看見的單個表達式。 周蟒直譯器假設每個自然行被直觀地對應到一個邏輯行 。

印出 ‘哈囉, 世界‘
python 版:
print ‘Hello World‘
這樣的表達式就是一個邏輯行的例子. ---- 這是一個邏輯行, 也對應到一個自然行 (就像你在編輯器中看到的那樣)。
周蟒語言鼓勵您每行只使用一個表達式, 這樣能讓程式碼更易於閱讀.
如果你想要在一個自然行中使用多於一個的邏輯行, 你需要使用分號(;)來明確表示一個邏輯行/表達式的結束.
例如:
i = 5
印出 i
python 版:
i = 5
print i
就相當於寫成:
i = 5;
印出 i;
python 版:
i = 5;
print i;
同樣地你也可以寫成:
i = 5; 印出 i;
python 版:
i = 5; print i;
或者也可以寫成:
i = 5; 印出 i
python 版:
i = 5; print i
當然在周蟒中你也可以用上各種中文變量名稱。
例如:
甲 = 5
印出 甲

子 = 5
印出 子
註解: 英文範例中常用的無特殊意函變量有 i, x, y等英文字母。本書的中文範例在使用到一些無特殊意函變量時,為對照容易通常也直接使用了英文變量名稱。中文範例的無特殊意義中文變量取自古代曆法與術數常用的天干地支計數。天干指的是"甲,乙,丙,丁..."等變量,地支指的是"子,丑,寅,卯..."等變量。
然而,作者強烈建議你在每個自然行中只寫一句的邏輯行。僅僅在邏輯行實在太長了的時候,才用多於一個自然行來寫一個的邏輯行。
這是為了盡量避免使用分號,以使程式碼更容易被閱讀。
事實上,我幾乎沒有在任何周蟒/python 程式中看到過分號。
註解: 你可以很容易將 c 程式碼轉換拿到周蟒中運行,在轉換的過程中你只要把用不到的程式碼註解掉,而暫時不必管分號。
有個標準可以判斷邏輯行是不是太長了: 一般說來,超過 80 個字元就算太長。(舊的螢幕一行只能顯示80個字元。而如果你用 PDA 寫程式,那 80 個字元可能還是太長了)
下面是一個用多個自然行寫一個邏輯行的例子。
s = ‘這是個字串.‘ \
‘接續一個字串.‘
印出 s
python 版:
s = ‘This is a string. \
This continues the string.‘
print s
輸出結果:
這是個字串. 繼續再一個字串.
python 版:
This is a string. This continues the string.
注意使用反斜線符號(\)來表示邏輯行將繼續到下一個自然行. 這被稱為明確的行連接 (explicit line joining).
同樣地, 以下的語句:
印出 \
i
python 版:
print \
i
其效果與如下寫法的效果相同:
印出 i
python 版:
print i
有時候, 當邏輯行中使用了小括弧(圓括號)、中括弧(方括號)或大括弧(波形)時,並不需要使用反斜線來表示邏輯行將繼續到下一個自然行。
這樣的情形被稱為"不明確的行連接(implicit line joining)"。
你可以在後面介紹如何使用‘列表‘的章節中看到這樣的用法。
程式碼縮排
在 python 語言與周蟒語言裡, ‘空白‘也是語言其中重要的一環。準確地說,每行開頭(行首)留的空白數量相當重要. 這被稱為程式碼縮排 (或叫縮進, Indentation)。
這意味著相關的表達式必須有相同層次的程式碼縮排。這樣的程式碼集合被稱為程式碼的區塊 (block)。 我們將在後面的章節中看到程式碼區塊的重要性的例子。
而現在你應該知道的是: 在周蟒語言裡使用不正確的程式碼縮排將會引發錯誤,讓你的周蟒程式無法執行。所以請務必注意縮排的規則。
例如:
i = 5 # 錯誤! 注意開頭(行首)多了一個空白
印出 i
python 版:
i = 5 # Error!
print i
輸出結果:
$ zhpy
>>> i = 5
File "", line 1
i = 5
^
SyntaxError: invalid syntax
python 版:
$ python
>>> i = 5
File "", line 1
i = 5
^
SyntaxError: invalid syntax
注意到在第一行的開頭(行首)多了一個空格。
周蟒直譯器顯示的這個錯誤指出我們程式的語法是無效的,例如程式沒有好好照著周蟒語法來編寫。
它提醒了你不能任意地開始新的程式碼表達式區塊 (除了你一直在使用的主要程式碼區塊)。
作者將會在後面的章節,如控制流中詳細介紹什麼情況下妳可以使用新的程式碼區塊。
譯註: 程式碼縮排是從其他語言過來學習周蟒語言的初學者最常最容易遇到的困難點。選一個好用的編輯器可以讓你少遇到一些這樣的麻煩。
如何縮排程式碼
不要混合使用 tabs 符號和空格符號來縮排程式碼,因為這在跨不同的平台使用的時候會無法正常工作。 python 語言與周蟒語言的官方建議是在每個縮排層次都使用四個空格。並盡量不要混合使用 tab 符號。
選擇一種風格後一貫地使用它是最重要的。
給 Vim 使用者的話
如果你使用 Vim, 妳可以開啟將 tab 符號自動轉換成四個空格的功能, 這樣你就不必每次自己輸入四個空格. 你也可以開啟自動程式碼縮排的功能, 以在同個程式碼區塊中自動縮排.你可以在 Vim Tip #12 中找到更多的資訊.http://www.vim.org/tips/tip.php?tip_id=12結語
我們已經討論了很多周蟒程式語言基礎的瑣碎細節。在繼續學習之前,請確信你對本章的內容清楚明瞭。 它們是接下來章節的基礎。
接下來,我們將繼續學習關於運算符跟表達式。
學習程式的第一個範例 |運算符和表達式
註釋: 本文布局與敘述多取自"咬一口 Python 程式語言" (creative common 授權),由 gasolin 翻譯。