計算機語言排行:
https://www.tiobe.com/tiobe-index/
一、python內部代碼執行過程|
python文件,以.py結尾,首先指定解釋器,有中文時候,要在第二行指定字符集.
模塊:
內置模塊
類庫
自定義模塊
二、解釋器
#!/usr/bin/env python
C語言: 代碼編譯得到 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工作
python:代碼編譯得到 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行
Python的運行速度相較與C,絕逼是慢了
三、編碼
python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每個字符設定了統一併且唯一的二進制編碼,規定現有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536
注:此處說的的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
unicode是萬國碼,要經過encode轉換成編碼utf-8或者gbk
uft-8和gbk需要解碼decode,轉換成unicode.
四、模塊
Python有大量的模塊,從而使得開發Python程序非常簡潔。類庫有包括三中:
Python內部提供的模塊
業內開源的模塊
程序員自己開發的模塊
執行Python代碼時,如果導入了其他的 .py 文件,那麼,執行過程中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯之後產生的字節碼。
ps:代碼經過編譯可以產生字節碼;字節碼通過反編譯也可以得到代碼。
五、變量的賦值
name1 = "wang"
name2 = "liu"
以上賦值會在內存中各開闢一塊內存空間
name1 = "zhang"
name2 = name1
以上賦值會在內存中只開闢一塊內存空間
a=4
b=9
a,b=b,a
print a,b
交差賦值
六、輸入
name = raw_input("請輸入用戶名:")
raw_input()函數輸入的是字符串類型
input()函數輸入的是整數類型
輸入密碼時,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
# 將用戶輸入的內容賦值給 name 變量
pwd = getpass.getpass("請輸入密碼:")
七、流程控制和縮進
流程控制語句有:
if判斷
for循環:
包括範圍循環和循環一個序列。
while條件循環:
可以設置一個條件,比如True,爲死循環。
或者a爲一個變量,當a大於一個數值時結束循環。
縮進:每一個流程控制語句都是靠縮進來形成語句塊。因此它沒有結束符,不需要大括號{}
八、基本數據類型
1、數字
包括整形,int float complex
2、布爾值
真或假
1 或 0
布爾類型中,以下都會被識別爲false:
False None 0 '' () [] {}
0和空字符,空元組,空列表,空字典,都會被識別爲False
3、字符串
字符串拼接可以用兩種辦法:
第一種是用+號連接,比如
name = 'LiFeng'
age = 19
print "I am is" + name +", "+"my age is" + age
如果要把字符串和變量連起來需要用+號,但是每用一次+號,就需要在內存中重新開闢一塊空間,因此非常浪費資源,一般不推薦使用此種方法
第二種是字符串格式化:
格式化字符串也有兩種方法,第1種是使用%s 或 %d
print "your information:"
name = raw_input('NAME: ')
age = int(raw_input('Age: '))
sex = raw_input('Sex: ')
job = raw_input('Job: ')
print '--------------------------'
print type(age)
print '''\tName: %s
\tAge: %d
\tSex: %s
\tJob: %s ''' % (name,age,sex,job)
提示:因爲上面的age變量被int()引用成了數字,因此下面可以用age可以用%d來調用,如果sex或job來用%d調用就會報錯,因爲它們不是數字。
第2種:
還可以使用索引來格式化字符串,如:
name = "I am is {0}, age is {1}"
print name.format('Bright',24)
字符串常用功能:
移除空白 split()
分割
長度 len()
索引 index()
切片 [:]
4、列表
創建列表:
name_list = ['alex', 'seven', 'eric']
或
name_list = list(['alex', 'seven', 'eric'])
基本操作:
索引
切片
追加
刪除
長度
切片
循環
包含
5、元祖
創建元祖:
ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
基本操作:
索引
切片
循環
長度
包含
6、字典(無序)
創建字典:
person = {"name": "mr.wu", 'age': 18}
或
person = dict({"name": "mr.wu", 'age': 18})
常用操作:
索引
新增
刪除
鍵、值、鍵值對
循環
長度
PS:循環,range,continue 和 break
九、運算
Python算術運算符
運算符 描述 實例
+ 加 - 兩個對象相加 a + b 輸出結果 30
- 減 - 得到負數或是一個數減去另一個數 a - b 輸出結果 -10
* 乘 - 兩個數相乘或是返回一個被重複若干次的字符串 a * b 輸出結果 200
/ 除 - x除以y b / a 輸出結果 2
% 取模 - 返回除法的餘數 b % a 輸出結果 0
** 冪 - 返回x的y次冪 a**b 爲10的20次方, 輸出結果 100000000000000000000
// 取整除 - 返回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0
Python比較運算符
運算符 描述 實例
== 等於 - 比較對象是否相等 (a == b) 返回 False。
!= 不等於 - 比較兩個對象是否不相等 (a != b) 返回 true.
<> 不等於 - 比較兩個對象是否不相等 (a <> b) 返回 true。這個運算符類似 != 。
> 大於 - 返回x是否大於y (a > b) 返回 False。
< 小於 - 返回x是否小於y。所有比較運算符返回1表示真,返回0表示假。這分別與特殊的變量True和False等價。注意,這些變量名的大寫。 (a < b) 返回 true。
>= 大於等於 - 返回x是否大於等於y。 (a >= b) 返回 False。
<= 小於等於 - 返回x是否小於等於y。 (a <= b) 返回 true。
Python賦值運算符
運算符 描述 實例
= 簡單的賦值運算符 c = a + b 將 a + b 的運算結果賦值爲 c
+= 加法賦值運算符 c += a 等效於 c = c + a
-= 減法賦值運算符 c -= a 等效於 c = c - a
*= 乘法賦值運算符 c *= a 等效於 c = c * a
/= 除法賦值運算符 c /= a 等效於 c = c / a
%= 取模賦值運算符 c %= a 等效於 c = c % a
**= 冪賦值運算符 c **= a 等效於 c = c ** a
//= 取整除賦值運算符 c //= a 等效於 c = c // a
Python邏輯運算符
運算符 描述 實例
and 布爾"與" - 如果x爲False,x and y返回False,否則它返回y的計算值。 (a and b) 返回 true。
or 布爾"或" - 如果x是True,它返回True,否則它返回y的計算值。 (a or b) 返回 true。
not 布爾"非" - 如果x爲True,返回False。如果x爲False,它返回True。 not(a and b) 返回 false。
Python位運算符
運算符 描述 實例
& 按位與運算符 (a & b) 輸出結果 12 ,二進制解釋: 0000 1100
| 按位或運算符 (a | b) 輸出結果 61 ,二進制解釋: 0011 1101
^ 按位異或運算符 (a ^ b) 輸出結果 49 ,二進制解釋: 0011 0001
~ 按位取反運算符 (~a ) 輸出結果 -61 ,二進制解釋: 1100 0011, 在一個有符號二進制數的補碼形式。
<< 左移動運算符 a << 2 輸出結果 240 ,二進制解釋: 1111 0000
>> 右移動運算符 a >> 2 輸出結果 15 ,二進制解釋: 0000 1111
Python成員運算符
運算符 描述 實例
in 如果在指定的序列中找到值返回True,否則返回False。 x 在 y序列中 , 如果x在y序列中返回True。
not in 如果在指定的序列中沒有找到值返回True,否則返回False。 x 不在 y序列中 , 如果x不在y序列中返回True。
Python身份運算符
運算符 描述 實例
is is是判斷兩個標識符是不是引用自一個對象 x is y, 如果 id(x) 等於 id(y) , is 返回結果 1
is not is not是判斷兩個標識符是不是引用自不同對象 x is not y, 如果 id(x) 不等於 id(y). is not 返回結果 1
十、 文本的基本操作
打開文件:
file_obj = file("文件路徑","模式")
打開文件的模式有:
r,以只讀方式打開文件
w,打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a,打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
w+,打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
讀取文件的內容:
# 一次性加載所有內容到內存
obj.read()
# 一次性加載所有內容到內存,並根據行分割成字符串
obj.readlines()
# 每次僅讀取一行數據
for line in obj:
print line
寫文件的內容:
obj.write('內容')
關閉文件句柄:
obj.close()