在Linux下/home/test目錄下建立hello.py文件,內容以下:html
[root@root ~]# mkdir /home/test [root@root ~]# cd /home/test [root@root test]# cat hello.py print("Hello World!")
執行hello.py文件,獲得如下內容:python
[root@root test]# python hello.py
Hello World!
將hello.py文件改成hello.text後執行:程序員
[root@root test]# mv hello.py hello.text #<==Linux下改文件名可用mv命令 [root@root test]# ll 總用量 4 -rw-r--r-- 1 root root 22 4月 29 20:14 hello.text [root@root test]# python hello.text Hello World!
因而可知,文件後綴名對執行結果並沒有影響,但爲了規範,也爲了後期方便交接工做(若是你離職或者調離部門),強烈建議什麼語言編寫的開發腳本就用什麼樣的後綴名,如同shell腳本的.sh後綴名同樣。shell
在上述的執行過程當中,咱們明確的指出hello.py文件由python解釋器來執行的,若是想要相似於執行shell腳本同樣執行python腳本,例如. /home/test/test.sh,那麼就須要在hello.py文件的頭部指定解釋器,首先咱們來看一下shell腳本的執行:vim
[root@root test]# ls -l test.sh -rwxr--r-- 1 root root 32 4月 30 19:16 test.sh #<==擁有可執行權限 [root@root test]# cat test.sh #!/bin/bash #<==指定解釋器 echo "Hello World!" [root@root test]# ./test.sh Hello World!
接下來咱們對比上述的操做執行hello.py文件bash
[root@root test]# cat hello.py #<==Linux下編輯文件能夠用vi或vim命令 #!/usr/bin/env python #<==python解釋器已經指定 print("Hello World!") [root@root test]# ./hello.py -bash: ./hello.py: 權限不夠 #<==提示權限不夠,由於沒有給文件加相應的權限
給hello.py文件加上權限後便可執行:app
[root@root test]# ls -l hello.py -rw-r--r-- 1 root root 44 4月 30 19:25 hello.py #<==未加權限時的權限位明細 [root@root test]# chmod u+x hello.py [root@root test]# ls -l hello.py -rwxr--r-- 1 root root 44 4月 30 19:25 hello.py #<==加上權限位後多了可執行權限x [root@root test]# ./hello.py Hello World!
python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ASCII)。ide
ASCII(發音: /ˈæski/ ASS-kee,American Standard Code for Information Interchange,美國信息交換標準代碼)是基於拉丁字母的一套電腦編碼系統。它主要用於顯示現代英語,而其擴展版本EASCOO則能夠部分支持其餘西歐語言,並等同於國際標準ISO/IEC 646。函數
由於計算機只能處理數字,若是要處理文本,就必須先把文本轉換爲數字才能處理。最先的計算機在設計時採用8個比特(bit)做爲一個字節(byte),因此,一個字節能表示的最大的整數就是255(二進制11111111=十進制255),0 - 255被用來表示大小寫英文字母、數字和一些符號,這個編碼表被稱爲ASCII編碼。編碼
ASCII最多隻能用 8 位(二進制數)來表示(一個字節),即:2**8 = 256,因此,ASCII碼最多隻能表示 256 個符號。
但咱們發現ASCII碼是沒有中文編碼的,顯然在天朝是不夠用的,因而GB2312誕生了。
《信息交換用漢字編碼字符集》是由中國國家標準總局1980年發佈,1981年5月1日開始實施的一套國家標準,標準號是GB 2312-1980。
GB2312編碼適用於漢字處理、漢字通訊等系統之間的信息交換,通行於中國大陸;新加坡等地也採用此編碼。中國大陸幾乎全部的中文系統和國際化的軟件都支持GB 2312。
GB 2312標準共收錄7445個字符,包括6763個漢字和非漢字圖形字符682個,其中一級漢字3755個,二級漢字3008個;同時收錄了包括拉丁字母、希臘字母、日文平假名及片假名字母、俄語西裏爾字母在內的682個字符。
GB 2312的出現,基本知足了漢字的計算機處理須要,它所收錄的漢字已經覆蓋中國大陸99.75%的使用頻率。但對於人名、古漢語等方面出現的罕用字和繁體字,GB 2312不能處理,所以後來GBK及GB 18030漢字字符集相繼出現以解決這些問題。
GBK全稱《漢字內碼擴展規範》(GBK即「國標」、「擴展」漢語拼音的第一個字母,英文名稱:Chinese Internal Code Specification) ,中華人民共和國全國信息技術標準化技術委員會1995年12月1日製訂,國家技術監督局標準化司、電子工業部科技與質量監督司1995年12月15日聯合以技監標函1995 229號文件的形式,將它肯定爲技術規範指導性文件。這一版的GBK規範爲1.0版。
GBK 共收入 21886 個漢字和圖形符號,包括:
GBK 向下與 GB 2312 徹底兼容,向上支持 ISO 10646 國際標準,在前者向後者過渡過程當中起到的承上啓下的做用。
國家標準GB18030-2005《信息技術 中文編碼字符集》是我國繼GB2312-1980和GB13000.1-1993以後最重要的漢字編碼標準,是我國計算機系統必須遵循的基礎性標準之一。
GB18030有兩個版本:GB18030-2000和GB18030-2005。GB18030-2000是GBK的取代版本,它的主要特色是在GBK基礎上增長了CJK統一漢字擴充A的漢字。GB18030-2005的主要特色是在GB18030-2000基礎上增長了CJK統一漢字擴充B的漢字。
該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。如今的PC平臺必須支持GB18030,對嵌入式產品暫不做要求。因此手機、MP3通常只支持GB2312。
從ASCII、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中老是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文能夠統一地處理。區分中文編碼的方法是高字節的最高位不爲0。按照程序員的稱呼,GB23十二、GBK到GB18030都屬於雙字節字符集 (DBCS)。
Unicode(統一碼、萬國碼、單一碼)是計算機科學領域裏的一項業界標準,包括字符集、編碼方案等。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,以知足跨語言、跨平臺進行文本轉換、處理的要求。1990年開始研發,1994年正式公佈。
Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,一般用兩個字節表示一個字符,這樣理論上一共最多能夠表示216(即65536)個字符。基本知足各類語言的使用。原有的英文編碼從單字節變成雙字節,只須要把高字節所有填爲0就能夠。
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字符編碼,又稱萬國碼。由Ken Thompson於1992年建立。如今已經標準化爲RFC 3629。UTF-8用1到6個字節編碼Unicode字符。用在網頁上能夠統一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
若是UNICODE字符由2個字節表示,則編碼成UTF-8極可能須要3個字節。而若是UNICODE字符由4個字節表示,則編碼成UTF-8可能須要6個字節。用4個或6個字節去編碼一個UNICODE字符可能太多了,但不多會遇到那樣的UNICODE字符。
實際表示ASCII字符的Unicode字符,將會編碼成1個字節,而且UTF-8表示與ASCII字符表示是同樣的。
注:想更深刻了解ASCII,GB2312,GBK,Unicode,UTF-8,你們能夠參考這篇文章:https://blog.csdn.net/softwarenb/article/details/51994943
由於Python的誕生比Unicode標準發佈的時間還要早,因此最先的Python只支持ASCII編碼,普通的字符串'ABC'在Python內部都是ASCII編碼的,所以,若是執行以下代碼的話,會出現報錯:
[root@root test]# ls -l hello.py -rwxr--r-- 1 root root 39 5月 1 01:50 hello.py [root@root test]# cat hello.py #!/usr/bin/env python print("你好!") [root@root test]# ./hello.py File "./hello.py", line 2 SyntaxError: Non-ASCII character '\xe4' in file ./hello.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
改正:咱們應該告訴python解釋器,用什麼編碼來執行源代碼,即:
[root@root test]# ls -l hello.py -rwxr--r-- 1 root root 61 5月 1 01:52 hello.py [root@root test]# cat hello.py #!/usr/bin/env python #-*- coding:utf-8 -*- print("你好!") [root@root test]# ./hello.py 你好!
提示:上述操做環境是在2.6版本的基礎上進行的,若是在3.0版本以上呢?
[root@root test]# python -V #<==上述操做環境 Python 2.6.6
#!/usr/bin/env python print("你好!") /Library/Frameworks/Python.framework/Versions/3.6/bin/python3.6 /Users/xxxxxxx/PycharmProjects/all_study/day02/test.py 你好! #<==經過上述可見,Python3.0以上版本已經友好的支持中文了 Process finished with exit code 0
變量來源於數學,是計算機語言中能儲存計算結果或能表示值抽象概念。變量能夠經過變量名訪問。在指令式語言中,變量一般是可變的;但在純函數式語言(如Haskell)中,變量多是不可變(immutable)的。
變量存儲在內存中的值。這就意味着在建立變量時會在內存中開闢一個空間。
基於變量的數據類型,解釋器會分配指定內存,並決定什麼數據能夠被存儲在內存中。
所以,變量能夠指定不一樣的數據類型,這些變量能夠存儲整數,小數或字符。
[root@root test]# cat hello.py #!/usr/bin/env python #-*- coding:utf-8 -*- name = 'zhang' print(name)
在上述的代碼中,咱們聲明瞭一個變量,變量名爲name,變量name的值爲zhang,"="表示賦值的意思。
提示:在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']
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/5/1 testname = input("Please input your name:") if testname == 'zhang': testage = input("Please input your age:") if testage == '22': print("Yes,you are right!") else: print("Sorry,you are wrong!") else: print("Try again!")
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/5/1 count = 5 if count == 1: pass elif count == 2: pass elif count == 3: pass elif count == 4: pass else: print("haha")
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/5/1 name=input("Please input your name:") age=input("Please input your age:") if name == "zhang" or age == "22": print("YES") else: print("----END----")
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/5/1 count = 1 while count < 10: print(count) count = count + 1
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/4/28 count = 1 while count < 10: if count == 7: pass else: print(count) count = count + 1
PS: pass代指空代碼,無心義,僅僅用於表示代碼塊。
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/4/28 SUM = 0 a = 1 while a < 101: SUM = SUM + a print(SUM) a = a + 1
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/4/28 a = 1 while a < 101: s = a%2 if s == 1: print(a) else: pass a= a + 1
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/4/28 a = 1 while a < 101: s = a%2 if s == 0: print(a) else: pass a = a + 1
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/4/28 a = 1 SUM = 0 while a < 100: surplus = a % 2 if surplus == 0: SUM = SUM - a else: SUM = SUM + a a = a + 1 print(SUM)
#!/usr/bin/env python # _*_ coding:utf8 _*_ # Date: 2018/4/28 time = 1 while time < 4: name=input(">>>Please input your name:") passwd=input(">>>Please input your passwd:") if name == 'zhang' and passwd == '12345': print("Yes,you are right!") break else: print(">>>Try again.") time = time + 1 continue