天天看點

複習 檔案類型

1.3.python的檔案類型

1.建立一個檔案:

vim 1.py

#!/usr/bin/python  (由python的解釋器解釋)

print 'Hello World'

2.如何獲得輸出?

python 1.py

或者

chmod +x 1.py  (添加執行權限)

./1.py

3.源代碼

python的源代碼檔案以.py為擴充名,由Python程式解釋,不需要編譯

4.位元組代碼

python的源碼檔案經過編譯後生成的擴充名為.pyc的檔案

是以,以.py和.pyc為結尾的檔案都是python的腳本

*.pyc 檔案内是位元組代碼,由源碼檔案編譯後生成的,經過編譯後,.pyc不是源碼檔案了

5.編譯方法:

使用python的子產品 py_compile 來編譯

6.插入子產品:

import py_compile

經查詢,這個子產品的方法為:

py_compile.compile('***.py')

舉例:

vim 2.py

#!/usr/bin/python

py_compile.compile('./1.py')   [此處可以寫全名,表示目前目錄;或者寫絕對路徑都可以]

完成後執行

python 2.py

ls 檢視目前目錄

發現多出一個 1.pyc 的檔案

file 1.pyc   檢視檔案類型

複習 檔案類型

如圖,顯示這個檔案是“位元組編譯”檔案

這個檔案不是“文本檔案”了,變成了“二進制檔案”,打開後,顯示如圖:

複習 檔案類型

檔案 1.pyc 如何執行?

同 *.py 檔案

也是

# python 1.pyc

複習 檔案類型

7.優化代碼:

經過優化的源碼檔案,擴充名為:.pyo ,比.pyc 檔案更優化一些

# python -O 【表示優化】 -m 【調用子產品】 py_compile   1.py

執行完成會多出個1.pyo的檔案,如何執行?

# python 1.pyo

複習 檔案類型

檔案 1.pyo 也不是“文本檔案”了,打開後也是亂碼,如圖:

複習 檔案類型

1.pyo 比 1.pyc 更優化

通常我們更多的時候都寫成 源碼,假如你寫的源碼不想讓别人看,可以編譯成 .pyc 或者 .pyo 的檔案, .pyc或 .pyo的檔案是不需要 源碼(.py) 檔案存在的

1.4.python的變量

變量是計算機記憶體中一塊區域,變量可以存儲規定範圍内的值,而且值可變。

python 下變量是對一個資料的引用

變量名相當于是個标簽,通過标簽來讀記憶體中這塊資料

給變量指派相當于标簽指向了記憶體中的另外一塊區域

變量命名:

由字母、數字、下劃線組成

不能以數字開頭

不可以用關鍵字

例如:a   a_1 _a3

變量的指派:

a = 1

id(a)   id是内置函數,可以檢視a在記憶體的哪個區域

python運算符号:

指派運算符

算數運算符

關系運算符

邏輯表達式

1.5. Python的數值和字元串

整數分為正數和負數

int的範圍:

-2**31  ---  (2**31)-1

字元串是個序列,序列的操作有“索引”和“切片”

可以通過索引操作

a = 'abcde'

a[0] = a

連接配接符

a[0]+a[1] = ab

分片:

a[0:2] = ab = a[:2]

a[1:2] = b

a[1:] = bcde

a[:-1] = abcd

a[:] = abcde

步長:

a[::1] = abcde

a[::2] = ace

例:

a[-4:-2] = bc

a[-2:-4:-1] = dc  (-1代表方向步長)

1.6.元組

序列包括:字元串、清單、元組

序列兩個特點:索引操作符和切片操作符

索引操作符:可以從序列中抓取一個特定項目

切片操作符:可以擷取序列的一個切片,即一部分序列

序列的基本操作

1.len()    序列長度

2.+ 連接配接兩個序列

3.* 重複序列元素

4.in 判斷元素是否在序列中

5.max() 傳回最大值

6.min() 傳回最小值

7.cmp(x,y) 比較兩個序列是否相等(x<y傳回負數,x==y 傳回0,x>y傳回正數)

元組

元組與清單相似

元組和字元串一樣是不可變的

元組可以存儲一系列的值

元組通常用在使用者定義的函數能夠安轉的采用一組值的時候,即被使用的元組的值不會改變。

元組的操作

元組和字元串一樣屬于序列,可以索引和切片

元組值不可變

元組拆分

t = (1,2,3)

a,b,c = t

這樣

b=2

c=3

元組的兩個方法:

t.count(value) #如果value在元組裡,傳回1,否則,傳回0;

t.index(value) #這個value的值的索引,是個整數;如果元組裡面有很多重複的值

會顯示第一個值的索引。

1.7 清單

清單用[]定義

是序列的一種,是可變類型的有序的序列

清單建立(3種例子):

list1=[]

list2=list()

list3=['a',1,2,(3,),['aaa',22,'3']]

list1.append()  追加

(list1+list2) * 2 乘法

取值

切片和索引

添加

list.append()

删除

del list[0] #del 還能删除變量,被删掉的變量傳回 "沒有定義"

list.remove([list[0]])  # 如果清單内有重複元素的預設隻删除1第一個元素

修改

list[] = x

查找

var in list

插入

list.insert(1,'cccc')

排序

list.sort() #升序排序

反序排序

list.reverse() #反序排序

删除清單的元素,并傳回值

list.pop() #預設删除最後一個,如果給索引,删除後會傳回這個值

追加可疊代對象

list.extend() #從可疊代的對象裡面取元素放到清單中去

list3.extend(range(5))

list3.extend('abcdefg')

list3.extend(('aa','bb'))

1.8 字典

list1 = ['name', 'age']

list2 = ['tom', '20']

zip函數:(作用:合并清單)

zip(list1, list2) = [('name', 'tom'), ('age', '20')]

字典 { }

字典的對象是可變的,跟清單一樣,可以去改變值,可以增加删除

字典的key是不能變的

key和value是一對

value可以變,但是key不能變

dic = {}   空字典

dic = {'a':1, 1:123}

字典是無序的

len(dic) = 2   表示字典的長度,即有幾個元素

dic.keys()     列印出所有的key

dic.values()  列印出字典裡面的value

help(dic.get)

dic['a'] = 1  可以通過下标來通路

dic.get('a') = 1  正常用 .get() 通路

dic['a'] = 2  将key為‘a’的值改為 2

dic.get('a', 'linan') = 'linan'

dic.get 如果給定key的value,那麼列印給定的value

判斷字典中有沒有指定的key:

方法一:

a in dic  => True

b in dic  => False

方法二:

dic.has_key('a')   =>   True

dic.has_key('b')   =>   False

items方法:将字典變成清單,一個key和value是一個元素

dic.items()

[('a', 2), (1, 23)]

變成清單後就可以‘索引’和’切片‘了

copy方法:

dic1 = dic.copy()

dic1 就變成了和 dic 一樣的字典了

clear方法:

清除字典内的元素

pop方法:

dic.pop(1)  删除key為1的字典元素

結果 :dic = {'a' : 1}

字典就剩下一個元素了

help(dic.update)

dic.update() 将兩個字典更新為一個字典

例子:

dic1 = {'c' : 12 , 3:345}

dic.update(dic1) = {'a':1, 1:123, 'c' : 12 , 3:345 }

dict 将清單等變成字典:(工廠函數)

dict(zip(list1, list2)) = {'name': 'tom', 'age': '20'}

這樣就把清單改為字典了

同理:

dict(a = 10 ,b = 20)  =>  { 'a'=10, 'b'=20 }

fromkeys方法:

複習 檔案類型

傳回一個新的字典,沒有值,預設是None

fromkeys适合 '值' 都是一樣的情況:

複習 檔案類型

例二:

複習 檔案類型
複習 檔案類型
複習 檔案類型

通過for循環通路字典裡的key:

複習 檔案類型
複習 檔案類型

列印出key :

1   2   'a'    ('a', 'b')

同時列印出key和value:

複習 檔案類型
複習 檔案類型

改進版:

複習 檔案類型

改改進版:

複習 檔案類型

1.9 字典練習