python编程入门读书笔记1
python適合用來做什么呢?
腳本,這些簡短的程序自動執行常見的管理任務,如在系統中新增用戶、上傳文件到網站、不使用瀏覽器瀏覽網頁等。
網站開發,作為快速創建動態網站的工具,Django、bottle、Zope等python項目深受開發人員歡迎。
文本處理,python在字符串和文本文件處理方面提供了強大的支持,包括正則表達式和unicode。
科學計算,網上有很多卓越的python科學計算庫,提供了統計、數學計算和繪圖的函數。
教育,鑒于python的簡潔實用,學校可以將其作為第一門編程語言。
python支持加+、減-、乘*、除/四種基本運算,而且還使用**和%來分別表示乘方和求余。還有一個整除符號//,其結果總是整數。python還支持復數運算用1j表示-1的平方根。
python自帶了很多編寫好的代碼,math模塊就是其中之一。
導入模塊有兩種方式
#第一種更安全一些,建議使用第一種。
#如果使用第二種,函數與math中函數同名時,將被math模塊中函數覆蓋
import mathfrom math import *
字符串的長度可以使用len()函數計算,字符串同樣可以使用+和*來進行計算。
‘123’+’abcd’= ’123abcd’‘234’*3= ’234234234’len(‘1234’)= 4
使用函數dir(m)可以列出模塊m的所用函數,如果要查看內置函數可以使用dir(__builtins__),還可以使用help()函數查看函數的文檔字符串,一般會有簡易的英文說明。也可以打印函數的文檔字符串。
#查看math模塊的函數import mathdir(math)#查看所有的內置函數dir(__builtins__)#查看字符創包含哪些函數dir(‘’)#查看math模塊的文檔字符串help(math)#打印tanh函數的文檔字符串print(math.tanh.__doc__)
類型轉換是一種常見的因為,python提供了很多簡化這種工作的內置函數,如str()、float()、int()、round()等等。
python命名變量規則,變量名的長度不受限制,但是第一個字符不能使數字必須是字母或下劃線,區分大小寫,不能將python關鍵字作為變量名。
對于x=expr這樣的python賦值語句,可以解讀為:讓x指向表達式expr的值。expr可以是任何結果為值的python表達式。賦值語句并不會復制指向的值,而只是標記和重新標記既有值。數字和字符創是不可變的,看起來修改的情況下其實是python重新創建的新版本。對于沒有任何變量指向的值,python會自動將其刪除,一般而言python跟蹤所有的值,并自動刪除不在有指向的值,這稱為垃圾回收。
python可以進行多重賦值,有一個很實用的用途就是交換兩個變量的值。
x,y,z= 1,’qqq’,3.0#會輸出一個顯示多個值的元組x,y,z#交換a和b的值a,b= b,a
python由3個主要部分組成,運行語句的解釋器、將.py文件轉換為.pyc文件的編譯器以及運行.pyc文件的虛擬機。當你運行.py文件時,python會自動創建相應的.pyc文件,.pyc文件中包含目標代碼。
如果想從鍵盤中讀取數據,可以使用input()函數,我們常常使用標準輸出(stdout)來表示文本被打印到的窗口。同樣標準輸入(stdin)是函數input從中讀取字符串的地方。你有時還可以看到stderr它指的是顯示錯誤消息的地方。print函數還可以使用sep修改它的間隔符。默認print打印完指定內容后會添加一個換行符\n,這個也可以通過end來進行修改。python2和python3的主要差別就是print函數,python2中print并非函數,導致修改默認分隔符合結束符比較困難。
python2和python3的另一個不同在意輸入函數,python3中的input對應于python2的raw_input,而python2中的input函數可以對用戶輸入的字符串進行求值,但是python3中也可以使用eval(input(expr))進行模擬。
人們通常使用輸入、處理、輸出的組織方式進行編程,但是當程序越來越復雜的時候會導致代碼混亂難以理解,所以我們一定要養成良好的習慣,使用注釋指出輸入、處理、輸出部分。這有助于闡明程序執行的不同任務。
python里使用布爾邏輯進行決策,一共有4種邏輯運算符:not、and、or、==。同樣python的and和or支持短路求值por q如果p為false將不再計算q,pand q如果p為true將不在計算q。
python有兩種主要的循環:for循環和while循環。for循環通常比while循環更容易使用,但沒有while循環靈活。for循環式讀取文本文件各行的最簡單方式。break和continue語句提供了跳出的方法。
函數是一大塊可重用的代碼,它是有名稱的代碼塊,接受輸入、提供輸出并可存儲在文件中供以后使用。python文檔字符串通常使用三引號標識文檔字符創的開始和結束位置,第一行是函數的簡要描述接下來是詳情和示例。python有一個很有用的工具doctest,可用于自動運行文檔字符串中的示例代碼。
除返回值外,函數以其他任何方式所做的修改都被稱為副作用,打印到屏幕、寫入文件和下載網頁都屬于副作用。有一種名為函數式編程的編程風格,其特征是幾乎消除了副作用。在函數式編程中,你只能通過返回值來完成修改。
在函數外聲明的變量稱為全局變量,程序中的任何函數和代碼都可讀取它,要訪問全局變量必須使用關鍵字global。
函數的參數,參數用于向函數傳遞數據,python支持多種參數,可以按引用傳遞,而且可以設置默認值,只有第一次調用函數時給默認參數賦值。帶默認值參數不能位于沒有默認值參數的前面。還可以使用關鍵之參數,使用關鍵值參數有兩大好處,有助于提高程序的可讀性,而且關鍵值的參數順序無關緊要。
模塊和普通python程序之間的唯一區別就是用途不同,模塊是一個由函數組成的工具箱,用于編寫其他程序,因此模塊沒有main函數。名稱空間基本就是一組獨特的變量名和函數名,要讓模塊中的名稱在模塊外面可見,你必須使用import語句。frommathimport*這種方式會把每一模塊中所有的內容都加入當前的名稱空間,將覆蓋其他同名的內容,所以在較大的程序里不適宜使用這種導入模塊語句。
字符串是一種聚合數據結構,python中字符串的索引從0開始,而且它還支持負數索引,其理念就是從右向左的方向,用負數表示字符串中的字符。還可以使用for語句來循環訪問字符串。
轉義字符,并非所有的字符都是可視的標準符號,例如換行和回車、制表符都是不可見的,雖然它們帶來的效果是可見的,為了處理空白字符和不可打印的字符python使用一種特殊的表示方法。
\\反斜杠\’單引號\”雙引號\n換行符\t水平制表符\r回車
字符串切片,可使用切片從字符串中提取子串。要對字符串進行切片操作,可指定兩個索引:要提取的第一個字符的索引和要取的最后一個字符的索引+1。如果要訪問索引為i的字符串,可使用s[i]或者s[i:i+1]。我們還可以使用負數索引的切片。
有一個很實用的切片示例,這個函數返回的是文件的后綴名。
def get_ext(fname):dot= fname.rfind(‘.’)if dot == -1:return‘it’s a unormal filename’else:returnfname[dot+1:]#rfind函數就是從右往左搜索字符
字符串測試函數
s.endswith(t) #s以字符串t結尾 s.startswith(t) #s以字符串t開頭 s.isalnum() #s只包含字母和數字 s.isalpha() #s只包含字母 s.isdecimal() #s只包含表示十進制數字的字符 s.isdigit() #s只包含數字 s.isidentifier() #s是合法標識符 s.islower() #s只包含小寫字符 s.isnumeric() #s只包含數字 s.isprintable() #s只包含可打印字符 s.isspace() #s只包含空白字符 s.istitle() #s是個大小寫符合要求的字符串 s.isupper() #s只包含大寫字母 t in s #s包含字符串t
字符串搜索函數
s.find(t) #如果沒有找到子串則返回-1,否則返回t在s中的起始位置s.rfind(t) #與find相同,但從右往左搜索s.index(t) #與find相同,但如果在s中找不到t則引發ValueError異常s.rindex(t) #與index相同,但從右向左搜索函數index和find之間的差別在于沒有找到指定子串時的情形。
一般而言index和find返回傳入字符串第一次出現的起始位置索引,而rindex和rfind返回的是傳入字符串最后一次出現的起始位置索引。
改變大小寫的函數
s.capitalize() #將s[0]改寫為大寫s.lower() #讓s的所有字母都小寫s.upper() #讓s的所有字母都大寫s.swapcase() #將小寫字母改為大寫,大寫變小寫s.title() #讓s的大小寫符合頭銜的要求
設置字符串格式的函數
s.center(n,ch) #包含n個字符的字符串,其中s位于中央,兩邊用字符ch填充s.ljust(n,ch) #包含n個字符的字符串,其中s位于左邊,右邊用字符ch填充s.rjust(n,ch) #包含n個字符的字符串,其中s位于右邊,左邊用字符ch填充s.format(vars) #設置字符串‘{0}likes {1}’ .format(‘jack’,’ice cream’) #輸出’jacklikes ice cream’‘{who}{pet} has fleas’ .format(pet = ‘dog’,who = ‘my’)#輸出’mydog has fleas’
字符串剝除函數
s.strip(ch) #從s的開頭和結尾刪除所有包含在字符串ch的字符s.lstrip(ch) #從s的開頭刪除所有包含在字符串ch的字符s.rstrip(ch) #從s的結尾刪除所有包含在字符串ch的字符
字符串拆分函數
s.partition(t) #將s拆分為三個字符串head、t、tail(head+t+tail=s)s.rpartition(t) #與partition相同,但從s的右端開始搜索ts.split(t) #以t為分隔符,將s劃分成一系列的子串s.rsplit(t) #與split相同,但從s的右端開始搜索ts.splitlines(t) #返回一個由s中各行組成的列表
字符串替換函數
s.replace(old,new) #將s中的每個old替換為news.expandtabs(n) #將s中的每個制表符替換n個空格
其他字符串函數
s.count(t) #t在s中出現的次數s.encode() #設置s的編碼s.join(seq) #使用s將seq中的字符串連接成一個字符串s.maketrans(table) #創建一個轉換表,用于將old中的字符改為new中相應的字符s.zfill(width) #在s左端添加足夠多的0,讓字符串的長度為widths.translate(table) #使用指定轉換表(使用maketrans創建的)對s中字符進行替換
正則表達式
xy? x、xyx|y x、yx* ‘’、x、xx、xxx、xxxx等x+ x、xx、xxx、xxxx等
總結
以上是生活随笔為你收集整理的python编程入门读书笔记1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何用sql语句查询年龄最小或最大的信息
- 下一篇: 练习动画最好的方式(二):屏幕指纹开锁动