Python全景
1.程序由模塊構成。
2.模塊包含語句。
3.語句包含表達式。
4.表達式建立並處理對象。
在python中數據是以對象的形式出現的!!!
為什么使用內置類型
- 內置對象使程序更容易編寫
- 內置對象往往比定制的數據結構更有效率
- 內置對象是語言的標准的一部分
在解決問題的時候python不需要像C和C++先去聲明數據的類型,python會自己識別類型。
python的核心數據類型
python中沒有類型聲明,根據表達式的語法決定創建和使用對象的類型。
(在python的語言內部已經高效創建了)
但是一旦創建了一個對象,它就和操作集合綁定了只可以對字符串進行字符串相關的操作,對列表進行列表相關的操作。
對應的類型有其相關的操作方式。
數字類型
包括的類型有:整數,浮點數,虛數,分子分母,集合等。
其數學運算的符號:加號(+
)代表加法,減號(-
)代表減法,星號(*
)表示乘法,雙星號(**
)表示乘方。
浮點數會遇到的兩種類型:代碼形式repr
,用戶友好形式str
。后者可以用print
語句進行實現。
數字中的額外工具包
math包
需要用戶在引用該包之后再進行使用:import math
math.pi
是打印Π的值。math.sqrt()
是對括號里的數字進行開根號處理
randow包
也是需要先進行引入import random
random.random()
是隨機數字生成器,random.choice([])
是隨機選擇器
[]
是列表的創建用的語法,后面會詳細介紹列表。
字符串類型
字符串是用來記錄文本信息的,它是一個對象的有序集合(從左到右)。字符串是單個字符的字符串的序列。
字符串序列的操作
可以看到索引是從0開始的。這個會有清晰的解釋。
python支持反向索引
所以我們可以將spam
這個字符串看成是這樣的pamspam
可以將s看成是坐標軸的原點,所以其索引時從0開始。
當我們只想輸出字符串中的一些我們想要的數據時候,可以對字符串進行切片處理
一般形式為X[I:J](但是不會包括J的值)
在使用簡便切片時,牢記左邊界默認為0,並且右邊界默認為分片序列的長度。
值得一提的是S[-1:]
是不成立的會輸出
輸出空的值,因為字符串是從0開始向左向右的。從中間到兩邊。
字符串的不可變性
意思就是在我們創建一個字符串后,我們不能直接對字符串中的字符進行修改,如果我們修改字符串中的字符,我們可以通過建立一個新的字符串,並以同一個變量名對其進行賦值。
核心類型中,數字、字符串和元組是不可變的;列表和字典不是這樣(它們可以完全自由地改變)
類型的特定方法
目前我們學習過的每一個字符串操作都是一個真正的序列操作。這些不止於用於字符串,包括列表和元組。但是字符串有特殊的操作方法:
S.find('pa')
find這個方法是用來對字符串進行查找操作的。但是它只返回尋找的第一個字符的偏移量(也就是位置)。
S.replace('pa','XYZ')
replace方法是用來替換字符的。前提是該字符串有需要被替換的字符,所以還具有全局搜索的任務。
line.split(',')
是字符串在遇到字符,
時進行隔開。
S.upper()'
指的是全部大寫。
S.isalpha()
是進行測試,測試字符串的內容。檢查一個字符串中所有的字符是否都是由字母構成的,並且至少有1個字符。
如果,字符串中所有的字符都是字母,則返回True,否則返回False. 該函數除了能判斷字符串是否為英文字母外,也能判斷其它語言中的字母。
\n
是換行。當我們需要去掉字符串中的所有空格時line.rstrip()
格式化
格式化的細講:python字符串的格式化細講。
。
在序列中的操作都是相通的,但是方法卻是不相同的。
簡明的法則:可作用於多種類型的通用型操作都是以內置函數或表達式的形式出現的[例如,len(X),X[0]],但是類型特定的操作是以方法調用的形式出現的[例如,aString.upper()]。
尋求幫助###
調用內置的dir函數,將會返回一個列表,其中包含了對象的所有屬性。
以雙下划線開頭並結尾的變量名是用來表示Python實現細節的命名模式。而這個列表中沒有下划線的屬性是字符串對象能夠調用的方法。
但是dir(S)
只是給出了所有的方法的名字,要查詢它們是做什么的,你可以將其傳遞給help函數。
在使用時要記得先創建一個字符串,這樣才能夠有所顯示,不然會出現未定義的情況。
編寫字符串的其他方法###
可以在字符串中間插入轉義字符\n
空一行。\t
空一個tab鍵。\0
是中止字符串。
可以看\n``\t``\o
是包含在字符內的。計入字符長度。
ord()函數主要用來返回對應字符的ascii碼
Python允許字符串包括在單引號或雙引號中(它們代表着相同的東西),也允許在三個引號(單引號或雙引號)中包括多行字符串常量。三個引號時,所有行都合並在一起。
可以看到輸出結果時,換行處,python會自動添加換行符
模式匹配
字符串對象的方法能夠支持基於模式的文本處理。
模式匹配的定義:數據結構中字符串的一種基本運算,給定一個子串,要求在某個字符串中找出與該子串相同的所有子串,這就是模式匹配。在python中的實現需要兩個步驟:1,引入re模塊。2,編寫相應代碼
跟着零個或幾個 制表符或空格,對應的代碼是[ \t]*(.*)
。認真理解加粗部分。有一個需要注意的地方,如果想用這種方法存放兩個組不能直接用[ \t]*(.*)[ \t]*(.*)
。這會使第二個組為空。
但是如果在兩個[ \t](.)中間添加空格,可以解決這個問題
這可能是轉義字符引起的問題。
下面這種情況,直接用/
當分組標准就沒有問題:
print(match.groups())
把所有的部分都輸出。
print(match.group(0))
按照字符串進行輸出。
第二行就是`print(match.group(0))'的結果。