【Python學習之路】——Day1

一、Python介紹:

①、Python是什麼

  • Python是一種面向對象、解釋型計算機程序設計語言,由吉多·範羅蘇姆(Guido van Rossum)於1989年發明,第一個公開發行版發行於1991年。
  • Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協議  。
  • Python語法簡潔清晰,特點之一是強制用空白符(white space)做爲語句縮進。
  • Python具備豐富和強大的庫。它常被暱稱爲膠水語言,可以把用其餘語言製做的各類模塊(尤爲是C/C++)很輕鬆地聯結在一塊兒。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的最終界面),而後對其中有特別要求的部分,用更合適的語言改寫,好比3D遊戲中的圖形渲染模塊,性能要求特別高,就能夠用C/C++重寫,然後封裝爲Python能夠調用的擴展類庫。須要注意的是在您使用擴展類庫時可能須要考慮平臺問題,某些可能不提供跨平臺的實現。

②、目前Python主要應用領域:

  • 雲計算: 雲計算最火的語言, 典型應用OpenStack
  • WEB開發: 衆多優秀的WEB框架,衆多大型網站均爲Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系統運維: 運維人員必備語言
  • 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,並且重要性逐年提升。緣由:做爲動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤爲擅長策略回測
  • 圖形GUI: PyQT, WxPython,TkInter 

③、Python的優勢:

  • 易於學習:Python有相對較少的關鍵字,結構簡單,和一個明肯定義的語法,學習起來更加簡單。html

  • 易於閱讀:Python代碼定義的更清晰。java

  • 易於維護:Python的成功在於它的源代碼是至關容易維護的。python

  • 擁有普遍的標準庫:Python的最大的優點之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh兼容很好。linux

  • 互動模式:互動模式的支持,您能夠從終端輸入執行代碼並得到結果的語言,互動的測試和調試代碼片段。c++

  • 可移植:基於其開放源代碼的特性,Python已經被移植(也就是使其工做)到許多平臺。程序員

  • 可擴展:若是你須要一段運行很快的關鍵代碼,或者是想要編寫一些不肯開放的算法,你可使用C或C++完成那部分程序,而後從你的Python程序中調用。算法

  • 數據庫:Python提供全部主要的商業數據庫的接口。shell

  • GUI編程:Python支持GUI能夠建立和移植到許多系統調用。數據庫

  • 可嵌入: 你能夠將Python嵌入到C/C++程序,讓你的程序的用戶得到"腳本化"的能力。macos

④、Python的缺點:

  • 速度慢:Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些.
  • 代碼沒法加密:由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的
  • 線程不能利用多CPU:是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。

⑤、編譯和解釋的區別是什麼?

  • 編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快; 
  • 解釋器則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的. 
  • 這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)

二、Python安裝:

 

學習Python首先固然是安裝上,以下提供windows、Linux、Mac的安裝方法(所有都是Python3.x,如下實踐都是在Python3.x上進行)

 

①、Windows

1.下載安裝包 Python3.5 for windows 
2.安裝 默認安裝路徑:C:\python3.5.2 
3.配置環境變量(原來的值;C:\python27,切記前面有分號) 
右鍵計算機-->屬性-->高級系統設置-->環境變量-->找到變量名爲Path的一行雙擊-->Python安裝目錄追加到變量值中。用分號;分割 
4.Windows更新Python,卸載重裝便可

②、Linux

1.安裝gcc,用於編譯Python源碼 yum install gcc 
2.下載源碼包 
Python發行版 #選擇版本下載 
Python3.5版本 #安裝Python3.5 
3.解壓並進入源碼文件 cd python3.5.2 
4.編譯安裝

./configure
make all
make install

5.查看版本

/usr/local/bin/python3.5 -V
Python 3.5.2

6.修改默認Python版本

mv /usr/bin/python /usr/bin/python2.6
ln -s /usr/local/bin/python3.5 /usr/bin/python

7.防止yum執行異常,修改yum使用的Python版本

vi /usr/bin/yum
#!/usr/bin/python  更改成 #!/usr/bin/python2.6

③、MAC

 

1.下載如下軟件,直接雙擊運行便可安裝 
Mac OS X 10.5以上點擊下載 
Mac OS X 10.6以上點擊下載

 

2.執行Python3命令便可查詢

 

[root@localhost ~] python3
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

 

三、Python —— Hello World程序

python的Hello world 2.x能夠帶括號不用帶括號,而3.x 輸出時必需要帶括號的!
在linux下建立個hello.py,並輸入
print("Hello World!") #3.x
print "Hello World!"  #2.x
print("Hello World!") #2.x

執行命令: python hello.py

上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。

若是想要相似於執行shell腳本同樣執行python腳本,例: ./hello.py ,那麼就須要在 hello.py 文件的頭部指定解釋器,以下:

#!/usr/bin/env python
print ("hello,world")

如此一來,執行: ./hello.py 便可。

ps:執行前需給予 hello.py 執行權限,chmod 755 hello.py

在交互器執行

除了把程序寫在文件裏,還能夠直接調用python自帶的交互器運行代碼

[root@localhost ~]# python
Python 3.5.2 (default, Jun 17 2014, 18:11:42)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print ("hello word")
hello word

四、Python的變量和字符編碼

聲明變量

#_*_coding:utf-8_*_
 
name = "Alex Li"

上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"Alex Li" 

變量定義的規則:

  • 變量名只能是 字母、數字或下劃線的任意組合
  • 變量名的第一個字符不能是數字
  • 如下關鍵字不能聲明爲變量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

變量的賦值

name = "Alex Li"
name2 = name print(name,name2)
name
= "Jack"
print("What is the value of name2 now?")

字符編碼

python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。

 

關於中文

爲了處理漢字,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。

GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區的內碼範圍高字節從B0-F7,低字節從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。

GB2312 支持的漢字太少。1995年的漢字擴展規範GBK1.0收錄了21886個符號,它分爲漢字區和圖形符號區。漢字區包括21003個字符。2000年的 GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。如今的PC平臺必須支持GB18030,對嵌入式產品暫不做要求。因此手機、MP3通常只支持GB2312。

從ASCII、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中老是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文能夠統一地處理。區分中文編碼的方法是高字節的最高位不爲0。按照程序員的稱呼,GB23十二、GBK到GB18030都屬於雙字節字符集 (DBCS)。

有的中文Windows的缺省內碼仍是GBK,能夠經過GB18030升級包升級到GB18030。不過GB18030相對GBK增長的字符,普通人是很難用到的,一般咱們仍是用GBK指代中文Windows內碼。

 

 

顯然ASCII碼沒法將世界上的各類文字和符號所有表示,因此,就須要新出一種能夠表明全部字符和符號的編碼,即:Unicode

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多

UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...

因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),若是是以下代碼的話:

報錯:ascii碼沒法表示中文

#!/usr/bin/env python
  
print "你好,世界"

改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
print "你好,世界"

五、註釋:

單行註釋:
  # 被註釋內容

多行註釋:
  '''被註釋的內容'''

六、用戶輸入

#!/usr/bin/env python
#_*_coding:utf-8_*_
 
 
#name = raw_input("What is your name?") #only on python 2.x
name = input("What is your name?")
print("Hello " + name )

輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
import getpass
  
# 將用戶輸入的內容賦值給 name 變量
pwd = getpass.getpass("請輸入密碼:")
  
# 打印輸入的內容
print(pwd)

七、表達式if……else

場景1、用戶登錄驗證
# 提示輸入用戶名和密碼
  
# 驗證用戶名和密碼
#     若是錯誤,則輸出用戶名或密碼錯誤
#     若是成功,則輸出 歡迎,XXX!
 
 
#!/usr/bin/env python
# -*- coding: encoding -*-
  
import getpass
  
  
name = raw_input('請輸入用戶名:')
pwd = getpass.getpass('請輸入密碼:')
  
if name == "alex" and pwd == "cmd":
    print("歡迎,alex!")
else:
    print("用戶名和密碼錯誤")

場景2、猜年齡遊戲

在程序裏設定好你的年齡,而後啓動程序讓用戶猜想,用戶輸入後,根據他的輸入提示用戶輸入的是否正確,若是錯誤,提示是猜大了仍是小了

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
 
my_age = 28
 
user_input = int(input("input your guess num:"))
 
if user_input == my_age:
    print("Congratulations, you got it !")
elif user_input < my_age:
    print("Oops,think bigger!")
else:
    print("think smaller!")
外層變量,能夠被內層代碼使用
內層變量,不該被外層代碼使用

八、做業

做業二:編寫登錄接口

  • 輸入用戶名密碼
  • 認證成功後顯示歡迎信息
  • 輸錯三次後鎖定
相關文章
相關標籤/搜索