python 11期 第一天

計算機語言排行:

https://www.tiobe.com/tiobe-index/


一、python內部代碼執行過程|
python文件,以.py結尾,首先指定解釋器,有中文時候,要在第二行指定字符集.


模塊:

內置模塊

類庫

自定義模塊


wKioL1Ze_LKyF6DZAACfKUmTOnA371.png


二、解釋器

#!/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.

wKiom1ZjrayCSHOsAAFRpQTK7ac905.png


四、模塊

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()


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章