前言 正式開始Python之旅,主要學習內容專註在爬蟲和人工智慧領域,如Web開發之類將跳過不研究。 Python的意思是蟒蛇,源於作者Guido van Rossum(龜叔)喜歡的一部電視劇。所以現在開始暫時忘掉.NET忘掉C#,using乾什麼用的?不知道.... 我只記得、我要玩蛇!!! Py ...
前言
正式開始Python之旅,主要學習內容專註在爬蟲和人工智慧領域,如Web開發之類將跳過不研究。
Python的意思是蟒蛇,源於作者Guido van Rossum(龜叔)喜歡的一部電視劇。所以現在開始暫時忘掉.NET忘掉C#,using乾什麼用的?不知道....
我只記得、我要玩蛇!!!
Python基礎概述
1.優點
簡單:Python是一種代表簡單主意的語言。Python這種偽代碼本質是它最大的優點之一,它使你能夠專註於解決問題而不是搞明白語言本身。
易學:Python極易上手,它有著極其簡單的語法,Python採用強制縮進的方式使得代碼具有極佳的可讀性。
免費、開源:Python是FLOS(自由/開放源碼軟體)之一。可以自由地發佈這個軟體的拷貝、閱讀它的源碼、並改動它和閉源。
高層語言:無需關心記憶體方面的管理之類的底層細節。
跨平臺(可移植性):Python已經被移植在多個平臺,在任何平臺都可以在不修改源碼的情況下運行Python程式。
解釋性:Python程式不需要編譯成二進位碼,可以直接源代碼運行程式,在電腦內部,Python解釋器把源代碼轉換成位元組碼的中間形式,再把它翻譯成電腦使用的機器語言運行。
面向對象:Python既支持面向過程編程也支持面向對象編程,相比其它語言如Java和C#相比,它以一種非常強大又簡單的方式實現面向對象編程。
可擴展性:如果需要關鍵代碼運行得更快或希望某些演算法不公開,可以把這一部分使用C或C++編寫,然後在Python程式中使用它們。
豐富的庫:Python標準庫很龐大。
2.缺點
運行速度:如果對運行速度有要求的話,用C++改寫關鍵部分。
中文資源匱乏:入門資料多,高級內容還得看英文版。
架構選擇太多:沒有像C#這樣的官方.NET企業架構,
3.應用場景
Web應用開發:一些Web框架,如Django,TurboGears,web2py,Zope等,可以讓程式員輕鬆地開發和管理複雜Web程式。
操作系統管理、伺服器運維和自動化腳本:在很多操作系統里,Python是標準的系統組件。大多數Linux發行版和MacOS都集成了Python,可以在終端直接運行Python。Python能夠訪問Windows的COM服務及其它Windows API。使用IroPython,Python程式可以直接調用.Net Frameword。
科學計算:NumPy、SciPy、Matplotlib、Pandas等,可以讓Python程式員編寫科學計算程式。
桌面軟體:PyQt,PySide,wxPython,PyGTK可以使用Python快速開發桌面應用程式。
伺服器軟體:Python對於各種網路協議的支持非常完美,因此常被用於編寫伺服器軟體、網路爬蟲、第三方庫Twisted支持非同步網路編程和多數標準的網路協議,並且提供了多種工具,被廣泛用於編寫高性能的伺服器軟體。
游戲:很多游戲使用C++編寫圖形顯示等高性能模塊,使用Python編寫游戲的邏輯、伺服器。
註釋
1.單行註釋
以#開頭、#右邊的所有內容當作說明而非真正要執行的內容。
1 #我是單號註釋 2 print('Hello Jonins')
2.多行註釋
以'''(3個單引號)開始以'''(3個單引號)結尾,中間的內容被當作說明。(也可以用3個雙引號""")
1 ''' 2 我是多行註釋 3 ''' 4 """ 5 我是多行註釋 6 """ 7 print('Hello Jonins')
中文支持
Python3支持中文,但在Python2中,程式只要包含中文,python2的解釋器不能識別所以會報錯,所以需要在程式的最開頭輸入如下代碼:
1 #conding=utf-8
還有一種寫法,是python的語法規範中推薦使用的:
1 #-*- conding:utf-8 -*-
完整的示例如下:
變數及類型
1.變數定義
python是一門弱類型語言,意味著不用強調變數的類型,在變數的定義前面不需要加變數的類型。
1 num1 = 10#num1在變數賦值的過程中自動賦值自己的類型 2 num2 = 20 3 total = num1+num2 4 print(total)
若想查看變數的類型,可以使用type(變數名):
1 num1 = 10 2 num1 = '1' 3 print(type(num1))
2.變數類型
為了更充分的利用記憶體空間以及更高效的管理記憶體,變數有不同類型的,常用的數據類型如下:
標識符和關鍵字
標識符是我們自己定義的如:變數名、函數名等。
標識符只能由數字、字母和下劃線組成,並且數字不能在開頭。
關鍵詞是python已經使用了的,具有特殊功能的標識符。python不允許開發者自己定義和關鍵詞相同名字的標識符。可以通過代碼查看python具有哪些關鍵詞:
import keyword keys = keyword.kwlist; print(keys)
大致有如下這些:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for',
'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
輸入(input)
1.Python2中輸入
在python2中,獲取鍵盤輸入的數據的方式採用raw-input()函數,示例如下:
name=raw_input("請輸入姓名:") print(name)
說明:
raw-input()的小括弧中放入的是,提示信息,用來在獲取數據之前給用戶一個提示。
raw-input()在從鍵盤獲取到數據以後,會將數據存放到等號右邊的變數中。
raw-input()會把用戶輸入的任何值都作為字元串來存儲。
而python2中的input()函數於raw_input()類似,但其接受的輸入必須是表達式(切換python2的交互視窗進行驗證)如下所示:
1 >>> num=input() 2 123#輸入123自動識別為int 3 4 >>> num 5 123 6 >>> type(num) 7 <type 'int'> 8 >>> str=input() 9 'jonins'#輸入"或'自動識別為string 10 11 >>> str 12 'jonins' 13 >>> type(str) 14 <type 'str'> 15 >>> num=input() 16 1+2+3#同類型可以相加 17 18 >>> num 19 6 20 >>> str=input() 21 '1010'+'jonsin'#string同類型則會拼接 22 23 >>> str 24 '1010jonsin' 25 >>>
2.Python3中輸入
在python3中沒有raw_input()函數,只有input(),並且python3中的input()功能與python2中的raw_inpu()功能一樣。
輸出(print)
1.普通輸出
1 print('hello jonins') 2 age=18 3 print(age)
2.格式化輸出
在程式中若想在輸出中給變數占位需要使用%號格式化輸出,如下所示
1 age=18 2 print('年齡是:%d已成年!'%age) 3 name='jonins' 4 print('姓名%s,年齡%d歲.'%(name,age))
在程式,看到%這樣的操作符,就是python的格式化輸出。
3.常用的格式符號
下麵是完整的,可以與%符號配合使用的列表:
格式符號 | 轉換 |
%c | 字元 |
%s | 通過str()字元串轉換來的格式化 |
%i | 有符號十進位整數 |
%d | 有符號十進位整數 |
%u | 無符號十進位整數 |
%o | 八進位整數 |
%x | 十六進位整數(小寫字母) |
%X | 十六進位整數(大寫字母) |
%e | 索引符號(小寫e) |
%E | 索引符號(大寫E) |
%f | 浮點實數 |
%g | %f和%e的簡寫 |
%G | %f和%E的簡寫 |
4.換行輸出
在輸出的時候,如果有\n那麼,此時\n後的內容會在另外一行顯示
1 print('姓名jonins\n年齡18歲')
運算符
1.算術運算符
註意:當算術的運算兩個對象不是同類型,也是可以計算的,結果會跟隨類型較大的對象。如:9/3.0 =3.0
2.賦值運算符
運算符=,為賦值運算符,作用是把等號右邊的結果給左邊的變數,示例如下:
1 a,b=1,3 2 print(a+b) 3 c,d=2.0,'jonins' 4 print(c) 5 print(d)
3.複合賦值運算符
運算符 | 描述 | 示例 |
+= | 加法賦值 | a+=b等效於a=a+b |
-= | 減法賦值 | a-=b等效於a=a-b |
*= | 乘法賦值 | a*=b等效於a=a*b |
/= | 除法賦值 | a/=b等效於a=a/b |
//= | 取整除賦值 | a//=b等效於a=a//b |
%= | 取餘賦值 | a%=b等效於a=a%b |
**= | 冪計算賦值 | a**=b等效於a=a**b |
數據類型轉換
示例
1 str='3' 2 num=float(str) 3 print(num)
判斷語句(if&elif)
1.if-else語句
if-else的使用格式:
1 if 條件: 2 滿足條件時要做的事情1 3 滿足條件時要做的事情2 4 滿足條件時要做的事情3 5 滿足條件時要做的事情4 6 ...(省略)... 7 else: 8 不滿足條件時要做的事情1 9 不滿足條件時要做的事情2 10 不滿足條件時要做的事情3 11 不滿足條件時要做的事情4 12 ...(省略)...
示例如下:
1 age=18 2 print('--------if判斷開始----------') 3 if age>=18: 4 print('已成年') 5 print('年齡是%i'%age) 6 else: 7 print('未成年') 8 print('年齡是%i'%age) 9 print('--------if判斷結束----------')
註意:代碼的縮進為一個tab鍵,或者4個空格。解釋器會將縮進的語句判定為滿足條件時執行的代碼。對應的C#代碼如下所示:
1 int age = 18; 2 Console.WriteLine("--------if判斷開始----------"); 3 if (age >= 18) 4 { 5 Console.WriteLine("已成年"); 6 Console.WriteLine($"年齡是{age}"); 7 } 8 else 9 { 10 Console.WriteLine("未成年"); 11 Console.WriteLine($"年齡是{age}"); 12 } 13 Console.WriteLine("--------if判斷結束----------"); 14 Console.ReadKey();C# Code
2.elif語句
elif的使用格式如下:
1 if 條件1: 2 滿足條件1時要做的事情1 3 滿足條件1時要做的事情2 4 滿足條件1時要做的事情3 5 滿足條件1時要做的事情4 6 ...(省略)... 7 elif 條件2: 8 滿足條件2時要做的事情1 9 滿足條件2時要做的事情2 10 滿足條件2時要做的事情3 11 滿足條件2時要做的事情4 12 ...(省略)... 13 else: 14 不滿足上述所有條件時要做的事情1 15 不滿足上述所有條件時要做的事情2 16 不滿足上述所有條件時要做的事情3 17 不滿足上述所有條件時要做的事情4 18 ...(省略)...
示例如下:
1 age=18 2 print('--------if判斷開始----------') 3 if age==16: 4 print('已年滿16歲') 5 elif age==18: 6 print('已成年') 7 print('年齡是%i'%age) 8 else: 9 print('未成年') 10 print('年齡是%i'%age) 11 print('--------if判斷結束----------')
elif語句一定要配合if使用,可以有else也可以沒有,elif的條件不限制,對應的C#代碼如下所示:
1 int age = 18; 2 Console.WriteLine("--------if判斷開始----------"); 3 4 if (age == 16) 5 Console.WriteLine("已年滿16歲"); 6 else if (age == 18) 7 { 8 Console.WriteLine("已成年"); 9 Console.WriteLine($"年齡是{age}"); 10 } 11 else 12 { 13 Console.WriteLine("未成年"); 14 Console.WriteLine($"年齡是{age}"); 15 } 16 Console.WriteLine("--------if判斷結束----------"); 17 Console.ReadKey();C# Code
3.if嵌套
if嵌套的格式大致如下:
1 if 條件1: 2 滿足條件1時要做的事情1 3 滿足條件1時要做的事情2 4 ...(省略)... 5 if 條件2: 6 滿足條件2時要做的事情1 7 滿足條件2時要做的事情2 8 滿足條件2時要做的事情3 9 滿足條件2時要做的事情4 10 ..(省略)...
註意:
外層的if判斷,也可以是if-else
內層的If判斷,也可以是if-else
比較&關係運算符
1.比較運算符
2.邏輯運算符
迴圈語句(while)
1.while語句
while迴圈的格式如下:
1 while 條件: 2 滿足條件時,做事情1 3 滿足條件時,做事情2 4 滿足條件時,做事情3 5 ...(省略)...
示例如下:
1 i=1 2 sum=0 3 while i<=100: 4 sum+=i 5 i+=1 6 print("1-100的累積和為:%i"%sum)
2.迴圈嵌套
1 while 條件: 2 滿足條件時,做事情1 3 滿足條件時,做事情2 4 滿足條件時,做事情3 5 ...(省略)... 6 while 條件: 7 滿足條件時,做事情1 8 滿足條件時,做事情2 9 滿足條件時,做事情3 10 ...(省略)...
示例如下:
1 i=1 2 while i<=5: 3 j=1 4 while j<=i: 5 print("* ",end=" ") 6 j+=1 7 print("\n") 8 i+=1
迴圈語句(for)
在python中for迴圈可以遍歷任何序列的項目,如一個列表或者一個字元串
1 for 臨時變數 in 列表或者字元串等: 2 滿足迴圈條件時執行的代碼 3 else: 4 滿足不迴圈條件時執行的代碼
示例如下:
1 name='jonins' 2 for x in name: 3 print(x) 4 else: 5 print('遍歷完成')
break&continue
break的作用:用來結束整個迴圈。
continue的作用:用來結束本次迴圈,緊接著執行下一次的迴圈。
示例如下:
1 name='jonins.com' 2 for x in name: 3 if(x=='o'): 4 continue; 5 if(x=='.'): 6 break; 7 print(x)
註意:
break/continue只能用在迴圈中,除此以外不能單獨使用。
break/continue在嵌套迴圈中,只對最近的一層迴圈起作用。