Python是著名的"龜叔
"Guido van Rossum(吉多·範羅蘇姆)
在1989年聖誕節期間,爲了打發無聊的聖誕節而編寫的一個編程語言。python
Python語法不少來自C,但又受到ABC語言的強烈影響,來自ABC語言的一些規定直到今天還富有爭議,好比強制縮進,但這些語法規定讓Python變得更易讀。shell
Guido van Rossum
著名的一句話就是Life is short, you need Python
,譯爲:人生苦短,我用Python
,一直到如今,不管在任何介紹Python這門強大的語言時,都會有提到。編程
截至到目前2017年1月6日
,Python在Tiobe
的排名仍是很靠前的,並且近幾年來講Python上升的趨勢仍是特別穩定的,這兩年一直保持在第四位,甚至已經超越PHP和C#。小程序
查詢網站:http://www.tiobe.com/tiobe_in...windows
咱們還能夠再解釋下下經過import this
查看Python語言的設計哲學:bash
>>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
Python惟一的缺點就是他的性能,它達不到像C和C++這種編譯性語言運行的那麼快,可是咱們一般都不須要考慮這個問題,由於有PYPY
,它的運行速度比默認的Cpython
要快不少。less
下載Python解釋器編程語言
64位下載地址:https://www.python.org/ftp/py...
32位下載地址:https://www.python.org/ftp/py...ide
安裝Python解釋器函數
下載下來以後雙擊安裝,在安裝的時候稍微須要注意一下就是須要修改默認的安裝路徑和和自動註冊到系統環境變量勾選上。
而後就能夠點擊Install
按鈕進行安裝了。
由於咱們已經勾選自動註冊環境變量,因此在這裏就不須要修改環境變量,直接運行便可;
DOS測試
右鍵開始菜單選擇命令提示符
,打開CMD窗口,
在cmd窗口中輸入python -V
指令查看安裝的Python版本:
若是你獲得的結果和我同樣,那麼你就安裝好了windows
下的python
環境。
由於在Mac os
和其餘unix
和Linux
版本下都已經自帶了Python,這裏我就不作太多介紹了。
Python身爲一門編程語言,可是他是有多種實現方式的,這裏的實現指的是符合Python語言規範的Python解釋程序以及標準庫等。
Python的實現方式主要分爲三大類
Cpython
Jpython
IronPython
Cpython
是默認的Python解釋器,這個名字根據它是可移植的ANSI C
語言代碼編寫而成的這事實而來的。
當執行Python執行代碼的時候,會啓用一個Python解釋器,將源碼(.py)
文件讀取到內存當中,而後編譯成字節碼(.pyc)
文件,最後交給Python的虛擬機(PVM)
逐行解釋並執行其內容,而後釋放內存,退出程序。
當第二次在執行當前程序的時候,會先在當前目錄下尋找有沒有同名的pyc文件,若是找到了,則直接進行運行,不然重複上面的工做。
pyc文件的目的其實就是爲了實現代碼的重用,爲何這麼說呢?由於Python認爲只要是import導入過來的文件,就是能夠被重用的,那麼他就會將這個文件編譯成pyc文件。
python會在每次載入模塊以前都會先檢查一下py文件和pyc文件的最後修改日期,若是不一致則從新生成一份pyc文件,不然就直接讀取運行。
Jython是個Python的一種實現方式,Jython編譯Python代碼爲Java字節碼,而後由JVM(Java虛擬機)執行,這意味着此時Python程序與Java程序沒有區別,只是源代碼不同。此外,它可以導入和使用任何Java類像Python模塊。
IronPython是Python的C#實現,而且它將Python代碼編譯成C#中間代碼(與Jython相似),而後運行,它與.NET語言的互操做性也很是好。
通常狀況下程序猿的第一個小程序都是簡單的輸出Hello Word!
,固然Python也不例外,下面就讓咱們來用Python輸出一句Hello Word!
吧!
建立一個以py結尾的文件
[root@ansheng python_code]# touch hello.py
其內容爲
#!/usr/vin/env python print "Hello Word!"
用Python執行
[root@ansheng python_code]# python hello.py Hello Word!
輸出的內容爲Hello Word!
,OK,你的第一次一句木有了^_^
在Python文件的開頭加入如下代碼就制定瞭解釋器。
第一種方式
#!/usr/bin/python
告訴shell這個腳本用/usr/bin/python
執行
第二種方式
#!/usr/bin/env python
在操做系統環境不一樣的狀況下指定執行這個腳本用python來解釋。
執行Python文件的方式有兩種
例如hello.py
的文件內容爲
#!/usr/bin/env python print "Life is short, you need Pytho"
第一種執行方式
[root@ansheng python_code]# python my.py Life is short, you need Pytho
若是使用python my.py
這種方式執行,那麼#!/usr/bin/python
會被忽略,等同於註釋。
第二種執行方式
[root@ansheng python_code]# chmod +x my.py [root@ansheng python_code]# ./my.py Life is short, you need Pytho
若是使用./my.py
來執行,那麼#!/usr/bin/python
則是指定解釋器的路徑,在執行以前my.py
這個文件必須有執行權限。
python my.py
實則就是在my.py
文件頂行加入了#!/usr/bin/python
python制定字符編碼的方式有多種,而編碼格式是要寫在解釋器的下面的,經常使用的以下面三種:
第一種
#!/usr/bin/env python # _*_ coding:utf-8 _*_
第二種
#!/usr/bin/env python # -*- coding:utf-8 -*-
第三種
#!/usr/bin/env python # coding:utf-8
單行註釋只須要在代碼前面加上#
號
# 註釋內容
多行註釋用三個單引號或者三個雙引號躲起來
""" 註釋內容 """
py
腳本原文件內容
#!/usr/bin/env python # _*_ coding:utf-8 _*_ print "My name is Ansheng" print "I'm a Python developer" print "My blog URL: https://blog.ansheng.me" print "Life is short, you need Pytho"
源文件輸出的內容
[root@ansheng python_code]# python note.py My name is Ansheng I'm a Python developer My blog URL: https://blog.ansheng.me Life is short, you need Pytho
代碼改成
#!/usr/bin/env python # _*_ coding:utf-8 _*_ print "My name is Ansheng" print "I'm a Python developer" print "My blog URL: https://blog.ansheng.me" #print "Life is short, you need Pytho"
執行結果
[root@ansheng python_code]# python note.py My name is Ansheng I'm a Python developer My blog URL: https://blog.ansheng.me
結果Life is short, you need Pytho
print出來
代碼改成
#!/usr/bin/env python # _*_ coding:utf-8 _*_ print "My name is Ansheng" """ print "I'm a Python developer" print "My blog URL: https://blog.ansheng.me" print "Life is short, you need Pytho" """
執行結果
[root@ansheng python_code]# python note.py My name is Ansheng
結果I'm a Python developer
、My blog URL: https://blog.ansheng.me
、Life is short, you need Pytho
都沒有print出來
既然用單個單引號或者多引號能夠註釋多行,那麼能不能print多行呢?
代碼
#!/usr/bin/env python # _*_ coding:utf-8 _*_ print """ My name is Ansheng I'm a Python developer My blog URL: https://blog.ansheng.me Life is short, you need Python. """
執行結果
[root@ansheng python_code]# python note.py My name is Ansheng I'm a Python developer My blog URL: https://blog.ansheng.me Life is short, you need Python.
顯然這是能夠得 ^_^
變量的命名規則:
變量名只能包含數字、字幕、下劃線
不能以數字開頭
變量名不能使python內部的關鍵字
Python內部已佔用的關鍵字
['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 = "ansheng" >>> print name ansheng
定義字符串類型是須要用單引號或者雙引號包起來的
>>> name = "ansheng" >>> print(type(name)) <type 'str'>
或者
>>> name = 'ansheng' >>> print(type(name)) <type 'str'>
整數類型定義的時候變量名後面能夠直接跟數字,不要用雙引號包起來。
>>> age = 20 >>> print(type(age)) <type 'int'>
布爾值就只有True(真)
,Flash(假)
>>> if True: ... print("0") ... else: ... print("1") ... 0
解釋:若是爲真則輸出0,不然輸出1
if
語句是用來檢查一個條件:若是條件爲真(true),咱們運行一個語句塊(你爲if塊),不然(else),咱們執行另外一個語句塊(稱爲else塊),else子語句是可選的。
例題:若是num變量大於1,那麼就輸出num大,不然就輸出num小,num值爲5。
代碼
#!/usr/bin/env python # -*- coding:utf-8 -*- num = 5 if num > 1: print("num大") else: print("num小")
結果
[root@ansheng python_code]# python num.py num大
例題:若是num變量大於5,那麼就輸出num大於5,若是num變量小於5,那麼就輸出num小於5,不然就輸出num等於5,num值爲5。
#!/usr/bin/env python # -*- coding:utf-8 -*- num = 5 if num > 5: print("num大於5") elif num < 5: print("num小於5") else: print("num等於5")
結果
[root@ansheng python_code]# python num.py num等於5
while語句用於循環執行程序,即在某條件下,循環執行某段程序,以處理須要重複處理的相同任務。
執行流程圖以下
實例:
定義一個變量count,默認值爲1,而後進去while循環,讓其輸出1-10,若是大於10則退出。
#!/usr/bin/env python # _*_ coding:utf-8 _*_ count = 1 print "Start...." while count < 11: print "The count is:",count count += 1 print "End...."
執行結果以下
[root@ansheng python_code]# python while.py Start.... The count is: 1 The count is: 2 The count is: 3 The count is: 4 The count is: 5 The count is: 6 The count is: 7 The count is: 8 The count is: 9 The count is: 10 End....
跳出當前循環體,下面代碼再也不執行,繼續執行循環後面的代碼
實例
#!/usr/bin/env python # _*_ coding:utf-8 _*_ count = 1 print "Start...." while count < 11: if count == 5: #若是count等於5,那麼我就退出當前循環體 break print "The count is:",count count += 1 print "End...."
輸出結果
[root@ansheng python_code]# python while.py Start.... The count is: 1 The count is: 2 The count is: 3 The count is: 4 End....
跳出本次循環,繼續下一次循環
代碼
#!/usr/bin/env python # _*_ coding:utf-8 _*_ count = 1 print "Start...." while count < 11: if count == 5: #若是count等於5,那麼我就讓其+1,而後不執行下面的代碼,繼續下一次循環 count += 1 continue print "The count is:",count count += 1 print "End...."
輸出結果
[root@ansheng python_code]# python while.py Start.... The count is: 1 The count is: 2 The count is: 3 The count is: 4 The count is: 6 The count is: 7 The count is: 8 The count is: 9 The count is: 10 End....
條件判斷適用於if
、while
等。
等於
if 1 == 1:
不等於
if 1 != 2:
小於
if 1 < 1
大於
if 1 > 1:
而且
if 1 == 1 and 1 > 0:
或者
if 2 > 1 or 2 = 2:
永遠爲真
if True:
永遠爲假
if False:
Python的交互式輸入使用的是input()
函數實現的,注意在Python2.7.x
版本的時候可使用raw_input()
和input()
函數,可是在Python3.5.x
版本的時候就沒有raw_input()
函數了,只可以使用input()
例題:用戶在執行腳本的時候,讓他輸入本身的名字,而後打印出來。
代碼
#!/usr/bin/env python # _*_ coding:utf-8 _*_ username = input("請輸入你的名字:") print("你的名字是:", username)
執行結果
[root@ansheng python_code]# python input.py 請輸入你的名字:安生 # 輸入你的名字 你的名字是: 安生 # 打印出你的名字
思路:
首先定義一個變量num,值爲1,而後用while循環輸出1-10的內容,在while循環內加入if語句,判斷當前的值若是是7,那麼就讓7+1,加完以後跳出本次循環,不執行下面的print,7跳出本次循環以後,第二輪的時候num就是8了,而不是7.
代碼
#!/use/bin/env python # _*_ coding:utf-8 _*_ num = 1 while num < 11: if num == 7: num += 1 continue print(num) num += 1
輸出內容爲:
1 2 3 4 5 6 8 9 10
思路:
定義兩個變量,分別是count和num,利用while語句循環輸出1-100,而後每次就讓count+num,這樣循環一百次以後相加的結果就是1到100的和了。
代碼
#!/use/bin/env python # _*_ coding:utf-8 _*_ count = 1 num = 0 while count < 101: num = num + count count += 1 print(num)
輸出結果
5050
思路:
利用%
整數相除的餘,若是餘數是1那麼當前的count就是奇數,若是餘0,那麼當前的count就是偶數。
代碼
#!/use/bin/env python # _*_ coding:utf-8 _*_ count = 1 while count < 101: num = count % 2 if num == 1: print(count) count += 1
結果本身執行看
代碼
#!/use/bin/env python # _*_ coding:utf-8 _*_ count = 1 while count < 101: num = count % 2 if num == 0: print(count) count += 1
結果本身執行看
#!/use/bin/env python # _*_ coding:utf-8 _*_ count = 1 while count < 100: if count == 1: num = count elif count % 2 == 1: num = num + count elif count % 2 == 0: num = num - count count += 1 print(num)
結果
50
需求:寫一個腳本,用戶執行腳本的時候輸入用戶名和密碼,若是用戶米或者密碼連續三次輸入錯誤則退出,若是輸入正確則顯示登錄成功,而後退出。
用戶名和密碼本身定義
圖解用戶登陸流程
代碼
#!/use/bin/env python # _*_ coding:utf-8 _*_ import getpass # username:ansheng # userpass:666666 count = 3 while count > 0: username = input("User Name:") userpass = getpass.getpass("pass:") if username == "ansheng" and userpass == "666666": print "User:", username, ",login successful!" break else: count -= 1 if count != 0: print "Login failed", count else: print("The maximum number of login!")
登錄成功演示
User Name:ansheng #輸入用戶名 pass: #輸入密碼,密碼是看不到的,由於調用了getpass模塊 User: ansheng ,login successful! #顯示用戶ansheng,登錄成功
登錄失敗演示
User Name:as pass: Login failed 2 User Name:an pass: Login failed 1 User Name:ansea pass: The maximum number of login!
帳號或密碼連續三次輸入錯誤則退出程序,而且每次提醒用戶升序多少次登錄的機會。