摘要:是個的一種實現(xiàn)方式,編譯代碼為字節(jié)碼,然后由虛擬機(jī)執(zhí)行,這意味著此時程序與程序沒有區(qū)別,只是源代碼不一樣。原文鏈接全棧之路系列文章
Python的誕生
Python是著名的"龜叔"Guido van Rossum(吉多·范羅蘇姆)在1989年圣誕節(jié)期間,為了打發(fā)無聊的圣誕節(jié)而編寫的一個編程語言。
Python語法很多來自C,但又受到ABC語言的強(qiáng)烈影響,來自ABC語言的一些規(guī)定直到今天還富有爭議,比如強(qiáng)制縮進(jìn),但這些語法規(guī)定讓Python變得更易讀。
Guido van Rossum著名的一句話就是Life is short, you need Python,譯為:人生苦短,我用Python,一直到現(xiàn)在,無論在任何介紹Python這門強(qiáng)大的語言時,都會有提到。
截至到目前2017年1月6日,Python在Tiobe的排名還是很靠前的,而且近幾年來說Python上升的趨勢還是特別穩(wěn)定的,這兩年一直保持在第四位,甚至已經(jīng)超越PHP和C#。
查詢網(wǎng)站:http://www.tiobe.com/tiobe_in...
我們還可以再解釋下下通過import this查看Python語言的設(shè)計哲學(xué):
>>> 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唯一的缺點(diǎn)就是他的性能,它達(dá)不到像C和C++這種編譯性語言運(yùn)行的那么快,但是我們通常都不需要考慮這個問題,因為有PYPY,它的運(yùn)行速度比默認(rèn)的Cpython要快很多。
在Win10下安裝Python3下載Python解釋器
64位下載地址:https://www.python.org/ftp/py...
32位下載地址:https://www.python.org/ftp/py...
安裝Python解釋器
下載下來之后雙擊安裝,在安裝的時候稍微需要注意一下就是需要修改默認(rèn)的安裝路徑和和自動注冊到系統(tǒng)環(huán)境變量勾選上。
然后就可以點(diǎn)擊Install按鈕進(jìn)行安裝了。
因為我們已經(jīng)勾選自動注冊環(huán)境變量,所以在這里就不需要修改環(huán)境變量,直接運(yùn)行即可;
DOS測試
右鍵開始菜單選擇命令提示符,打開CMD窗口,
在cmd窗口中輸入python -V指令查看安裝的Python版本:
如果你得到的結(jié)果和我一樣,那么你就安裝好了windows下的python環(huán)境。
因為在Mac os和其他unix和Linux版本下都已經(jīng)自帶了Python,這里我就不做太多介紹了。
Python實現(xiàn)方式Python身為一門編程語言,但是他是有多種實現(xiàn)方式的,這里的實現(xiàn)指的是符合Python語言規(guī)范的Python解釋程序以及標(biāo)準(zhǔn)庫等。
Python的實現(xiàn)方式主要分為三大類
Cpython
Jpython
IronPython
CPythonCpython是默認(rèn)的Python解釋器,這個名字根據(jù)它是可移植的ANSI C語言代碼編寫而成的這事實而來的。
當(dāng)執(zhí)行Python執(zhí)行代碼的時候,會啟用一個Python解釋器,將源碼(.py)文件讀取到內(nèi)存當(dāng)中,然后編譯成字節(jié)碼(.pyc)文件,最后交給Python的虛擬機(jī)(PVM)逐行解釋并執(zhí)行其內(nèi)容,然后釋放內(nèi)存,退出程序。
當(dāng)?shù)诙卧趫?zhí)行當(dāng)前程序的時候,會先在當(dāng)前目錄下尋找有沒有同名的pyc文件,如果找到了,則直接進(jìn)行運(yùn)行,否則重復(fù)上面的工作。
pyc文件的目的其實就是為了實現(xiàn)代碼的重用,為什么這么說呢?因為Python認(rèn)為只要是import導(dǎo)入過來的文件,就是可以被重用的,那么他就會將這個文件編譯成pyc文件。
python會在每次載入模塊之前都會先檢查一下py文件和pyc文件的最后修改日期,如果不一致則重新生成一份pyc文件,否則就直接讀取運(yùn)行。
JythonJython是個Python的一種實現(xiàn)方式,Jython編譯Python代碼為Java字節(jié)碼,然后由JVM(Java虛擬機(jī))執(zhí)行,這意味著此時Python程序與Java程序沒有區(qū)別,只是源代碼不一樣。此外,它能夠?qū)牒褪褂萌魏蜫ava類像Python模塊。
IronPythonIronPython是Python的C#實現(xiàn),并且它將Python代碼編譯成C#中間代碼(與Jython類似),然后運(yùn)行,它與.NET語言的互操作性也非常好。
Python簡單入門 Hello Word一般情況下程序猿的第一個小程序都是簡單的輸出Hello Word!,當(dāng)然Python也不例外,下面就讓我們來用Python輸出一句Hello Word!吧!
創(chuàng)建一個以py結(jié)尾的文件
[root@ansheng python_code]# touch hello.py
其內(nèi)容為
#!/usr/vin/env python print "Hello Word!"
用Python執(zhí)行
[root@ansheng python_code]# python hello.py Hello Word!
輸出的內(nèi)容為Hello Word!,OK,你的第一次一句木有了^_^
指定Python解釋器在Python文件的開頭加入以下代碼就制定了解釋器。
第一種方式
#!/usr/bin/python
告訴shell這個腳本用/usr/bin/python執(zhí)行
第二種方式
#!/usr/bin/env python
在操作系統(tǒng)環(huán)境不同的情況下指定執(zhí)行這個腳本用python來解釋。
執(zhí)行Python文件執(zhí)行Python文件的方式有兩種
例如hello.py的文件內(nèi)容為
#!/usr/bin/env python print "Life is short, you need Pytho"
第一種執(zhí)行方式
[root@ansheng python_code]# python my.py Life is short, you need Pytho
如果使用python my.py這種方式執(zhí)行,那么#!/usr/bin/python會被忽略,等同于注釋。
第二種執(zhí)行方式
[root@ansheng python_code]# chmod +x my.py [root@ansheng python_code]# ./my.py Life is short, you need Pytho
如果使用./my.py 來執(zhí)行,那么#!/usr/bin/python則是指定解釋器的路徑,在執(zhí)行之前my.py這個文件必須有執(zhí)行權(quán)限。
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代碼注釋 單行注釋
單行注釋只需要在代碼前面加上#號
# 注釋內(nèi)容多行注釋
多行注釋用三個單引號或者三個雙引號躲起來
""" 注釋內(nèi)容 """實例
py腳本原文件內(nèi)容
#!/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"
源文件輸出的內(nèi)容
[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"
執(zhí)行結(jié)果
[root@ansheng python_code]# python note.py My name is Ansheng I"m a Python developer My blog URL: https://blog.ansheng.me
結(jié)果Life is short, you need Pythoprint出來
多行注釋演示代碼改為
#!/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" """
執(zhí)行結(jié)果
[root@ansheng python_code]# python note.py My name is Ansheng
結(jié)果I"m a Python developer、My blog URL: https://blog.ansheng.me、Life is short, you need Pytho都沒有print出來
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. """
執(zhí)行結(jié)果
[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.
顯然這是可以得 ^_^
變量變量的命名規(guī)則:
變量名只能包含數(shù)字、字幕、下劃線
不能以數(shù)字開頭
變量名不能使python內(nèi)部的關(guān)鍵字
Python內(nèi)部已占用的關(guān)鍵字
["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基本的數(shù)據(jù)類型 字符串(str)
定義字符串類型是需要用單引號或者雙引號包起來的
>>> name = "ansheng" >>> print(type(name))
或者
>>> name = "ansheng" >>> print(type(name))數(shù)字(int)
整數(shù)類型定義的時候變量名后面可以直接跟數(shù)字,不要用雙引號包起來。
>>> age = 20 >>> print(type(age))布爾值
布爾值就只有True(真),Flash(假)
>>> if True: ... print("0") ... else: ... print("1") ... 0
解釋:如果為真則輸出0,否則輸出1
流程控制 if語句if語句是用來檢查一個條件:如果條件為真(true),我們運(yùn)行一個語句塊(你為if塊),否則(else),我們執(zhí)行另一個語句塊(稱為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小")
結(jié)果
[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")
結(jié)果
[root@ansheng python_code]# python num.py num等于5while循環(huán)
while語句用于循環(huán)執(zhí)行程序,即在某條件下,循環(huán)執(zhí)行某段程序,以處理需要重復(fù)處理的相同任務(wù)。
執(zhí)行流程圖如下
實例:
定義一個變量count,默認(rèn)值為1,然后進(jìn)去while循環(huán),讓其輸出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...."
執(zhí)行結(jié)果如下
[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....break
跳出當(dāng)前循環(huán)體,下面代碼不再執(zhí)行,繼續(xù)執(zhí)行循環(huán)后面的代碼
實例
#!/usr/bin/env python # _*_ coding:utf-8 _*_ count = 1 print "Start...." while count < 11: if count == 5: #如果count等于5,那么我就退出當(dāng)前循環(huán)體 break print "The count is:",count count += 1 print "End...."
輸出結(jié)果
[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....continue
跳出本次循環(huán),繼續(xù)下一次循環(huán)
代碼
#!/usr/bin/env python # _*_ coding:utf-8 _*_ count = 1 print "Start...." while count < 11: if count == 5: #如果count等于5,那么我就讓其+1,然后不執(zhí)行下面的代碼,繼續(xù)下一次循環(huán) count += 1 continue print "The count is:",count count += 1 print "End...."
輸出結(jié)果
[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:
永遠(yuǎn)為真
if True:
永遠(yuǎn)為假
if False:交互式輸入
Python的交互式輸入使用的是input()函數(shù)實現(xiàn)的,注意在Python2.7.x版本的時候可以使用raw_input()和input()函數(shù),但是在Python3.5.x版本的時候就沒有raw_input()函數(shù)了,只能夠使用input()
例題:用戶在執(zhí)行腳本的時候,讓他輸入自己的名字,然后打印出來。
代碼
#!/usr/bin/env python # _*_ coding:utf-8 _*_ username = input("請輸入你的名字:") print("你的名字是:", username)
執(zhí)行結(jié)果
[root@ansheng python_code]# python input.py 請輸入你的名字:安生 # 輸入你的名字 你的名字是: 安生 # 打印出你的名字練習(xí)題 使用while循環(huán)輸入1 2 3 4 5 6 8 9 10
思路: 首先定義一個變量num,值為1,然后用while循環(huán)輸出1-10的內(nèi)容,在while循環(huán)內(nèi)加入if語句,判斷當(dāng)前的值如果是7,那么就讓7+1,加完之后跳出本次循環(huán),不執(zhí)行下面的print,7跳出本次循環(huán)之后,第二輪的時候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
輸出內(nèi)容為:
1 2 3 4 5 6 8 9 10求1-100的所有數(shù)的和
思路:定義兩個變量,分別是count和num,利用while語句循環(huán)輸出1-100,然后每次就讓count+num,這樣循環(huán)一百次之后相加的結(jié)果就是1到100的和了。
代碼
#!/use/bin/env python # _*_ coding:utf-8 _*_ count = 1 num = 0 while count < 101: num = num + count count += 1 print(num)
輸出結(jié)果
5050輸出 1-100 內(nèi)的所有奇數(shù)
思路: 利用%整數(shù)相除的余,如果余數(shù)是1那么當(dāng)前的count就是奇數(shù),如果余0,那么當(dāng)前的count就是偶數(shù)。
代碼
#!/use/bin/env python # _*_ coding:utf-8 _*_ count = 1 while count < 101: num = count % 2 if num == 1: print(count) count += 1
結(jié)果自己執(zhí)行看
輸出 1-100 內(nèi)的所有偶數(shù)代碼
#!/use/bin/env python # _*_ coding:utf-8 _*_ count = 1 while count < 101: num = count % 2 if num == 0: print(count) count += 1
結(jié)果自己執(zhí)行看
求1-2+3-4+5 ... 99的所有數(shù)的和#!/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)
結(jié)果
50用戶登陸
需求:寫一個腳本,用戶執(zhí)行腳本的時候輸入用戶名和密碼,如果用戶米或者密碼連續(xù)三次輸入錯誤則退出,如果輸入正確則顯示登陸成功,然后退出。
用戶名和密碼自己定義
圖解用戶登錄流程
代碼
#!/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: #輸入密碼,密碼是看不到的,因為調(diào)用了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!
賬號或密碼連續(xù)三次輸入錯誤則退出程序,并且每次提醒用戶升序多少次登陸的機(jī)會。
原文鏈接
Python全棧之路系列文章
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/38329.html
某熊的技術(shù)之路指北 ? 當(dāng)我們站在技術(shù)之路的原點(diǎn),未來可能充滿了迷茫,也存在著很多不同的可能;我們可能成為 Web/(大)前端/終端工程師、服務(wù)端架構(gòu)工程師、測試/運(yùn)維/安全工程師等質(zhì)量保障、可用性保障相關(guān)的工程師、大數(shù)據(jù)/云計算/虛擬化工程師、算法工程師、產(chǎn)品經(jīng)理等等某個或者某幾個角色。某熊的技術(shù)之路系列文章/書籍/視頻/代碼即是筆者蹣跚行進(jìn)于這條路上的點(diǎn)滴印記,包含了筆者作為程序員的技術(shù)視野、...
摘要:列表同字符串一樣都是有序的,因為他們都可以通過切片和索引進(jìn)行數(shù)據(jù)訪問,且列表的的是可變的。 列表(list)同字符串一樣都是有序的,因為他們都可以通過切片和索引進(jìn)行數(shù)據(jù)訪問,且列表的的是可變的。 創(chuàng)建列表的幾種方法 第一種 name_list = [Python, PHP, JAVA] 第二種 name_list = list([Python, PHP, JAVA]) 創(chuàng)建一個空列表 ...
摘要:全棧數(shù)據(jù)之門暫定書名是末學(xué)近年來工作技能的積累,從個月前開通公眾號寫的第一篇起,中間也不知度過了多少個寂寞的夜晚。如果此書能叫全棧數(shù)據(jù)之門具體書名還得再與出版社編輯討論才定,那么也許下一本就叫全棧數(shù)據(jù)之路。 《全棧數(shù)據(jù)之門》(暫定書名)是末學(xué)近5年來工作技能的積累,從8個月前開通公眾號寫的第一篇起,中間也不知度過了多少個寂寞的夜晚。 寫文章本來就是一個很費(fèi)力的活,況且寫書要求還得高些。...
閱讀 2371·2021-11-18 10:07
閱讀 2325·2021-09-22 15:59
閱讀 3085·2021-08-23 09:42
閱讀 2283·2019-08-30 15:44
閱讀 1198·2019-08-29 15:06
閱讀 2317·2019-08-29 13:27
閱讀 1219·2019-08-29 13:21
閱讀 1420·2019-08-29 13:13