python控制语句第一章_【原创】Python第一章
Python總是從第一行代碼開始逐步執行,而C是從main函數開始執行。
在Python中,一切東西都是對象。
在Python中,沒有C的花括號,不能任意排版,屬于同一個語句塊的語句需要使用相同的對齊方式(前面的空格數應該一樣)否則會報錯。
固定的數據類型
str是一種類型,字符串類型,一個字符序列。在Python中,str和基本的數值類型(比如int)都是固定的,也就是一旦設定,其值便不能改變,雖然我們可以通過方括號取得序列中的數據項,但無法改變其中的字符。
在Python中,字符是指長度為1的字符串。
內置函數:
內置函數是Python語言內置的一部分,我們不需要從某個庫文件中對其進行import,就可以直接引用該函數。
Python整數大小:
Python所表示的整數大小只受機器的內存大小的限制,而非固定的字節數。
字符串可以使用雙引號或單引號封裝,只要字符串頭尾使用的符號相同或對稱即可,Python字符串使用的是Unicode編碼,所以字符串內容不局限于ASCII字符。
方括號:
Python使用[]提取字符串等任意序列中的某一項,從0開始。方括號存取使用與任意數據類型(只要構成一個序列)的數據項。
對象引用:
定義了數據類型之后,我們就可以定義存儲某種數據類型的變量,但是在Python中沒有這樣的變量,而是使用“對象引用”。
x = "blue"
執行時,Python會先創建一個str對象(放在堆區),str對象存儲的就是“blue”的這些字符,同時還創建了一個名為x的對象引用,x引用的就是str對象。
x=2
在C中,會開辟一段內存(占4個字節),里面存儲著2這個數字,這段內存的引用名為x。
在Python中,會開辟兩段內存,在堆上開辟的內存存儲著2這個數字,是一個int對象,另一段開辟的內存存儲著int對象的地址,該段內存的引用名為x。
操作符=:
在Python中,“=”的作用是將對象引用和內存中的某對象進行綁定。如果對象引用已經存在,那么就簡單的進行重綁定,以便引用“=”操作符后面的對象。如果對象引用尚未存在,就由“=”操作符創建對象引用。
垃圾回收:
如果內存中的一個對象,沒有任何一個對象引用引用此對象,那么這個無引用的對象,就由Python進行垃圾回收處理
動態類型機制:
Python使用的的是“動態類型”機制,即在任何時刻,只要需要,某個對象引用可以重新引用一個不同的對象;某個對象引用可以重新綁定到不同的數據類型的對象。
x="blue"#x對象引用引用的是str對象
x=1#x對象引用重新與int對象進行綁定,同時str對象“blue”進入垃圾回收流程,因為沒有對象引用再對其進行引用
如果某個類型的對象使用了不合法的操作符,就會導致產生了一個TypeError
type()函數會返回給定數據項的數據類型。
元組和列表:
列表有點像C中的數組,不過Python的組合數據類型支持一個組合數據類型中包含多種類型。
元組是固定的,創建后就不能改變;列表是可變的,在需要的時候可以插入或移除數據項;
元組使用逗號創建,x=1,2,3,"123"
在輸出元組時,Python使用圓括號將其封裝在一起,可以結合圓括號和逗號創建元組,x=(1,2,3,"123"),如果元組只有一個數據項,又需要圓括號,就需要在第一個數據項后面加上一個“多余”的逗號,如x=(1,)。這個逗號如果省略了,那么創建的只是一個普通的數據項,而不是一個元組對象。
空元組使用空的()創建。
逗號:
逗號有兩個用處:1,分隔函數參數,2,分隔元組中數據項
由于函數參數和元組都是用圓括號封裝,因此如果需要將元組常值作為參數傳遞,就必須使用圓括號對其進行封裝,以免混淆。如:
func(1,2,(3,4)),第三個參數是元組,如果元組不加圓括號,則會發生混淆。
列表的創建使用方括號進行分封裝,看來方括號不僅可以取序列中的某項數據項,還可以來定義列表。
元組和列表實質:
實質上元組和列表并不存儲真正的數據項,而是存儲對象引用,這樣做會浪費一點空間。
x=1
y=2
z=3
a=[x,y,z]
創建列表或元組時,實際上是使用給定對象引用的副本而已。
b=[1,2,3]
這又和上面的創建方法不一樣,這是在字面意義項(比如整數或字符串)的情況下,會在內存中創建一個適當數據類型的對象,而存放在列表或元組的才是對象引用。
組合數據類型也是一種對象的類:
因此可以將某種組合數據類型嵌套在其他組合數據類型中,比如創建一個列表,列表的數據項仍是列表。
元組,列表以及字符串等數據類型的長度——len()函數:
這長度對該數據類型是有意義的,將數據項作為參數傳遞給len()函數即可得到該數據項的長度。
數據項知道自己的類型!:
對象知道自己的數據類型,因此不需要明確指定數據類型,比如定義的時候
列表的擴建:
1,創建一個新的列表,再與新的列表對象的對象引用進行重新的綁定;2,使用對象自帶的append方法,具有更高的效率,對于長列表更是如此。
方法調用:
1,x.append("more")
2,list.append(x,"more")
第一種形式在實際中應用得更加廣泛;第二種指定了數據類型、該數據類型的方法,并將要調用該方法的數據項本身作為第一個參數,其后再跟隨一些其他參數。(在繼承方面,語義存在稍微差別)
點(存儲屬性)操作符:
用于存儲某個對象的屬性,屬性不僅可以是方法,常量,也可以是任意類型的對象。由于屬性可以是對象,該對象包含其他屬性,這些屬性又是對象,以此類推。
成員操作符in:
對于序列或集合這一數據類型,比如字符串、列表、元組,我們可以使用操作符in來測試成員關系,用not in測試非成員關系。
對于列表或元組,in使用的是線性搜索,對于較大的組合數據類型,速度可能會較慢;
對于字典或集合,in的速度可以非常快;
對于字符串數據類型,in可以很方便的測試任意長度的字符串。
邏輯運算符返回值:
and or not:and or使用的是短路邏輯,比如A and B,如果A為假,那么該表達式一定為假,B不會被計算;or也是如此;
上面的和C一樣,但有一點最不一樣的是,邏輯表達式的返回值:not返回的是True或False,而and or 返回的是決定結果的操作數,而不是布爾值(除非實際上是布爾操作數),比如 3 and 5表達式返回的是5.
a=1
a=a+1的過程分析:
第一條語句:a=1,Python會先創建一個存儲1的int對象,這個對象存儲在堆內,此時用戶還無法使用它,Python再創建一個名字為a的對象引用指向堆內的對象,用戶通過a便可以使用堆內的存儲1的對象。
第二條語句:a=a+1,由于int類型是固定的,也就是a引用的對象一旦賦值就不能改變,因此對固定的對象使用增強的賦值操作符時,實際上是創建一個對象來存儲結果,之后目標對象引用重新綁定,以便引用上面創建的結果對象,而不再引用以前的對象,以前的對象如果沒有其他對象引用,便會進入垃圾回收流程。
a+=b和a=a+b的微妙差別:
前者只查詢了一次a的值,因而速度更快,此外,如果a是一個復雜的表達式(有副作用的表達式),那么使用增強的賦值操作符較少出錯。因為計算的過程,維護者只需要改變一次,而不是兩次。
+=和序列:
在序列中,+=的右邊必須是可迭代的操作數,否則會產生TypeError,比如 a+=[2]或a+=[2,3,4],而不是a+=2;
在字符串序列里,a+="ABC",和a+=["ABC"]是不一樣的,如:
a=["A","BC"]
a+="ABC"#Python會迭代字符串序列的每個字母,最后結果是a為["A","BC","A","B","C"]
a+=["ABC"]#Python會迭代字符串列表的每一個數據項,最后結果是a為["A","BC","ABC"]
+=對于固定的數據類型和可變的數據類型:
對于固定的數據類型,使用增強的賦值操作符,會創建一個新的對象,并且表達式的左邊的對象引用將重新綁定到新的對象;
對于可變的數據類型,原始的對象會被修改。
固定的數據類型和可變的數據類型:
性能差別,固定的數據類型具有比可變的數據類型更高的潛力;有些組合數據類型(比如集合)只能操縱固定的數據類型;這就是Python規定兩種數據類型的原因。
函數庫的導入順序:
先導入Python的標準庫模塊,之后導入第三方庫模塊,最后才導入自己編寫的模塊。
總結
以上是生活随笔為你收集整理的python控制语句第一章_【原创】Python第一章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pythonoracle数据库操作_Py
- 下一篇: swift. 扩展类添加属性_Swift