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
如上例所示,程式碼的縮排表示它的層次關係,相同縮排的程式碼處於相同的層次,冒號則表示下一行會有縮排。
結束語
文中給出幾處連結,再次對其表示感謝,感謝他們願意花時間分享自己的知識。
作為一個新手,紕漏差錯在所難免,如有表述不當之處,還請及時指正,多多交流,共同進步。