Python基础教程(二):基础语法、变量类型
Python 基礎語法
Python語言與Perl,C和Java等語言有許多相似之處。但是,也存在一些差異。
在本章中我們將來學習Python的基礎語法,讓你快速學會Python編程。
第一個Python程序
交互式編程
交互式編程不需要創建腳本文件,是通過 Python 解釋器的交互模式進來編寫代碼。
linux上你只需要在命令行中輸入 Python 命令即可啟動交互式編程,提示窗口如下:
$ python Python 2.7.6 (default, Sep? 9 2014, 15:04:36) [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>>Window上在安裝Python時已經已經安裝了默認的交互式編程客戶端,提示窗口如下:
在 python 提示符中輸入以下文本信息,然后按 Enter 鍵查看運行效果:
>>> print "Hello, Python!";在 Python 2.7.6 版本中,以上事例輸出結果如下:
Hello, Python!如果您運行的是新版本的Python,那么你就需要在print語句中使用括號如:
>>>? print ("Hello, Python!");腳本式編程
通過腳本參數調用解釋器開始執行腳本,直到腳本執行完畢。當腳本執行完成后,解釋器不再有效。
讓我們寫一個簡單的Python腳本程序。所有Python文件將以.py為擴展名。將以下的源代碼拷貝至test.py文件中。
print "Hello, Python!";這里,假設你已經設置了Python解釋器PATH變量。使用以下命令運行程序:
$ python test.py輸出結果:
Hello, Python!讓我們嘗試另一種方式來執行Python腳本。修改test.py文件,如下所示:
#!/usr/bin/python ? print "Hello, Python!";這里,假定您的Python解釋器在/usr/bin目錄中,使用以下命令執行腳本:
$ chmod +x test.py???? # 腳本文件添加可執行權限 $./test.py輸出結果:
Hello, Python!Python 標識符
在python里,標識符有字母、數字、下劃線組成。
在python中,所有標識符可以包括英文、數字以及下劃線(_),但不能以數字開頭。
python中的標識符是區分大小寫的。
以下劃線開頭的標識符是有特殊意義的。以單下劃線開頭(_foo)的代表不能直接訪問的類屬性,需通過類提供的接口進行訪問,不能用"from xxx import *"而導入;
以雙下劃線開頭的(__foo)代表類的私有成員;以雙下劃線開頭和結尾的(__foo__)代表python里特殊方法專用的標識,如__init__()代表類的構造函數。
Python保留字符
下面的列表顯示了在Python中的保留字。這些保留字不能用作常數或變數,或任何其他標識符名稱。
所有Python的關鍵字只包含小寫字母。
| and | exec | not |
| assert | finally | or |
| break | for | pass |
| class | from | |
| continue | global | raise |
| def | if | return |
| del | import | try |
| elif | in | while |
| else | is | with |
| except | lambda | yield |
行和縮進
學習Python與其他語言最大的區別就是,Python的代碼塊不使用大括號({})來控制類,函數以及其他邏輯判斷。python最具特色的就是用縮進來寫模塊。
縮進的空白數量是可變的,但是所有代碼塊語句必須包含相同的縮進空白數量,這個必須嚴格執行。如下所示:
if True: ??? print "True" else: ? print "False"以下代碼將會執行錯誤:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:test.py ? if True: ??? print "Answer" ??? print "True" else: ??? print "Answer" ??? # 沒有嚴格縮進,在執行時保持 ? print "False" $ python test.py? ??File "test.py", line 5 ??? if True: ??? ^ IndentationError: unexpected indentIndentationError: unexpected indent 錯誤是python編譯器是在告訴你"Hi,老兄,你的文件里格式不對了,可能是tab和空格沒對齊的問題",所有python對格式要求非常嚴格。
如果是 IndentationError: unindent does not match any outerindentation level錯誤表明,你使用的縮進方式不一致,有的是 tab 鍵縮進,有的是空格縮進,改為一致即可。
因此,在Python的代碼塊中必須使用相同數目的行首縮進空格數。
建議你在每個縮進層次使用 單個制表符或 兩個空格或 四個空格 , 切記不能混用
多行語句
Python語句中一般以新行作為為語句的結束符。
但是我們可以使用斜杠( \)將一行的語句分為多行顯示,如下所示:
total = item_one + \ ??????? item_two + \ ??????? item_three語句中包含[], {} 或 () 括號就不需要使用多行連接符。如下實例:
days = ['Monday', 'Tuesday', 'Wednesday', ??????? 'Thursday', 'Friday']Python 引號
Python 接收單引號(' ),雙引號(" ),三引號(''' """) 來表示字符串,引號的開始與結束必須的相同類型的。
其中三引號可以由多行組成,編寫多行文本的快捷語法,常用語文檔字符串,在文件的特定地點,被當做注釋。
word = 'word' sentence = "這是一個句子。" paragraph = """這是一個段落。 包含了多個語句"""Python注釋
python中單行注釋采用 # 開頭。
#!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:test.py ? # 第一個注釋 print "Hello, Python!";? # 第二個注釋輸出結果:
Hello, Python!注釋可以在語句或表達式行末:
name = "Madisetti" # 這是一個注釋python 中多行注釋使用三個單引號(''')或三個單引號(""")。
#!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:test.py ? ? ''' 這是多行注釋,使用單引號。 這是多行注釋,使用單引號。 這是多行注釋,使用單引號。 ''' ? """ 這是多行注釋,使用雙引號。 這是多行注釋,使用雙引號。 這是多行注釋,使用雙引號。 """Python空行
函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。
空行與代碼縮進不同,空行并不是Python語法的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。但是空行的作用在于分隔兩段不同功能或含義的代碼,便于日后代碼的維護或重構。
記住:空行也是程序代碼的一部分。
等待用戶輸入
下面的程序在按回車鍵后就會等待用戶輸入:
#!/usr/bin/python ? raw_input("\n\nPress the enter key to exit.")以上代碼中 ,"\n\n"在結果輸出前會輸出兩個新的空行。一旦用戶按下鍵時,程序將退出。
同一行顯示多條語句
Python可以在同一行中使用多條語句,語句之間使用分號(;)分割,以下是一個簡單的實例:
import sys; x = 'foo'; sys.stdout.write(x + '\n')多個語句構成代碼組
縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。
像if、while、def和class這樣的復合語句,首行以關鍵字開始,以冒號( : )結束,該行之后的一行或多行代碼構成代碼組。
我們將首行及后面的代碼組稱為一個子句(clause)。
如下實例:
if expression : ???suite elif expression :? ???suite? else :? ???suite命令行參數
很多程序可以執行一些操作來查看一些基本信,Python可以使用-h參數查看各參數幫助信息:
$ python -h usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ... Options and arguments (and corresponding environment variables): -c cmd : program passed in as string (terminates option list) -d???? : debug output from parser (also PYTHONDEBUG=x) -E???? : ignore environment variables (such as PYTHONPATH) -h???? : print this help message and exit ? [ etc. ]?
?
Python 變量類型
變量存儲在內存中的值。這就意味著在創建變量時會在內存中開辟一個空間。
基于變量的數據類型,解釋器會分配指定內存,并決定什么數據可以被存儲在內存中。
因此,變量可以指定不同的數據類型,這些變量可以存儲整數,小數或字符。
?
變量賦值
Python中的變量不需要聲明,變量的賦值操作既是變量聲明和定義的過程。
每個變量在內存中創建,都包括變量的標識,名稱和數據這些信息。
每個變量在使用前都必須賦值,變量賦值以后該變量才會被創建。
等號(=)用來給變量賦值。
等號(=)運算符左邊是一個變量名,等號(=)運算符右邊是存儲在變量中的值。例如:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
?
counter = 100 # 賦值整型變量
miles = 1000.0 # 浮點型
name = "John" # 字符串
?
print counter
print miles
print name
以上實例中,100,1000.0和"John"分別賦值給counter,miles,name變量。
執行以上程序會輸出如下結果:
100
1000.0
John
?
多個變量賦值
Python允許你同時為多個變量賦值。例如:
a = b = c = 1
以上實例,創建一個整型對象,值為1,三個變量被分配到相同的內存空間上。
您也可以為多個對象指定多個變量。例如:
a, b, c = 1, 2, "john"
以上實例,兩個整型對象1和2的分配給變量a和b,字符串對象"john"分配給變量c。
?
標準數據類型
在內存中存儲的數據可以有多種類型。
例如,person.s年齡作為一個數值存儲和他或她的地址是字母數字字符存儲。
Python有一些標準類型用于定義操作上,他們和為他們每個人的存儲方法可能。
Python有五個標準的數據類型:
- Numbers(數字)
- String(字符串)
- List(列表)
- Tuple(元組)
- Dictionary(字典)
?
Python數字
數字數據類型用于存儲數值。
他們是不可改變的數據類型,這意味著改變數字數據類型會分配一個新的對象。
當你指定一個值時,Number對象就會被創建:
var1 = 1
var2 = 10
您也可以使用del語句刪除一些對象引用。
del語句的語法是:
del var1[,var2[,var3[....,varN]]]]
您可以通過使用del語句刪除單個或多個對象。例如:
del var
del var_a, var_b
Python支持四種不同的數值類型:
- int(有符號整型)
- long(長整型[也可以代表八進制和十六進制])
- float(浮點型)
- complex(復數)
實例
一些數值類型的實例:
| int | long | float | complex |
| 10 | 51924361L | 0.0 | 3.14j |
| 100 | -0x19323L | 15.20 | 45.j |
| -786 | 0122L | -21.9 | 9.322e-36j |
| 080 | 0xDEFABCECBDAECBFBAEl | 32.3+e18 | .876j |
| -0490 | 535633629843L | -90. | -.6545+0J |
| -0x260 | -052318172735L | -32.54e100 | 3e+26J |
| 0x69 | -4721885298529L | 70.2-E12 | 4.53e-7j |
- 長整型也可以使用小寫"L",但是還是建議您使用大寫"L",避免與數字"1"混淆。Python使用"L"來顯示長整型。
- Python還支持復數,復數由實數部分和虛數部分構成,可以用a + bj,或者complex(a,b)表示, 復數的實部a和虛部b都是浮點型
?
Python字符串
字符串或串(String)是由數字、字母、下劃線組成的一串字符。
一般記為 :
s="a1a2···an"(n>=0)
它是編程語言中表示文本的數據類型。
python的字串列表有2種取值順序:
- 從左到右索引默認0開始的,最大范圍是字符串長度少1
- 從右到左索引默認-1開始的,最大范圍是字符串開頭
如果你的實要取得一段子串的話,可以用到變量[頭下標:尾下標],就可以截取相應的字符串,其中下標是從0開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。
比如:
s = 'ilovepython'
s[1:5]的結果是love。
當使用以冒號分隔的字符串,python返回一個新的對象,結果包含了以這對偏移標識的連續的內容,左邊的開始是包含了下邊界。
上面的結果包含了s[1]的值l,而取到的最大范圍不包括上邊界,就是s[5]的值p。
加號(+)是字符串連接運算符,星號(*)是重復操作。如下實例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
str = 'Hello World!'
print str # 輸出完整字符串
print str[0] # 輸出字符串中的第一個字符
print str[2:5] # 輸出字符串中第三個至第五個之間的字符串
print str[2:] # 輸出從第三個字符開始的字符串
print str * 2 # 輸出字符串兩次
print str + "TEST" # 輸出連接的字符串
以上實例輸出結果:
Hello World!
H
llo
llo World!
Hello World!Hello World!
Hello World!TEST
?
Python列表
List(列表) 是 Python中使用最頻繁的數據類型。
列表可以完成大多數集合類的數據結構實現。它支持字符,數字,字符串甚至可以包含列表(所謂嵌套)。
列表用[ ]標識。是python最通用的復合數據類型??催@段代碼就明白。
列表中的值得分割也可以用到變量[頭下標:尾下標],就可以截取相應的列表,從左到右索引默認0開始的,從右到左索引默認-1開始,下標可以為空表示取到頭或尾。
加號(+)是列表連接運算符,星號(*)是重復操作。如下實例:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 輸出完整列表
print list[0] # 輸出列表的第一個元素
print list[1:3] # 輸出第二個至第三個的元素
print list[2:] # 輸出從第三個開始至列表末尾的所有元素
print tinylist * 2 # 輸出列表兩次
print list + tinylist # 打印組合的列表
以上實例輸出結果:
['abcd', 786, 2.23, 'john', 70.2]
abcd
[786, 2.23]
[2.23, 'john', 70.2]
[123, 'john', 123, 'john']
['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
?
Python元組
元組是另一個數據類型,類似于List(列表)。
元組用"()"標識。內部元素用逗號隔開。但是元素不能二次賦值,相當于只讀列表。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print tuple # 輸出完整元組
print tuple[0] # 輸出元組的第一個元素
print tuple[1:3] # 輸出第二個至第三個的元素
print tuple[2:] # 輸出從第三個開始至列表末尾的所有元素
print tinytuple * 2 # 輸出元組兩次
print tuple + tinytuple # 打印組合的元組
以上實例輸出結果:
('abcd', 786, 2.23, 'john', 70.2)
abcd
(786, 2.23)
(2.23, 'john', 70.2)
(123, 'john', 123, 'john')
('abcd', 786, 2.23, 'john', 70.2, 123, 'john')
以下是元組無效的,因為元組是不允許更新的。而列表是允許更新的:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
tuple[2] = 1000 # 元組中是非法應用
list[2] = 1000 # 列表中是合法應用
?
Python元字典
字典(dictionary)是除列表以外python之中最靈活的內置數據結構類型。列表是有序的對象結合,字典是無序的對象集合。
兩者之間的區別在于:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
字典用"{ }"標識。字典由索引(key)和它對應的值value組成。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # 輸出鍵為'one' 的值
print dict[2] # 輸出鍵為 2 的值
print tinydict # 輸出完整的字典
print tinydict.keys() # 輸出所有鍵
print tinydict.values() # 輸出所有值
輸出結果為:
This is one This is two {'dept': 'sales', 'code': 6734,'name': 'john'} ['dept', 'code', 'name'] ['sales', 6734, 'john']
?
Python數據類型轉換
有時候,我們需要對數據內置的類型進行轉換,數據類型的轉換,你只需要將數據類型作為函數名即可。
以下幾個內置的函數可以執行數據類型之間的轉換。這些函數返回一個新的對象,表示轉換的值。
| 函數 | 描述 |
| int(x [,base]) | 將x轉換為一個整數 |
| long(x [,base] ) | 將x轉換為一個長整數 |
| float(x) | 將x轉換到一個浮點數 |
| complex(real [,imag]) | 創建一個復數 |
| str(x) | 將對象 x 轉換為字符串 |
| repr(x) | 將對象 x 轉換為表達式字符串 |
| eval(str) | 用來計算在字符串中的有效Python表達式,并返回一個對象 |
| tuple(s) | 將序列 s 轉換為一個元組 |
| list(s) | 將序列 s 轉換為一個列表 |
| set(s) | 轉換為可變集合 |
| dict(d) | 創建一個字典。d 必須是一個序列 (key,value)元組。 |
| frozenset(s) | 轉換為不可變集合 |
| chr(x) | 將一個整數轉換為一個字符 |
| unichr(x) | 將一個整數轉換為Unicode字符 |
| ord(x) | 將一個字符轉換為它的整數值 |
| hex(x) | 將一個整數轉換為一個十六進制字符串 |
| oct(x) | 將一個整數轉換為一個八進制字符串 出處:http://www.runoob.com/python/python-tutorial.html |
總結
以上是生活随笔為你收集整理的Python基础教程(二):基础语法、变量类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础教程(一):简介、环境搭
- 下一篇: Python基础教程(三):运算符、条件