1. 程式人生 > >Python學習筆記——基礎篇(1): 變數及其型別

Python學習筆記——基礎篇(1): 變數及其型別

之前接觸過一點點Python,知道它是一門比較抽象的高階語言,功能十分強大,不過一直沒有抽出時間系統的學習,直到近些天才開始學習,在這裡就將學習的過程記錄一下,一方面為其它學習的人提供參考,另一方面梳理自己接觸到的知識。

概述

學習的第一步是蒐集資料,網上的資料比較零碎,如果有一本書,將會對我們系統學習大有幫助,如果沒有,也沒關係,我查閱了網上的一些資料,對比之後,向大家推薦“廖雪峰老師的Python學習網站”和Python的document,相比於網路上零碎的知識,廖老師的網站則很有條理,適合連續學習。而Python的document則是最權威的第一手資料,只不過其組織結構不適合初學者,而且是英文文件。當然,如果想要把Python學的爐火純青,細細研讀document是必不可少的。

梳理

廢話不多說,這裡給出自己這些天學習的知識的梳理。

Python2與Python3

兩者是不相容的,你沒有看錯,是不相容的,雖然Python3是新的版本,但是它的執行速度卻更慢,不過速度從來不是Python追求的目標,Python追求的是程式碼的簡潔,如果你是初學者,那麼暫時不必關注它們的區別,選擇其中一個版本學習即可,個人推薦Python3,新版本總有它的原因。
如果你很想知道他們的區別,可以參考以下文章。
python2與Python3的區別
What’s New in Python3

環境配置

只需要下載一個安裝包,裡面包含了直譯器,shell,manuals,和document,其中shell是一個互動式直譯器,和MATLAB非常像

Python變數

>>> s=1236186348
>>> type(s)
<class 'int'>
>>> i=1.0001
>>> type(i)
<class 'float'>
>>> a="hkjjfdk"
>>> type(a)
<class 'str'>

Python是一種OOP語言,裡面的所有變數都是Object,對於每一個變數,生來都有三個屬性,identity,type和value,我們可以認為,identity就是變數在記憶體中的地址,變數的type就是我們呼叫type()的返回值,比如上面的’int’,’float’,’str’,而變數的value就是我們生成這個變數時賦給它的值,如上面程式碼中s的value是1236186384,i的value是1.001,a的value是”hkjjfdk”。
同時Python是一種弱型別

的語言,定義變數時候不必顯式說明其型別,你的表達方式決定了它的型別,每種型別都有其對應的表達方式,下面一小節會總結出常用的型別的表達方式。

常用變數型別及其表示

變數型別 表示 備註
None None 用於函式返回空值,它的value是False
NotImplemented NotImplemented 有這個型別,但是暫時還沒搞明白怎麼使用
Ellipsis 省略號,它的value是True
int 1,0b0011,0xFFFF,int(1.001) 整數,有限大
bool True,False,bool(1) 非真即假
float 1.234,.001,1.,10e10,10e-10 浮點數,包含小數點即為浮點數,不分單精度和雙精度
complex 1+2j,complex(1,2) 複數,可以使用data.real和data.imag來訪問其實部和虛部
str ‘c’,”c”,”test”,’test’,chr(65) 是一個有序的序列,不可變物件(immutable),可以通過下表索引,可迭代,但不是迭代器
tuple (1,2,”jkhsf”),(1,) 當tuple只有一個元素的時候,注意要有逗號,有序序列,不可變物件,可以通過下表索引,可迭代,但不是迭代器
bytes b’abc’,bytes(“jksj”.encode()) 位元組資料,有序序列,可以通過下標索引,不可變,可迭代,但不是迭代器
list [1,2,[1,2,”lsjf”]] 列表,列表的元素任意,還可以是列表,有序序列,可以通過下標訪問,可變物件,可迭代,但是不是迭代器
bytearray bytearray(b”hjh”) 有序序列,可以通過下標索引,元素必須是0~255的整數,可變物件,可迭代,但不是迭代器
set {1,2,3,4},set([1,2,3]),set((1,2,3)) 無序序列,元素不可重複,不能索引,可變物件(使用Add()新增元素),可迭代但不是迭代器
frozenset frozenset({1,2,3}) 與set相比,唯一區別就是這事不可變的
dict {“liming”:80,”xiaohong”;90} 元素是key:value對,可以使用key進行索引,內部使用hash演算法實現key不能是可變型別,可迭代,但不是迭代器

下面解釋一下上表中反覆提到的一些術語與名詞:
有序序列(sequences):集合(set)相對應,其中的元素是有順序的,也是可重複的。
可變(mutable)與不可變(immutable):是說能否直接改變其value,list可以直接改變,如L[1]=1,但是tuple就不能,其它型別同理,其中set因為不能索引所以只能通過Add()方法新增元素。
可迭代(iterable)特指使用isinstance(x,Iterable)返回True的型別,如果可迭代,則可以使用如for x in [1,2,3,4]來進行遍歷。
迭代器(Iterator)特指使用isinstance(x,Iterator)返回True的型別,如果是迭代器,則可以使用next()逐個返回其值。

Python中還有其他一些型別,我還沒有十分明白,有興趣的話可以查閱python document

程式碼與層次關係

>>> for i in [1,2,3,4,5,6]:
        if i>3:
            print(i-3)
        else:
            print(i+3)

4
5
6
1
2
3

如上例所示,程式碼的縮排表示它的層次關係,相同縮排的程式碼處於相同的層次,冒號則表示下一行會有縮排。

結束語

文中給出幾處連結,再次對其表示感謝,感謝他們願意花時間分享自己的知識。
作為一個新手,紕漏差錯在所難免,如有表述不當之處,還請及時指正,多多交流,共同進步。