這一篇我們簡單的介紹一下Python學習的基本知識--》Python文件是如何運行、Python文件打開通常會有兩行注釋,那么這兩行注釋是什么;上篇提到的字節碼,這些字節碼都存儲在哪?即pyc文件;還有基本知識-->變量、input、if條件語句、while循環語句、for循環等
一、運行:
在D:\python_test\ 目錄下創建hello.py文件,其內容如下:
1 #! /user/bin/local/ python
2 # -*- coding:utf-8 -*-
3
4 print("hello world")
在Windows下運行Python文件,通常有兩種方式:
一、打開終端---> C:\Program Files\Python36\python3.exe D:\python_test\hello.py,即輸入Python3的運行路徑+文件路徑,即可運行python文件。
二、運行Python解釋器 -->即打開C:\Program Files\Python36\python.exe執行python文件。
而在Python內部執行過程如下圖:
二、文件行
當我們打開Python文件時,通常會在文件的頭部會有 #!/user/bin/local python,例:
#! /user/bin/local python
print(" hello world")
這意味着在Linux下執行時,打開文件時先讀取首行,並通過其找到python解釋器的路徑,以此來執行該文件。若直接在Linux終端輸入 :
>>> python hello.py
則加不加該句則無所謂。
而針對使用以下方法打開python文件時,這時候寫上Python解釋器執行路徑是非常有必要的:
>>> ./hello.py
即直接執行該文件,但打開是需注意文件的權限,若其他用戶無法打開該文件,通過該命令--> chmod o+x hello.py來修改文件執行。
三、編碼
當我們打開python文件,除了會寫明python解釋器的執行路徑,還通常會表明讀取該文件是以何種編碼執行:
# -*- coding:utf-8 -*-
print("hello world")
即表明該文件以utf-8的編碼方式進行編碼的,而在Python2中,默認是以ASCII碼的編碼方式進行編碼的,故需加上這句來告訴Python解釋器是以utf-8的編碼方式進行編碼的。
而在Python3中,文件的編碼方式默認為utf-8編碼方式。故加不加這句都無所謂。
常見的編碼方式有以下幾種:
ASCII碼:ASCII(American Standard Code for Information Interchange,美國標准信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個字節),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個符號。
以下為ASCII碼表:
需要注意的是:大寫的英文字母即 A~Z--->二進制轉十進制后為 65~90。
小寫的英文字母即 a~z--->二進制轉十進制后為 97~122.
GBK編碼 -->GBK編碼為GB2312編碼的擴展,GBK全名為漢字內碼擴展規范,英文名Chinese Internal Code Specification。K 即是“擴展”所對應的漢語拼音(KuoZhan)中“擴”字的聲母。
它規定一個中文為兩個字節。
Unicode編碼-->Unicode-->萬國碼,即當許多國家開始使用計算機,無論是中國的GBK還是日本的JIS等都無法同時進行編碼,容易出現亂碼等問題,例如想用八國語言
來寫一篇文章,這樣無論是GBK還是JIS都無法實現,故發明了Unicode,它包含了各種國家的編碼方式,它規定一個字符用兩個或者兩個以上的字節來表示。
utf-8編碼-->它是Unicode編碼的壓縮和優化,由於Unicode規定一個字符用兩個或者兩個以上的字節表示,故以前美國人使用ASCII碼的時候,一個英文用一個字節來表示,因此浪費了許多內存空間,故由此便
出現了utf-8,它規定一個英文用一個字節表示,一個中文用三個字節表示。
等等。。
四、注釋
當行注釋---> #
多行注釋 --> ''' ''' 或者 """ """,注也可使用多行注釋來代表多行字符串。例如
#這是當行注釋
''' 這代表多行注釋 第一句python代碼---》hello world
''' info =''' name ='Little_five' age ='22' ''
五、 pyc 文件
執行Python代碼時,如果導入了其他的 .py 文件,那么,執行過程中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯之后產生的字節碼。
記得我們上篇介紹C語言和Python、以及Java的區別時提到:
C語言為編譯型語言--》代碼編譯得到機器碼,機器碼在CPU上直接執行。
Python為編譯型還是解釋型並不明確,姑且為解釋型。---》代碼編譯得到字節碼,再通過虛擬機執行字節碼轉換成機器碼,最后由CPU執行。
而這里所說的字節碼便便被存儲在pyc文件內。
ps:代碼經過編譯可以產生字節碼;字節碼通過反編譯也可以得到代碼。
六、變量
聲明變量:變量即為值可以變化的量,由於值存儲在內存中,故需要取出該值則需要一個指針,指向該內存地址能夠取出該內存中的值,而這個指針就是變量名。
1 #! /user/bin/local python
2 #-*- coding:utf-8 -*-
3
4 name = 'Little-five
上述代碼聲明了一個變量,變量名為: name,變量name的值為:"Little-five"
變量的作用:昵稱,其代指內存里某個地址中保存的內容
聲明變量名的規則:
1、變量只能使用數字、字母、下划線‘_’
2、數字不能作為變量名的開頭
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'
4、同時需注意的是盡量不使用常用的類名、模塊名等作為變量名
#!/usr/bin/local python # -*- coding: utf-8 -*-
name ="little_five" _name ='xiaowu'
七、輸入
input--->將用戶輸入的值變為字符串,並且可以將其賦值給某個變量名。例如:
#!/usr/bin/env python # -*- coding: utf-8 -*-
name = input("please enter your name--->:") print(name)
八、if條件語句:
1、if ...else...
假設我們要創建一個簡單的用戶登入操作,可以讓用戶輸入用戶名和密碼,若用戶名和密碼都正常,則登入成功,否則,登入失敗。
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 username ='little-five'
5 password ='12345'
6 #讓用戶輸入用戶名和密碼
7 user = input("pelase enter your username -->:") 8 passwd = input("please enter your password-->") 9 #如用戶名和密碼正確
10 if username ==user and password == passwd: #條件成立
11 print("welcome...") 12 else: #條件不成立
13 print("sorry,error username or password")
即 if 條件成立,執行 if 內的命令;否則條件不成立,則執行else內的命令。
2、if ... elif ...elif...else..
假設我們創建一個門票收取機制,即年齡小於5五歲的兒童免費和年齡大於60歲的老人可以打折,而其他的正常票價。如:
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 age = input("enter your age-->:") 5
6 if age<5: 7 price =0 8 elif age <18: 9 price =5
10 elif age <60: 11 price =10
12 else: 13 price =5
14 print("You admission cost is -->",price)
即 當出現並非兩種情形是,if ..else..無法解決問題。故對於這種多種情況時我們可以使用 if ..elif .. eilf ......else..來應對。
當然if的用法不止這兩種,還可以if ..if ...、if...elif...elif..等等這些,但是最終用法都與上述兩種類似,就不一一列舉了。
九、while循環
一、while循環的用法:
例如計算1-5的平法,可以使用while 循環:
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 count =1
5 #當條件成立時則執行while下的循環體
6 while count <6: 7 res = count**2
8 count +=1
9 print (res) 10 #當條件不成立時,則執行else下的命令行
11 else: 12 print("count <1 or count >5")
二、break --> 終止該循環的所有循環,即跳出該循環去執行循環外的下一條命令
例如,我們需要讓用戶輸入並打印用戶輸入的信息,當用戶輸入q可退出:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*-
3
4 message =''
5 while True: 6 #讓用戶不停的輸入要發送的信息,直到輸入q退出 7 mes = input("please input what you want tosend ,enter "q" to end the program."
8 if mes =="q": 9 break #終止該循環 10 message += mes 11 print(message)
三、continue -->終止該循環的當前循環,即跳出本次循環去執行下一次循環,跳至下一次循環的while判斷
例如:我們需要打印1--9,除了7,這樣我們就可以使用到continue了:
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*-
3
4 count = 1
5 while count <= 10: 6 #當count等於7的時候,跳出本次循環。即循環內continue以下的命令都不執行 7 if count == 7: 8 continue
9 print(count) 10 count += 1
十、for循環
for循環--->通常可以用來遍歷各種可迭代對象,例如:字符串str、列表list、元組tuple、字典dict等等
#!/usr/bin/env python # -*- coding: utf-8 -*- name =["James",Mike","liudehua","gutianle" for item in name: print(item
當然,for循環還可以用於匿名函數,這里不再介紹。