Day01 - Python 基礎介紹

1 Python 簡介

1.1 Python 的由來

Python的創始人:吉多·範羅蘇姆(Guido van Rossum)java

1989年,吉多·範羅蘇姆爲了在阿姆斯特丹打發聖誕節假期時間,開發的一個新的腳本解釋程序,做爲ABC語言的一種繼承。python

Python社區的人賦予他「仁慈大君」 的稱號,這一稱號直接來自英國肥皂劇《Monty Python飛行馬戲團》。Guido當初之因此選中Python做爲語言的名字,是由於他太喜歡這部肥皂劇了。linux

1.2 Python 現狀

TIOBE排行榜 c++

http://www.tiobe.com/tiobe-index/算法

 

 

1.3 Python 的特色

優勢:數據庫

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

  • 2)易於閱讀:Python代碼定義的更清晰。網絡

  • 3)易於維護:Python的成功在於它的源代碼是至關容易維護的。多線程

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

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

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

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

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

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

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

缺點:

  • 1)運行速度慢:和C程序相比很是慢。由於Python是解釋型語言,代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程很是耗時,因此很慢。而C程序是運行前直接編譯成CPU能執行的機器碼,因此很是快。

  可是大量的應用程序不須要這麼快的運行速度,由於用戶根本感受不出來。例如,開發一個下載MP3的網絡應用程序,C程序的運行時間須要0.001秒,而Python程序的運行時間須要0.1秒,慢了100倍,但因爲網絡更慢,須要等待1秒,用戶能感受到1.001秒和1.1秒的區別嗎?這就比如F1賽車和普通的出租車在北京三環路上行駛的道理同樣,雖然F1賽車理論時速高達400千米,但因爲三環路堵車的時速只有20千米,所以,做爲乘客,你感受的時速永遠是20千米。

不要在乎程序運行速度

  • 2)代碼不能加密:若是要發佈你的Python程序,實際上就是發佈源代碼,這一點跟C語言不一樣,C語言不用發佈源代碼,只須要把編譯後的機器碼(也就是你在Windows上常見的xxx.exe文件)發佈出去。要從機器碼反推出C代碼是不可能的,因此,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把源碼發佈出去。

  這個缺點僅限於你要編寫的軟件須要賣給別人掙錢的時候。好消息是,在目前的互聯網時代,靠賣軟件受權的商業模式愈來愈少了,靠網站和移動應用賣服務的模式愈來愈多了,後一種模式不須要把源碼給別人。另外,如今如火如荼的開源運動和互聯網自由開放的精神是一致的,互聯網上有無數很是優秀的像Linux同樣的開源代碼,咱們千萬不要高估本身寫的代碼真的有很是大的「商業價值」。那些大公司的代碼不肯意開放的更重要的緣由是代碼寫得太爛了,一旦開源,就沒人敢用他們的產品了。

哪有功夫破解你的爛代碼

  • 3)線程不能利用多CPU:這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖。是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。

 1.4 Python應用領域

  • WEB/客戶端 開發: 豆瓣、Youtube 、Quora 、BitTorrent、dropbox 、Gmail、Google Maps
  • 雲計算:OpenStack
  • 爬蟲:搜索引擎、網站比價、買火車票
  • 遊戲: EVE online 、Civilization IV
  • 科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系統運維: 運維人員必備語言
  • 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,並且重要性逐年提升。緣由:做爲動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤爲擅長策略回測
  • 圖形GUI: PyQT, WxPython,TkInter

1.5 Python在一些公司的應用 

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發
  • CIA: 美國中情局網站就是用Python開發的
  • NASA: 美國航天局(NASA)大量使用Python進行數據分析和運算
  • YouTube:世界上最大的視頻網站YouTube就是用Python開發的
  • Dropbox:美國最大的在線雲存儲網站,所有用Python實現,天天網站處理10億個文件的上傳和下載
  • Instagram:美國最大的圖片分享社交網站,天天超過3千萬張照片被分享,所有用python開發
  • Facebook:大量的基礎庫均經過Python實現的
  • Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
  • 豆瓣: 公司幾乎全部的業務均是經過Python開發的
  • 知乎: 國內最大的問答社區,經過Python開發(國外Quora)
  • 春雨醫生:國內知名的在線醫療網站是用Python開發的
  • 除上面以外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各類各樣的任務。

2 Python 環境搭建

2.1 獲取安裝包

下載地址:https://www.python.org/downloads/

2.2 安裝

  2.2.1 Windows:

    1)添加到PATH

    

    

    2)next

    

    3)選擇安裝目錄

    

    4)安裝成功

    

  2.2.2 Linux:

     解壓、編譯、安裝

1 # tar zxvf Python-3.5.2.tgz
2 
3 # cd  Python-3.5.2
4 
5 # ./configure
6 
7 # make
8 
9 # make install

 

3 Python的Hello World

3.1 交互模式

1 Python 3.5.2 (default, Sep 28 2016, 14:44:21) 
2 [GCC 4.1.2 20070626 (Red Hat 4.4.7-3)] on linux
3 Type "help", "copyright", "credits" or "license" for more information.
4 >>> print("Hello World!")
5 Hello World!
6 >>>

3.2 執行文件模式

1 編輯文件:vi hello.py
2 寫入代碼:print("Hello Woold!")
3 執行文件:python hello.py

3.3 使用IDE

3.3.1 PyCharm 簡介

PyCharm是由JetBrains打造的一款Python IDE,具有調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制等功能。另外,PyCharm還提供了一些很好的功能用於Django開發,同時支持Google App Engine,更酷的是,PyCharm支持IronPython!

3.3.2 PyCharm快捷鍵

在菜單欄Help下你點擊Default Keymap Reference,能夠打開一個PDF文件,裏面列出了全部的快捷鍵,你能夠打印出來備用。千萬不要被這麼多快捷鍵嚇到了,平常編程常用的也就下面 幾個,若是你想放棄鼠標,直接純鍵盤編程,那麼你會徹底愛上PyCharm。

◆  Basic code completion --- 」基本代碼完成「快捷鍵

在平常寫代碼中,Basic code completion是用的比較多的,它能夠智能的提示你或者幫你補全餘下的代碼。可是這一個快捷鍵是最有爭議的一個快捷鍵,由於它的快捷方式是Ctrl + Space,會與咱們的輸入法快捷鍵衝突,因此第一步咱們須要改變這個快捷鍵,我通常喜歡改爲Ctrl + Comma。(如何修改默認快捷鍵見下面介紹)

◆  Tab

Tab 有2種狀況:

1. 當你什麼也沒有輸入的時候,Tab只是4個空格的縮進。

2. 當你輸入前幾個字母,PyCharm會智能的列出全部的候選項,這時候,你只要按下Tab,會默認選擇第一個候選項。你也許以爲這沒什麼,可是這個功能能保證你的雙手不離口鍵盤的「字母區」,你不須要按上下左右鍵去選擇候選項,提供輸入速度,很是流暢。

◆  Shift+Enter --- 智能換行

class function鼠標在這(): 鼠標在function後面括號前面,我想換到下一行正確的位置寫代碼,那麼就Shift+Enter 智能換行吧

◆  其餘快捷鍵 --- 若是你感興趣,就看Default Keymap Reference吧,保證有驚喜

 

3.3.3 PyCharm默認快捷鍵的修改

上面提到,咱們須要修改Basic code completion的默認快捷鍵。

1)快捷鍵(Ctrl + Alt + S)打開設置面板,或者點擊如圖所示紅方框裏面的圖標:

2)找到Keymap選項

 

3.3.4 PyCharm 的插件

由於PyCharm的功能已經很強大了,我通常不多用插件,這裏介紹一個我很喜歡的插件,叫Native Neighbourhood,這個插件能夠快速的打開操做系統的文件。

那麼如何安裝插件呢?

1)快捷鍵(Ctrl + Alt + S)打開設置面板,或者點擊如圖所示紅方框裏面的圖標

2)找到Plugins

 

3.3.5 PyCharm 一下吧

那麼如今就點擊這個連接下載吧,不須要找註冊碼,先試用一個月再說!

http://www.jetbrains.com/pycharm/

4. 註釋

4.1 單行註釋

使用符號#開頭註釋單行內容:

1 #!/usr/bin/env python
2 # -*- coding: UTF-8 -*-
3 # 文件名:test.py
4 
5 # 第一個註釋
6 print("Hello, Python!") # 第二個註釋

輸出結果:

1 Hello, Python!

4.2 多行註釋

使用三個單引號(''')或三個雙引號(""")註釋多行內容

 1 #!/usr/bin/env python
 2 # -*- coding: UTF-8 -*-
 3 # 文件名:test.py
 4 
 5 
 6 '''
 7 這是多行註釋,使用單引號。
 8 這是多行註釋,使用單引號。
 9 這是多行註釋,使用單引號。
10 '''
11 
12 """
13 這是多行註釋,使用雙引號。
14 這是多行註釋,使用雙引號。
15 這是多行註釋,使用雙引號。
16 """

5 變量和數據類型

5.1 什麼是變量

變量是存儲在內存中的值。這就意味着,在建立變量時,會在內存中開闢一個空間。基於變量的數據類型,解釋器會分配指定內存,並決定什麼數據能夠被存儲在內存中。所以,變量能夠指定不一樣的數據類型,這些變量能夠存儲整數,小數或字符。

5.2 變量的聲明和賦值

 1 #!/usr/bin/env python
 2 # -*- coding: UTF-8 -*-
 3 
 4 counter = 100 # 賦值整型變量
 5 miles = 1000.0 # 浮點型
 6 name = "John" # 字符串
 7 
 8 print counter
 9 print miles
10 print name

以上實例中,100,1000.0和"John"分別賦值給counter,miles,name變量。

執行以上程序會輸出以下結果:

1 100
2 1000.0
3 John

5.3 變量的命名規則

  • 變量名只能是字母、數字或下劃線的任意組合
  • 變量名第一個字符不能是數字
  • 關鍵字不能聲明爲變量名

如下關鍵字不能聲明爲變量名
['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']

6 輸出和輸入

6.1 輸出

print()在括號中加上字符串,就能夠向屏幕上輸出指定的文字。好比輸出'hello, world',用代碼實現以下:

1 >>> print("Hello World!")
2 Hello World!

print()函數也能夠接受多個字符串,用逗號「,」隔開,就能夠連成一串輸出:

1 >>> print('The quick brown fox', 'jumps over', 'the lazy dog')
2 The quick brown fox jumps over the lazy dog

6.2 輸入

Python提供了一個input(),可讓用戶輸入字符串,並存放到一個變量裏。好比輸入用戶的名字:

1 >>> name = input()
2 James
3 >>> print(name)
4 James

 

python3中的input() 即爲 python2中的raw_input()

1 #!/usr/bin/env python
2 # -*- coding: UTF-8 -*-
3 
4 #name = raw_input("What is your name?") #only on python 2.x
5 name = input("What is your name?")
6 print("Hello " + name )

 

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

 1 #!/usr/bin/env python
 2 # -*- coding: UTF-8 -*-
 3 
 4 import getpass
 5 
 6 # 將用戶輸入的內容賦值給 name 變量
 7 passwd = getpass.getpass("請輸入密碼:")
 8 
 9 # 打印輸入的內容
10 print(passwd )

7 字符編碼

8 流程控制

8.1 if ... else ...

場景一:用戶登陸驗證

 1 # 提示輸入用戶名和密碼
 2   
 3 # 驗證用戶名和密碼
 4 #     若是錯誤,則輸出用戶名或密碼錯誤
 5 #     若是成功,則輸出 歡迎,XXX!
 6  
 7  
 8 #!/usr/bin/env python
 9 # -*- coding:UTF-8 -*-
10 
11 import getpass
12 
13 name = input('請輸入用戶名:')
14 passwd = getpass.getpass('請輸入密碼:')
15   
16 if name == "James" and passwd == "123":
17     print("歡迎,James!")
18 else:
19     print("用戶名和密碼錯誤")

 

場景2、猜年齡遊戲

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

8.2 for loop

循環10次:

1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 
4 for i in range(10):
5     print("loop:", i )

輸出結果:

 1 loop: 0
 2 loop: 1
 3 loop: 2
 4 loop: 3
 5 loop: 4
 6 loop: 5
 7 loop: 6
 8 loop: 7
 9 loop: 8
10 loop: 9

 

需求一:仍是上面的程序,可是遇到小於5的循環次數就不走了,直接跳入下一次循環

1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 
4 for i in range(10):
5     if i<5:
6         continue #不往下走了,直接進入下一次loop
7     print("loop:", i )

輸出結果:

1 loop: 5
2 loop: 6
3 loop: 7
4 loop: 8
5 loop: 9

 

需求二:仍是上面的程序,可是遇到大於5的循環次數就不走了,直接退出

1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3 
4 for i in range(10):
5     if i>5:
6         break #不往下走了,直接進入下一次loop
7     print("loop:", i )

輸出結果:

1 loop: 5
2 loop: 6
3 loop: 7
4 loop: 8
5 loop: 9

8.3 while loop

只要條件知足,就不斷循環,條件不知足時退出循環

1 #!/usr/bin/env python
2 # -*- coding:UTF-8 -*-
3 
4 count = 0
5 while (count < 9):
6    print('The count is:', count)
7    count = count + 1
8 
9 print("Good bye!")

輸出結果:

 1 The count is: 0
 2 The count is: 1
 3 The count is: 2
 4 The count is: 3
 5 The count is: 4
 6 The count is: 5
 7 The count is: 6
 8 The count is: 7
 9 The count is: 8
10 Good bye!

 

while 的死循環

1 #!/usr/bin/env python
2 # -*- coding:UTF-8 -*-
3 
4 count = 0
5 while True:
6     print("加雞腿...",count)
7     count +=1

 

做業一:博客

 

做業二:編寫登錄接口

  • 輸入用戶名密碼
  • 認證成功後顯示歡迎信息
  • 輸錯三次後鎖定

 

做業三:多級菜單
  • 三級菜單
  • 可依次選擇進入各子菜單
  • 所需新知識點:列表、字典
相關文章
相關標籤/搜索