1. 程式人生 > >十五分鐘快速入門系列 Python基礎

十五分鐘快速入門系列 Python基礎

                       
 

Python是一種面向物件的解釋型語言, 原始碼和直譯器CPython遵循 GPL協議。

               
年份 事件
1989 荷蘭人Guido van Rossum發明
1991 第一個公開發行版發行
當前版本 3.5.2

TIOBE年度語言

 

被TIOBE程式語言排行榜2007/2010兩度評為年度語言,其他同樣擁有這一殊榮的在總多的語言中目前只有Object-C和Java加上今年新晉的Go

                                                           
年份 年度語言
2003年 C++
2004年 PHP
2005年 Java
2006年 Ruby
2007年 Python
2008年 C
2009年 Go
2010年 Python
2011年 Objective-C
2012年 Objective-C
2013年 Transact-SQL
2014年 JavaScript
2015年 Java
2016年 Go

安裝

Linux或者Unix一般都會預設安裝,下載或者文件查詢可以參照如下連結

               
專案 連結
官網 https://www.python.org
下載 https://www.python.org/downloads/
文件 https://www.python.org/doc/

環境變數:PATH

 

將Python的安裝目錄加入到PATH中即可

Python自身環境變數

                   
環境變數名 詳細
PYTHONPATH PYTHONPATH是Python搜尋路徑,預設我們import的模組都會從PYTHONPATH裡面尋找。
PYTHONSTARTUP Python啟動後,先尋找PYTHONSTARTUP環境變數,然後執行此檔案中變數指定的執行程式碼。
PYTHONCASEOK 加入PYTHONCASEOK的環境變數, 就會使python匯入模組的時候不區分大小寫.
PYTHONHOME 另一種模組搜尋路徑。它通常內嵌於的PYTHONSTARTUP或PYTHONPATH目錄中,使得兩個模組庫更容易切換。

版本確認

python版本確認可以通過如下命令進行

[root@liumiaocn ~]# python --versionPython 2.7.5[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3

第一個Helloworld.py

 

內容:Helloworld.py

#!/usr/bin/pythonprint "Hello World"
   
  • 1
  • 2
 

執行:python Helloworld.py
  結果

[root@liumiaocn ~]# python Helloworld.pyHello World[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3
 

#!/usr/bin/python為第一行資訊,和shell指令碼一樣,是用來說明解釋所用的shell或者python所在路徑。

指導思想

 

The Zen of Python:There should be one– and preferably only one –obvious way to do it.同時有意的設計限制性很強的語法,比如縮排不正確可能通過編譯的語言大概除此之外少有分店。如下程式碼將不能通過編譯,會提示你”expected an indented block”,只有在第3行的print前加一個空格才能通過。其實仔細確認一下可能也會理解,因為在python中不像很多語言用{}來區分程式碼塊。

#!/usr/bin/pythonif True:print "Hello World"
   
  • 1
  • 2
  • 3

確認

[root@liumiaocn ~]# cat IndentSample.py#!/usr/bin/pythonif True:print "Hello World"[root@liumiaocn ~]# python IndentSample.py  File "IndentSample.py", line 3    print "Hello World"        ^IndentationError: expected an indented block[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

加上一個空格的縮排, 則能正常執行。

[root@liumiaocn ~]# cp IndentSample.py IndentSampleFixed.py[root@liumiaocn ~]# vi IndentSampleFixed.py[root@liumiaocn ~]# diff IndentSample.py IndentSampleFixed.py3c3< print "Hello World"--->  print "Hello World"[root@liumiaocn ~]# python IndentSampleFixed.pyHello World[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
 

所以,在Python裡,縮排還真不是小事,縮排表示塊的開始,逆縮排表示塊的結束。把這件事情重視起來,統一縮排必須上升到上綱上線的地步,不然,連編譯都通不過的程式碼談什麼質量呢。

python保留字

 

python主要的保留字如下所示,全為小寫

                                                                 
保留字 保留字 保留字
and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield

大小寫敏感

 

Python屬於大小寫敏感的程式語言,不過不敏感的語言也越來越少了

多行的寫法

 

使用連線符:\

sum = 1 + \      2 + \      3print sum
   
  • 1
  • 2
  • 3
  • 4
 

{}或[]或()中不需要使用連線符

註釋

                   
註釋型別 註釋Sample
單行註釋 註釋內容
單行註釋 sum=1+1 #註釋內容
多行註釋 三個單引號開始 到 三個單引號結束中間的內容全為註釋
多行註釋 三個雙引號開始 到 三個雙引號結束中間的內容全為註釋

幫助

 

使用python的線上幫助,比如string相關的方法的方法,使用如下方法(help檢視詳細文件,dir檢視方法列表)

>>> import string>>> help(string)>>> dir(string)
   
  • 1
  • 2
  • 3
 

python的各種庫確認:ls -l /usr/lib64/python*/*.py

變數和作用域

 

python的變數根據其定義的位置分為全域性變數和區域性變數兩種。區域性變數只能用於被宣告的函式內部,而全域性則可在整個程式範圍內使用。

標準資料型別

 

python支援的標準資料型別

                                   
專案 型別 說明
Numbers 數字 支援int/float/long/complex
String 字串
List 列表 類似陣列。下標從0開始,-1表示最後一個元素
Tuple 元組 類似只讀陣列
Dictionary 字典 類似Hash
 

python所支援的複數型別complex的虛部和實部的型別為float,一般表示為complex(a,b)

資料型別轉換函式

                                                                       
函式 描述
int(x [,base]) 將x轉換為一個整數
long(x [,base] ) 將x轉換為一個長整數
float(x) 將x轉換到一個浮點數
complex(real [,imag]) 建立一個複數
str(x) 將物件 x 轉換為字串
repr(x) 將物件 x 轉換為表示式字串
eval(str) 用來計算在字串中的有效Python表示式,並返回一個物件
tuple(s) 將序列 s 轉換為一個元組
list(s) 將序列 s 轉換為一個列表
set(s) 轉換為可變集合
dict(d) 建立一個字典。d 必須是一個序列 (key,value)元組。
frozenset(s) 轉換為不可變集合
chr(x) 將一個整數轉換為一個字元
unichr(x) 將一個整數轉換為Unicode字元
ord(x) 將一個字元轉換為它的整數值
hex(x) 將一個整數轉換為一個十六進位制字串
oct(x) 將一個整數轉換為一個八進位制字串

常見比較和判斷

 

型別判斷例

                   
判斷內容 詳細說明
是否數字型別 type(x) is types.IntType 需要import types
是否數字型別 type(x) == types(0)
是否String型別 type(x) is types.StringType 需要import types
是否String型別 type(x) is type(” “)

條件判斷

 

條件判斷入門例項

[root@liumiaocn ~]# cat basic-if1.py#!/usr/bin/pythonscore = 50if score < 60print 'E'elif score < 70print 'D'elif score < 80print 'C'elif score < 90print 'B'elseprint 'A'[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

執行確認

[root@liumiaocn ~]# python basic-if1.pyE[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3

迴圈控制

 

迴圈控制入門例項

[root@liumiaocn ~]# cat basic-loop.py#!/usr/bin/pythonlevel = 0while level < 10 : cnt = 0 while cnt < 10-level :   cnt = cnt + 1   print(" ") , ascnt = 0 while ascnt < 2*level-1 :   ascnt = ascnt + 1   print("*") , print("") level = level + 1[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

執行

[[email protected] ~]# python basic-loop.py                  *                * * *              * * * * *            * * * * * * *          * * * * * * * * *        * * * * * * * * * * *      * * * * * * * * * * * * *    * * * * * * * * * * * * * * *  * * * * * * * * * * * * * * * * *[[email protected] ~]#
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

函式

使用def進行定義,簡單示例如下:

[root@liumiaocn ~]# cat basic-func.py#!/usr/bin/pythondef hellofun( str ):  print "Hello : "print str;  return;hellofun("liumiao")[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

執行確認

[root@liumiaocn ~]# python basic-func.pyHello :  liumiao[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3

debug

除錯有很多種方式,使用pdb(python debugger)是最常見的方式也不受IDE等的限制,此處簡單介紹pdb的用法

                                       
gdb命令 描述
break 或 b 設定斷點
continue 或 c 繼續執行程式
list 或 l 檢視當前行的程式碼段
step 或 s 進入函式
return 或 r 執行程式碼直到從當前函式返回
exit 或 q 中止並退出
next 或 n 執行下一行
pp 列印變數的值
help 幫助
 

執行方式:python -m pdb python指令碼名稱

除錯示例

對上文的迴圈例子的指令碼使用pdb進行除錯如下:

[root@liumiaocn ~]# python -m pdb basic-loop.py> /root/basic-loop.py(3)<module>()-> level = 0(Pdb) l   很多與gdb使用方式都一樣,l for list,列出上下文source  1     #!/usr/bin/python  2  3  -> level = 0  4     while level < 105      cnt = 0  6      while cnt < 10-level :  7        cnt = cnt + 1  8        print(" ") ,  9 10      ascnt = 0 11      while ascnt < 2*level-1 :(Pdb) b 11  設定斷點Breakpoint 1 at /root/basic-loop.py:11(Pdb) c   繼續執行                    > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) pp ascnt  查詢變數值0(Pdb) p cnt10(Pdb) c                  > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c* > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c                > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c* > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c* > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c* > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) help  檢視幫助Documented commands (type help <topic>):========================================EOF    bt         cont      enable  jump  pp       run      unta      c          continue  exit    l     q        s        untilalias  cl         d         h       list  quit     step     upargs   clear      debug     help    n     r        tbreak   wb      commands   disable   ignore  next  restart  u        whatisbreak  condition  down      j       p     return   unalias  whereMiscellaneous help topics:==========================exec  pdbUndocumented commands:======================retval  rv(Pdb) clear  清除斷點Clear all breaks? y(Pdb) c* * * * *            * * * * * * *          * * * * * * * * *        * * * * * * * * * * *      * * * * * * * * * * * * *    * * * * * * * * * * * * * * *  * * * * * * * * * * * * * * * * *The program finished and will be restarted> /root/basic-loop.py(3)<module>()-> level = 0(Pdb) q 退出[root@liumiaocn ~]#
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78

總結

至此,基本的詞法,簡單的語法應該基本能寫了,問題解決時候的debug也有些微涉獵,很基礎的問題應該可以接觸了。但是這還遠遠不夠,需要我們在實際的工作中慢慢的升級我們的技能。

           

再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!https://blog.csdn.net/jiangjunshow