Alex博客: https://www.cnblogs.com/alex3714/articles/5465198.htmlhtml
看完Alex零基礎學習python後,根據Alex寫的文章筆記,也有本身的想法和建議!!!java
python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。 python
2019最新的TIOBE排行榜,Python趕超PHP佔據第三, Python崇尚優美、清晰、簡單,是一個優秀並普遍使用的語言。c++
由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!程序員
Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。web
目前Python主要應用領域:算法
Python在一些公司的應用: shell
python是一門怎樣的語言?編程
編程語言主要從如下幾個角度爲進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每一個分類表明什麼意思呢,這邊就一一不介紹了,主要了解一python是哪種語言。windows
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;
而解釋器則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的.
這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)
編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。
解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
python的優缺點:
先看優勢
再看缺點:
python的解釋器
當咱們編寫Python代碼時,咱們獲得的是一個包含Python代碼的以.py
爲擴展名的文本文件。要運行代碼,就須要Python解釋器去執行.py
文件。
因爲整個Python語言從規範到解釋器都是開源的,因此理論上,只要水平夠高,任何人均可以編寫Python解釋器來執行Python代碼(固然難度很大)。事實上,確實存在多種Python解釋器。
當咱們從Python官方網站下載並安裝好Python 2.7後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python
就是啓動CPython解釋器。
CPython是使用最廣的Python解釋器。教程的全部代碼也都在CPython下執行。
IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。比如不少國產瀏覽器雖然外觀不一樣,但內核其實都是調用了IE。
CPython用>>>
做爲提示符,而IPython用In [
序號
]:
做爲提示符。
PyPy是另外一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),因此能夠顯著提升Python代碼的執行速度。
絕大部分Python代碼均可以在PyPy下運行,可是PyPy和CPython有一些是不一樣的,這就致使相同的Python代碼在兩種解釋器下執行可能會有不一樣的結果。若是你的代碼要放到PyPy下執行,就須要瞭解PyPy和CPython的不一樣點。
Jython是運行在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節碼執行。
IronPython和Jython相似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,能夠直接把Python代碼編譯成.Net的字節碼。
小結:
Python的解釋器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是經過網絡調用來交互,確保各程序之間的獨立性。
咱們單純開發python,通常都用pycharm。
目前學習python都是用python3
PRINT IS A FUNCTION
The statement has been replaced with a print() function, with keyword arguments to replace most of the special syntax of the old statement (PEP 3105). Examples:
Old: print "The answer is", 2*2 New: print("The answer is", 2*2) Old: print x, # Trailing comma suppresses newline New: print(x, end=" ") # Appends a space instead of a newline Old: print # Prints a newline New: print() # You must call the function! Old: print >>sys.stderr, "fatal error" New: print("fatal error", file=sys.stderr) Old: print (x, y) # prints repr((x, y)) New: print((x, y)) # Not the same as print(x, y)!
1
、下載安裝包
https:
/
/
www.python.org
/
downloads
/
2
、安裝
默認安裝路徑:C:\python27
3
、配置環境變量
【右鍵計算機】
-
-
》【屬性】
-
-
》【高級系統設置】
-
-
》【高級】
-
-
》【環境變量】
-
-
》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】
-
-
> 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python27,切記前面有分號
咱們無論學習什麼語言,第一行永遠是hello world!
1 #!/usr/bin/env python 2 3 print ("hello,world")
聲明變量
1 #_*_coding:utf-8_*_ 2 3 name = "Alex Li"
變量定義的規則:
變量的賦值
1 name = "Alex Li" 2 3 name2 = name 4 print(name,name2) 5 6 name = "Jack" 7 8 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碼沒法表示中文
1 #!/usr/bin/env python 2 3 print "你好,世界"
改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 print "你好,世界"
當行注視:# 被註釋內容
多行註釋:""" 被註釋內容 """
1 name = input('name:') #python3.x中 2 #name = raw_input('name:') #python2.x中 3 #interger轉換 4 age =int(input('age:')) 5 #print(type(age)) 6 job = input('job:') 7 salary = input('salary:') 8 9 10 info1 =''' 11 ---------info1 of %s----------- 12 name:%s 13 age:%s 14 job:%s 15 salary:%s 16 ''' %(name,name,age,job,salary) 17 18 # %s 字符串 19 # %f 浮點 20 # %d 整數 21 print(info1) 22 23 """ 24 #不建議使用拼接,除非萬不得已!!! 25 info2 =''' 26 ---------info2 of '''+ name +'''----------- 27 name:'''+ name +''' 28 age:'''+ age +''' 29 job:'''+ job +''' 30 salary:'''+ salary +''' 31 ''' 32 print(info2) 33 """ 34 35 info3 =''' 36 ---------info3 of {_name}----------- 37 name:{_name} 38 age:{_age} 39 job:{_job} 40 salary:{_salary} 41 ''' .format(_name=name,_age=age,_job=job,_salary=salary) 42 print(info3) 43 44 info4 =''' 45 ---------info4 of {0}----------- 46 name:{0} 47 age:{1} 48 job:{2} 49 salary:{3} 50 ''' .format(name,age,job,salary) 51 print(info4)
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 5 #name = raw_input("What is your name?") #only on python 2.x 6 name = input("What is your name?") 7 print("Hello " + name )
輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import getpass 5 6 # 將用戶輸入的內容賦值給 name 變量 7 pwd = getpass.getpass("請輸入密碼:") 8 9 # 打印輸入的內容 10 print(pwd)
Python的強大之處在於他有很是豐富和強大的標準庫和第三方庫,幾乎你想實現的任何功能都有相應的Python庫支持,之後的課程中會深刻講解經常使用到的各類庫,如今,咱們先來象徵性的學2個簡單的。
sys
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import sys 5 6 print(sys.argv) 7 8 9 #輸出 10 $ python test.py helo world 11 ['test.py', 'helo', 'world'] #把執行腳本時傳遞的參數獲取到了
os
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 import os 5 6 os.system("df -h") #調用系統命令
1. Python是一門解釋型語言?
我初學Python時,聽到的關於Python的第一句話就是,Python是一門解釋性語言,我就這樣一直相信下去,直到發現了*.pyc文件的存在。若是是解釋型語言,那麼生成的*.pyc文件是什麼呢?c應該是compiled的縮寫纔對啊!
爲了防止其餘學習Python的人也被這句話誤解,那麼咱們就在文中來澄清下這個問題,而且把一些基礎概念給理清。
2. Python究竟是什麼
其實Python和Java/C#同樣,也是一門基於虛擬機的語言,咱們先來從表面上簡單地瞭解一下Python程序的運行過程吧。
當咱們在命令行中輸入python hello.py時,實際上是激活了Python的「解釋器」,告訴「解釋器」:你要開始工做了。但是在「解釋」以前,其實執行的第一項工做和Java同樣,是編譯。
熟悉Java的同窗能夠想一下咱們在命令行中如何執行一個Java的程序:
javac hello.java
java hello
只是咱們在用Eclipse之類的IDE時,將這兩部給融合成了一部而已。其實Python也同樣,當咱們執行python hello.py時,他也同樣執行了這麼一個過程,因此咱們應該這樣來描述Python,Python是一門先編譯後解釋的語言。
3. 簡述Python的運行過程
在說這個問題以前,咱們先來講兩個概念,PyCodeObject和pyc文件。
咱們在硬盤上看到的pyc天然沒必要多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。咱們先簡單知道就能夠了,繼續向下看。
當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。
當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,若是找到,則直接載入,不然就重複上面的過程。
因此咱們應該這樣來定位PyCodeObject和pyc文件,咱們說pyc文件實際上是PyCodeObject的一種持久化保存方式。
2 是一個整數的例子。
長整數 不過是大一些的整數。
3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是複數的例子,其中-5,4爲實數,j爲虛數,數學中表示覆數是什麼?。
int(整型)
"hello world"
1 name = "alex" 2 print ("i am %s ") % name 3 4 #輸出: i am alex
PS: 字符串是 %s;整數 %d;浮點數%f
建立列表:
1 name_list = ['alex', 'seven', 'eric'] 2 或 3 name_list = list(['alex', 'seven', 'eric'])
基本操做:
1 ages = (11, 22, 33, 44, 55) 2 或 3 ages = tuple((11, 22, 33, 44, 55))
1 person = {"name": "mr.wu", 'age': 18} 2 或 3 person = dict({"name": "mr.wu", 'age': 18})
經常使用操做:
算數運算:
比較運算:
賦值運算:
邏輯運算:
成員運算:
身份運算:
位運算:
1 #!/usr/bin/python 2 3 a = 60 # 60 = 0011 1100 4 b = 13 # 13 = 0000 1101 5 c = 0 6 7 c = a & b; # 12 = 0000 1100 8 print "Line 1 - Value of c is ", c 9 10 c = a | b; # 61 = 0011 1101 11 print "Line 2 - Value of c is ", c 12 13 c = a ^ b; # 49 = 0011 0001 #相同爲0,不一樣爲1 14 print "Line 3 - Value of c is ", c 15 16 c = ~a; # -61 = 1100 0011 17 print "Line 4 - Value of c is ", c 18 19 c = a << 2; # 240 = 1111 0000 20 print "Line 5 - Value of c is ", c 21 22 c = a >> 2; # 15 = 0000 1111 23 print "Line 6 - Value of c is ", c
*按位取反運算規則(按位取反再加1) 詳解http://blog.csdn.net/wenxinwukui234/article/details/42119265
運算符優先級:
更多運算點擊:https://www.runoob.com/python/python-operators.html
場景1、用戶登錄驗證
1 # 提示輸入用戶名和密碼 2 3 # 驗證用戶名和密碼 4 # 若是錯誤,則輸出用戶名或密碼錯誤 5 # 若是成功,則輸出 歡迎,XXX! 6 7 8 #!/usr/bin/env python 9 # -*- coding: encoding -*- 10 11 import getpass 12 13 14 name = raw_input('請輸入用戶名:') 15 pwd = getpass.getpass('請輸入密碼:') 16 17 if name == "alex" and pwd == "cmd": 18 print("歡迎,alex!") 19 else: 20 print("用戶名和密碼錯誤")
場景2、猜年齡遊戲
在程序裏設定好你的年齡,而後啓動程序讓用戶猜想,用戶輸入後,根據他的輸入提示用戶輸入的是否正確,若是錯誤,提示是猜大了仍是小了
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 5 my_age = 28 6 7 user_input = int(input("input your guess num:")) 8 9 if user_input == my_age: 10 print("Congratulations, you got it !") 11 elif user_input < my_age: 12 print("Oops,think bigger!") 13 else: 14 print("think smaller!")
最簡單的循環10次
1 #_*_coding:utf-8_*_ 2 __author__ = 'Alex Li' 3 4 5 for i in range(10): 6 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 for i in range(10): 2 if i<5: 3 continue #不往下走了,直接進入下一次loop 4 print("loop:", i )
需求二:仍是上面的程序,可是遇到大於5的循環次數就不走了,直接退出
1 for i in range(10): 2 if i>5: 3 break #不往下走了,直接跳出整個loop 4 print("loop:", i )
有一種循環叫死循環,一經觸發,就運行個天荒地老、海枯石爛。
海枯石爛代碼
1 count = 0 2 while True: 3 print("你是風兒我是沙,纏纏綿綿到天涯...",count) 4 count +=1
其實除了時間,沒有什麼是永恆的,死loop仍是少寫爲好
上面的代碼循環100次就退出吧
1 count = 0 2 while True: 3 print("你是風兒我是沙,纏纏綿綿到天涯...",count) 4 count +=1 5 if count == 100: 6 print("去你媽的風和沙,大家這些脫了褲子是人,穿上褲子是鬼的臭男人..") 7 break
回到上面for 循環的例子,如何實現讓用戶不斷的猜年齡,但只給最多3次機會,再猜不對就退出程序。
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 4 5 my_age = 28 6 7 count = 0 8 while count < 3: 9 user_input = int(input("input your guess num:")) 10 11 if user_input == my_age: 12 print("Congratulations, you got it !") 13 break 14 elif user_input < my_age: 15 print("Oops,think bigger!") 16 else: 17 print("think smaller!") 18 count += 1 #每次loop 計數器+1 19 else: 20 print("猜這麼屢次都不對,你個笨蛋.")
做業一:編寫登錄接口