【Python基礎教程】閱讀&實驗報告〖一〗
編程是一門動手學科,不能指望靠讀書就弄懂弄會。
本系列是我從自己的CSDN上扒下來的。
是學習Python時自己隨章節做的一些實驗,Python作為一門解釋型語言,實驗做起來沒什麼難度,很容易上手。
希望讀過的人順著我的思路一起把實驗做下來,快速掌握Python,為機器學習或其他領域入門打個基礎。
P.S.這一系列主要是為了水一下,畢竟前一陣有些忙碌,裝了個死,很久都沒有在專欄里發什麼文章了。這次就刷一刷存在感吧。
第一章 快速改造:基礎知識
1.1安裝Python
1.1.1Windows
具體的我也就不贅述了,可以看我另一篇博客。
http://blog.csdn.net/u012318329/article/details/60479591
1.1.2Linux和UNIX
python解釋器是默認存在的,我沒有裝虛擬機,就也不細說了,有機會用linux的時候再一起研究。
1.1.3蘋果機(Macintosh)
略
1.1.4其他發行版本
1.1.5時常關注,保持更新
1.2互動式解釋器
1.3演算法是什麼
書里舉了個例子,我就不複述了,上定義。
演算法(Algorithm)是指解題方案的準確而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。如果一個演算法有缺陷,或不適合於某個問題,執行這個演算法將不會解決這個問題。不同的演算法可能用不同的時間、空間或效率來完成同樣的任務。一個演算法的優劣可以用空間複雜度與時間複雜度來衡量。
1.4數字和表達式
from __future__ import divisionn
division(除法)
1.4.1長整數
1.4.2十六進位和八進位
1.5變數
1.6語句
表達式是某件事情,語句是【做】某件事情。
1.7獲取用戶輸入
1.8函數
1.9模塊
模塊是導入到python以增強其功能的擴展,按照【模塊.函數】的格式使用函數。
在使用了【form模塊import函數】這種形式的import命令之後,就可以直接使用函數而不再需要模塊名作為前綴了。
1.9.1cmath和複數
1.9.2回到__future__
Python的每個新版本都會增加一些新的功能,或者對原來的功能作一些改動。有些改動是不兼容舊版本的,也就是在當前版本運行正常的代碼,到下一個版本運行就可能不正常了。
從Python 2.7到Python 3.x就有不兼容的一些改動,比如2.x里的字元串用xxx表示str,Unicode字元串用uxxx表示unicode,而在3.x中,所有字元串都被視為unicode,因此,寫uxxx和xxx是完全一致的,而在2.x中以xxx表示的str就必須寫成bxxx,以此表示「二進位字元串」。
要直接把代碼升級到3.x是比較冒進的,因為有大量的改動需要測試。相反,可以在2.7版本中先在一部分代碼中測試一些3.x的特性,如果沒有問題,再移植到3.x不遲。Python提供了__future__模塊,把下一個新版本的特性導入到當前版本,於是我們就可以在當前版本中測試一些新版本的特性。1.10保存並執行程序
1.10.1通過命令提示符運行Python腳本
1.10.2讓腳本像普通程序一樣運行
1.10.3注釋
這部分沒什麼好說的,重點講一下書里提到的input()和raw_input()函數。首先是input()函數,input(please input:)之後會返回一個值,可以用tpye()查看他的類型,然而當我們輸入字元串或者字元的時候, 要用雙引號或者單引號包起來不然就會報錯。input()函數輸入什麼類型,就顯示什麼類型。
再來看raw_input()函數,不論輸入什麼類型,都是str類型。也就不用另外輸入引號了。
通過上面的實驗我們知道input它會根據用戶輸入變換相應的類型,而且如果要輸入字元和字元串的時候必須要用引號包起來,而raw_input則是不管用戶輸入什麼類型的都會轉變成字元型。
我們來看input的源碼。
def input(prompt):n return eval(raw_input(prompt))n
其實input也是調用了raw_input,只是做了eval處理。
而eval有什麼作用呢?eval()函數十分強大,官方demo解釋為:將字元串str當成有效的表達式來求值並返回計算結果。
1.11字元串
1.11.1單引號字元串和轉義引號
python里單引號和雙引號大部分時間意義相同,雙引號用在單引號出現在句子中時。轉義字元為「」。
1.11.2拼接字元串
用加號「+」來拼接字元串。
1.11.3字元串表示,str和repr
Python列印值的時候會保持該值在Python代碼中的狀態,不是用戶所希望看到的狀態。而使用print列印值則不一樣,print列印出來的值是用戶所希望看到的狀態。
例如:
>>> "Hello, world!"nHello, world! # Python列印出來的值是給python理解的,這裡python理解為字元串,所以帶著引號n>>> 1000L # python理解為Long型的數字,所以它列印出來的時候也帶著後綴Ln1000Ln>>> print "Hello, world!" # 列印一個字元串,給用戶看的,所以不帶引號nHello, world!n>>> print 1000L # 用戶看到的當然是一個數字1000,而不是字元串1000Ln1000n
str和repr實際就分別對應上述兩種顯示方式。
str把值轉換為合理形式的字元串,給用戶看的。str實際上類似於int,long,是一種類型。
>>> print str("Hello, world!")nHello, world! n>>> print str(1000L)n1000 n>>> str("Hello, world!")nHello, world! # 字元串轉換之後仍然是字元串n>>> str(1000L)n1000n
repr()創建一個字元串,以合法python表達式的形式來表示值。repr()是一個函數。
>>> print repr("Hello, world!")nHello, world!n>>> print repr(1000L)n1000Ln>>> repr("Hello, world!")n"Hello, world!"n>>> repr(1000L)n1000Ln
總而言之,str出來的值是給人看的字元串,repr出來的值是給機器看的,括弧中的任何內容出來後都是在它之上再加上一層引號。
1.11.4input和raw_input的比較
上面寫過了,此處略。
1.11.5長字元串、原始字元串和Unicode
1.長字元串
長字元串可以用三個單引號或者三個雙引號代替普通引號。
2.原始字元串
換行符可以寫為n,原始字元串前面為r,可在字元串中放入任何字元。
p.s.不能在原始字元串結尾輸入反斜線。
1.12小結
推薦閱讀:
※為什麼在Python中沒有專門的char數據類型呢?
※python初學者,如果你連這樣的習題寫不出代碼,該怎麼辦?
※Fluent Python 筆記(四):字典和集合
※Python GUI教程(七):轉換qt設計師的ui代碼為Python代碼
※python多進程進程間通信疑問,求大神指教?(主進程獲取不到子進程變數)