復習 文件類型
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
import py_compile
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
這樣
a = 1
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 = {'a':1, 1:123}
dic.pop(1) 刪除key為1的字典元素
結果 :dic = {'a' : 1}
字典就剩下一個元素了
help(dic.update)
dic.update() 將兩個字典更新為一個字典
例子:
dic1 = {'c' : 12 , 3:345}
dic = {'a':1, 1:123}
dic.update(dic1) = {'a':1, 1:123, 'c' : 12 , 3:345 }
dict 將列表等變成字典:(工廠函數)
list1 = ['name', 'age']
list2 = ['tom', '20']
zip(list1, list2) = [('name', 'tom'), ('age', '20')]
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 字典練習
#!/usr/bin/python info = {} name = raw_input('please input name:') age = raw_input('please input age:') gender = raw_input('please input M/F:') info['name'] = name info['age'] = age info['gender'] = gender for k,v in info.items(): print "%s: %s" % (k,v) print 'main end'
復習 文件類型