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 字典練習
<code>#!/usr/bin/python</code>
<code>info </code><code>=</code> <code>{}</code>
<code>name </code><code>=</code> <code>raw_input</code><code>(</code><code>'please input name:'</code><code>)</code>
<code>age </code><code>=</code> <code>raw_input</code><code>(</code><code>'please input age:'</code><code>)</code>
<code>gender </code><code>=</code> <code>raw_input</code><code>(</code><code>'please input M/F:'</code><code>)</code>
<code>info[</code><code>'name'</code><code>] </code><code>=</code> <code>name</code>
<code>info[</code><code>'age'</code><code>] </code><code>=</code> <code>age</code>
<code>info[</code><code>'gender'</code><code>] </code><code>=</code> <code>gender</code>
<code>for</code> <code>k,v </code><code>in</code> <code>info.items():</code>
<code> </code><code>print</code> <code>"%s: %s"</code> <code>%</code> <code>(k,v)</code>
<code>print</code> <code>'main end'</code>
<code></code>
本文轉自 聽丶飛鳥說 51CTO部落格,原文連結:http://blog.51cto.com/286577399/2045587