Python知識總結
一、python簡介
1、Python簡介
Python是一種解釋型、互動式、物件導向、是初學者的語言。
2、python特點
①易於學習
②易於閱讀
③易於維護
④一個廣泛的標準庫
⑤互動模式
⑥攜帶型
⑦可擴充
⑧資料庫
⑨GUI編程
⑩可擴充性
3、python支援tab補全功能:
>>> import readline,rlcompleter
>>> readline.parse_and_bind('tab: complete')
可以將上面兩句寫入一個py檔案,直接import即可
ipython要想儲存命令曆史,必須安裝sqlite-devel
4、python安裝
#tar -jxvf Python-3.4.3.tar.bz2
#cd Python3.4.3
#./configure [--PRefix=/usr/local/python3]
#make && make install
注意:①python為系統依賴包,只能更新,不能刪除,而且yum的版本必須 和python配套,升級python之後,必須給yum指定使用低版本的。相應操作如下:
#mv /usr/bin/python /usr/bin/python-2.6.bak 備份
#ln -s /usr/local/bin/python3.4 /usr/bin/python 建立軟串連
#python –V 執行版本掃描
②修改yum設定檔,使其正常工作
#vim /usr/bin/yum
將其中的/usr/bin/python修改為/usr/bin/python2.6
③如果上述設定完畢還有報錯,記得修改環境變數
#vim /etc/profile
5、python運行指令碼
5.1、執行方式
#python
5.2、注意事項:
①在python3.0以上版本中,print變成了函數。所以必須使用print()格式執行,而以前版本不用括弧
>>> print('hello man')
②在互動模式下使用python時注意:只能夠輸入python命令;在指令碼中列印語句是必須的,而在互動指令碼中可以自動列印運算式效果,不需要輸入完成的列印語句
>>> print (2**10)
③在互動模式下,需要執行符合語句,需要加入":",代表語句沒有執行完畢。而且必須用一個空行來代表結束符合語句
>>> for i in range(4):
... print(i)
...
0
1
2
3
4
④要保證縮排統一,否則出錯
5.3、python指令碼運行
①bash bang介紹
#!/usr/bin/python
#!/usr/bin/env python(建議使用這種格式,不容易出現python校本不能執行的問題)
二、python編程
1、變數的定義
1.1、變數的命名規則
①變數名只能用字母和底線(_)開頭
②變數名可以由字母、數字和底線組成
③變數名大小寫敏感,入lamp和LAMP不是同一個變數名
1.2、變數的賦值
①賦值操作
變數名 = 變數值
②給變數賦值字串,需要用引號將字串包含,否則報錯
>>> name = wdd
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'wdd' is not defined
③增量賦值
>>> x = 1
>>> x = x+1
>>> x
2
④多重賦值
>>> x=y=z=2
>>> x
2
>>> y
2
>>> z
2
>>>
⑤"多元賦值"
>>> x,y,z=1,2,3
>>> x
1
>>> y
2
>>> z
3
2、資料類型
2.1、數值型
①整形
>>> 123+321
44
②浮點型
>>> 3.14*3
9.42
2.2、字串型
①字串定義
>>> name = 'wdd'
>>> name
'wdd'
>>> print(name)
wdd
>>> dir(name) #查看字串支援的方法協助
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> name.replace('wdd','shuaige') #把wdd替換為shuaige
'shuaige'
>>> name.replace('w','cool') 把w替換為cool
'cooldd'
>>> help(name.replace) #查看具體的方法協助
②字串中單雙引號
在字串中單雙引號一致,用於包含字串
>>> persion = 'name','height'
>>> persion
('name', 'height')
>>> info="I'm a good man" #在雙引號中嵌套單引號,不用轉義符
>>> info
"I'm a good man"
>>> print(info)
I'm a good man
③在字串中調用特殊字元
如果使用轉義符\,將使特殊字元失去含義,系統中特殊的逸出字元如下:
轉義符 作用
\\ 保留反斜線
\, 保留單引號
\b 退格
\n 換行
\t 水平定位字元
\v 垂直定位字元
>>> name = 'my\tname\tis\tjack'
>>> name #直接輸出變數name,轉義符無法識別
'my\tname\tis\tjack'
>>> print(name) #調用print函數,可以正常使用
my name is jack
④raw轉義符抑制
在某些特定情況下可能不需要使用轉義符,如在windows中使用系統檔案
>>> path = 'c:\new\text.txt'
>>> print(path)
c:
ew ext.txt # 系統會把\n和\t識別為轉義符,導致命令失敗
>>> path = r'c:\new\text.txt'
>>> print(path) #使用raw字串關閉轉義機制
c:\new\text.txt
⑥三重引號編寫多行字串
>>> info = """my name is
... jack, I'm a honest
... man"""
>>> info #直接調用變數不能正確顯示
"my name is\njack, I'm a honest\nman"
>>> print(info) #需要使用print函數顯示
my name is
jack, I'm a honest
man
注意:不要和注釋搞混,注釋沒有賦值
⑦、字串的序列操作
變數中的值在索引中0儲存第一個值,1儲存第二個值
>>> name = 'jack'
>>> len(name)
4
>>> name[0]
'j'
>>> name[1]
'a'
>>> name[2]
'c'
>>> name[3]
'k'
索引也可以反向索引,就是-1代表最後一個值,-2代表倒數第二個值
>>> name[-1]
'k'
>>> name[-2]
'c'
字串也支援分區操作,就是取出變數中的一部分內容
>>> name[1:3]
'ac' #取出變數中第一位到第三位結束(不包含第四位)的內容
>>> name[2:4]
'ck'
>>> name[1:] #取出變數從第一位到變數結束
'ack'
>>> name[:2] #取出變數從開頭·到第一位結束(不包含第二位)
'ja'
3、列表
列表也是序列的一種,支援對序列的所有操作。列表於數組有些類似,但比數組強大得多。列表沒有資料類型的限制,可以在一個列表中定義不同類型的對象。此外列表沒有固定的大小,可以按照需要增加和減小列表的大小。並且列表中的值是可以改變的。
1、列表操作
表的定義
>>> info = ['jack','22','M']
>>> info
['jack', '22', 'M'] #此列表中的值既有字串也有整型
>>> len(info) #查看列表長度
列表的序列操作
>>> info[0] #取出列表值第一位
'jack'
>>> info[:-1] #從列表開頭取值到倒數第二位(不包含倒數第一位)
['jack', '22']
>>> info[0:] #從列表開頭取到最後一位
['jack', '22', 'M']
表的特殊方法
列表中的值是可以改變的,並且列表的大小也是可以改變的
>>> info = ['jack','22','M']
>>> info[0]='mark' #改變列表中0的值
>>> info
['mark', '22', 'M']
>>> help(info) #查看列表可以使用的方法
>>> info.append('American') #追加
>>> info
['mark', '22', 'M', 'American']
>>> info.pop(1) #刪除第一位的值
'22'
>>> info
['mark', 'M', 'American']
>>> info.insert(1,22) #在第一位插入新值22
>>> info
['mark', 22, 'M', 'American']
>>> digit=[1,3,2,5,4]
>>> digit
[1, 3, 2, 5, 4]
>>> digit.sort() #排序
>>> digit
[1, 2, 3, 4, 5]
>>> digit.reverse() #進行序列翻轉
>>> digit
[5, 4, 3, 2, 1]
2、列表嵌套
列表有一個特性,支援任意的嵌套、能夠以任意的組合對其進行嵌套,並可以多個層次進行嵌套。這個特性可以實現資料矩陣,或者多維陣列
>>> m=[[1,2,3],[4,5,6],[7,8,9]]
>>> m
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> m[1][2]
6
>>> m[1][2]=10 #查看第二個子列表中的第三個值
>>> m[1][2] #改變第二個子列表中的第三個值
10
4、元組(tuple)
元組可以看成是一個不可改變的列表,元組也可以支援序列操作。可以方便地儲存與提取一組值
>>> information=('lusi',18,'F')
>>> information
('lusi', 18, 'F')
>>> information[0] #提取第一個值
'lusi'
>>> information[1] #提取第二個值
18
注意:元組中的值不能改變,只能給整個元組重新賦值(字串也不能改變值,只能重新定義)
>>> id(information)
3073641204L #元組中的記憶體ID號
>>> information=("sdf","ahlk",67)
>>> info=(1,2,3) #給元組重新賦值之後,ID號會改變,代表是個新的元組出現
>>> id(info)
3074861852L
>>> a=(1,) #定義只有一個元素的元組時,需要加逗號,否則會被識別為整形
>>> type(a)
<type 'tuple'>
>>> b=(1)
>>> print
print print(
>>> print(type(b))
<type 'int'>
>>> t=(1,2,3) #可以把元組中的值賦予多個變數(像變數的多元賦值)
>>> t
(1, 2, 3)
>>> a,b,c=t
>>> a
1
>>> b
2
>>> c
3
5、字典
字典編寫在{}中,用"鍵:值"的方式進行賦值。字典中資料成對儲存,適合儲存二維資料,字典的值也可以改變。但是字典的順序並不可靠,也就是我們建立字典時的順序和我們輸出字典時候的順序不一定一致。
①字典的定義
>>> info={"name":"jack","age":20,"sex":"M"} #定義字典
>>> info #查看字典
{'age': 20, 'name': 'jack', 'sex': 'M'}
>>> info['name'] #查看字典某一個鍵的值
'jack'
>>> info['country']='American' #在字典中添加新的"鍵:值"
>>> info
{'country': 'American', 'age': 20, 'name': 'jack', 'sex': 'M'}
②字典中鍵的排序
字典的順序並不可靠,也就是我們建立字典時的順序和我們輸出字典時的順序不一定一致
>>> info={"name":"jack","age":20,"sex":"M"}
>>> info #字典輸出的順序並不一定
{'age': 20, 'name': 'jack', 'sex': 'M'}
>>> for key in sorted(info): #for迴圈,info中有幾個值,迴圈幾次
... print(key, 'is', info[key]) #sorted函數把info變成列表,並用sort排序,然後用for迴圈輸出,注意縮排
...
('age', 'is', 20)
('name', 'is', 'jack')
('sex', 'is', 'M')
6、檔案型
檔案類型是python對電腦上外部檔案的主要介面。如果要建立有一個檔案對象,需要調用內建的open函數,以字串的形式傳遞給它一個外部的檔案名稱和一個處理模式的字串。
>>> f = open('test','w')
#使用open函數,定義檔案名稱和處理模式,會在linux目前的目錄中建立該檔案
支援的模式:
'r' 預設以讀形式開啟
'w' 首先清除檔案在開啟進行寫入
'x' 建立一個新檔案並且開啟他進行寫入
'a' 開啟寫入,追加到一個存在的檔案末尾
>>> dir(f) #查看該對象支援的方法
['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines']
>>> f.write('my name is jack\n') #通過write方法向檔案中寫入資料
>>> f.write('my age is 22\n')
>>> f.close() #關閉對檔案的寫操作
>>> f.close()
>>> t = open('test.txt', 'r') #使用r處理模式,開啟檔案
>>> test = t.read() #賦予變數
>>> test #直接調用變數不能正確查看內容
'my name is jack\nmy age is 22\n'
>>> print(test) #使用print函數顯示內容
my name is jack
my age is 22
7、布爾值
就是判斷運算式是否為真
>>> 1 == 2
False
>>> 1 < 2
True
>>> 1 > 2
False
>>> 1 <= 2
True
8、查看變數類型
>>> name = 'jack'
>>> age = 20
>>> type(name)
<type 'str'>
>>> type(age)
<type 'int'>
>>> age = '18' #加入引號,變成字串
>>> type(age)
<type 'str'>
9、python的注釋
①# 注釋一句話
②'''
內容 #注釋一段內容
'''
10、模組
每一個義副檔名py結尾的python源碼檔案都是一個模組,其它指令碼可以通過匯入這個模組,使用整個模組中的所有的內容。模組中國可以包含函數和其他的指令碼內容。
模組的搜尋路徑
模組的搜尋,先搜尋本地位置,再按照sys.path的環境變數進行搜尋
匯入模組時,不需要寫尾碼名
>>> import myhello
需要把自己儲存指令碼的路徑加入python的path路徑,否則不能正確匯入
# cd /usr/local/python27/lib/python2.7/site-packages/
# vim my.pth
/root #把自己的python指令碼目錄放入此目錄中以.Pth結尾
取協助
>>> help('modules')
#查詢系統支援的所有模組,包含系統內建模組和使用者匯入模組
>>> help('sys') #查看模組具體協助
>>> import math #引入數學計算模組
>>> dir(math) #查看此模組支援的函數
>>> help(math) #查看此模組具體的注釋
>>> help(math.sin) #查看此模組中函數的注釋
>>> math.pi #調用模組中一個函數
3.141592653589793
③python模組的匯入方法
import 模組
import 模組名 as 新名 #給模組起一個別名
from 模組名 import 變數名
Reload模組
匯入的模組在python中是直接啟動並執行,但是匯入比較耗費資源,所以只能執行一次(除非退出重新進入會話)
如果想要重複匯入模組並執行,需要使用reload
>>> import imp #在python中,reload不再是內建函數,所以必須匯入
>>> imp.reload(myhello) #在模組中,調用reload函數
或者
>>> from imp import reload #從模組中匯入reload函數
>>> reload(myhello)
hello
<module 'myhello' from 'myhello.pyc'>
Python知識總結