Python知識(shí)總結(jié)
一、python簡(jiǎn)介
1、Python簡(jiǎn)介
Python是一種解釋型、交互式、面向?qū)ο蟆⑹浅鯇W(xué)者的語(yǔ)言。
2、python特點(diǎn)
①易于學(xué)習(xí)
②易于閱讀
③易于維護(hù)
④一個(gè)廣泛的標(biāo)準(zhǔn)庫(kù)
⑤互動(dòng)模式
⑥便攜式
⑦可擴(kuò)展
⑨GUI編程
⑩可擴(kuò)展性
3、python支持tab補(bǔ)全功能:
>>> import readline,rlcompleter
>>> readline.parse_and_bind('tab: complete')
可以將上面兩句寫(xiě)入一個(gè)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為系統(tǒng)依賴(lài)包,只能更新,不能刪除,而且yum的版本必須 和python配套,升級(jí)python之后,必須給yum指定使用低版本的。相應(yīng)操作如下:
#mv /usr/bin/python /usr/bin/python-2.6.bak 備份
#ln -s /usr/local/bin/python3.4 /usr/bin/python 創(chuàng)建軟連接
#python –V 執(zhí)行版本掃描
②修改yum配置文件,使其正常工作
#vim /usr/bin/yum
將其中的/usr/bin/python修改為/usr/bin/python2.6
③如果上述設(shè)置完畢還有報(bào)錯(cuò),記得修改環(huán)境變量
#vim /etc/profile
5、python運(yùn)行腳本
5.1、執(zhí)行方式
#python
5.2、注意事項(xiàng):
①在python3.0以上版本中,print變成了函數(shù)。所以必須使用print()格式執(zhí)行,而以前版本不用括號(hào)
>>> print('hello man')
②在交互模式下使用python時(shí)注意:只能夠輸入python命令;在腳本中打印語(yǔ)句是必須的,而在交互腳本中可以自動(dòng)打印表達(dá)式效果,不需要輸入完成的打印語(yǔ)句
>>> print (2**10)
③在交互模式下,需要執(zhí)行符合語(yǔ)句,需要加入":",代表語(yǔ)句沒(méi)有執(zhí)行完畢。而且必須用一個(gè)空行來(lái)代表結(jié)束符合語(yǔ)句
>>> for i in range(4):
... print(i)
...
0
1
2
3
4
④要保證縮進(jìn)統(tǒng)一,否則出錯(cuò)
5.3、python腳本運(yùn)行
①bash bang介紹
#!/usr/bin/python
#!/usr/bin/env python(建議使用這種格式,不容易出現(xiàn)python校本不能執(zhí)行的問(wèn)題)
?
二、python編程
1、變量的定義
1.1、變量的命名規(guī)則
①變量名只能用字母和下劃線(_)開(kāi)頭
②變量名可以由字母、數(shù)字和下劃線組成
③變量名大小寫(xiě)敏感,入lamp和LAMP不是同一個(gè)變量名
1.2、變量的賦值
①賦值操作
變量名 = 變量值
②給變量賦值字符串,需要用引號(hào)將字符串包含,否則報(bào)錯(cuò)
>>> 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、數(shù)據(jù)類(lèi)型
2.1、數(shù)值型
①整形
>>> 123+321
44
②浮點(diǎn)型
>>> 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) #查看具體的方法幫助
②字符串中單雙引號(hào)
在字符串中單雙引號(hào)一致,用于包含字符串
>>> persion = 'name','height'
>>> persion
('name', 'height')
>>> info="I'm a good man" #在雙引號(hào)中嵌套單引號(hào),不用轉(zhuǎn)義符
>>> info
"I'm a good man"
>>> print(info)
I'm a good man
③在字符串中調(diào)用特殊字符
如果使用轉(zhuǎn)義符/,將使特殊字符失去含義,系統(tǒng)中特殊的轉(zhuǎn)義字符如下:
轉(zhuǎn)義符 | 作用 |
// | 保留反斜杠 |
/, | 保留單引號(hào) |
/b | 退格 |
/n | 換行 |
/t | 水平制表符 |
/v | 垂直制表符 |
>>> name = 'my/tname/tis/tjack'
>>> name #直接輸出變量name,轉(zhuǎn)義符無(wú)法識(shí)別
'my/tname/tis/tjack'
>>> print(name) #調(diào)用print函數(shù),可以正常使用
my????name????is????jack
④raw轉(zhuǎn)義符抑制
在某些特定情況下可能不需要使用轉(zhuǎn)義符,如在windows中使用系統(tǒng)文件
>>> path = 'c:/new/text.txt'
>>> print(path)
c:
ew????ext.txt # 系統(tǒng)會(huì)把/n和/t識(shí)別為轉(zhuǎn)義符,導(dǎo)致命令失敗
>>> path = r'c:/new/text.txt'
>>> print(path) #使用raw字符串關(guān)閉轉(zhuǎn)義機(jī)制
c:/new/text.txt
⑥三重引號(hào)編寫(xiě)多行字符串
>>> info = """my name is
... jack, I'm a honest
... man"""
>>> info #直接調(diào)用變量不能正確顯示
"my name is/njack, I'm a honest/nman"
>>> print(info) #需要使用print函數(shù)顯示
my name is
jack, I'm a honest
man
注意:不要和注釋搞混,注釋沒(méi)有賦值
⑦、字符串的序列操作
變量中的值在索引中0保存第一個(gè)值,1保存第二個(gè)值
>>> name = 'jack'
>>> len(name)
4
>>> name[0]
'j'
>>> name[1]
'a'
>>> name[2]
'c'
>>> name[3]
'k'
索引也可以反向索引,就是-1代表最后一個(gè)值,-2代表倒數(shù)第二個(gè)值
>>> name[-1]
'k'
>>> name[-2]
'c'
字符串也支持分片操作,就是取出變量中的一部分內(nèi)容
>>> name[1:3]
'ac' #取出變量中第一位到第三位結(jié)束(不包含第四位)的內(nèi)容
>>> name[2:4]
'ck'
>>> name[1:] #取出變量從第一位到變量結(jié)束
'ack'
>>> name[:2] #取出變量從開(kāi)頭·到第一位結(jié)束(不包含第二位)
'ja'
3、列表
列表也是序列的一種,支持對(duì)序列的所有操作。列表于數(shù)組有些類(lèi)似,但比數(shù)組強(qiáng)大得多。列表沒(méi)有數(shù)據(jù)類(lèi)型的限制,可以在一個(gè)列表中定義不同類(lèi)型的對(duì)象。此外列表沒(méi)有固定的大小,可以按照需要增加和減小列表的大小。并且列表中的值是可以改變的。
1、列表操作
>>> info = ['jack','22','M']
>>> info
['jack', '22', 'M'] #此列表中的值既有字符串也有整型
>>> len(info) #查看列表長(zhǎng)度
>>> info[0] #取出列表值第一位
'jack'
>>> info[:-1] #從列表開(kāi)頭取值到倒數(shù)第二位(不包含倒數(shù)第一位)
['jack', '22']
>>> info[0:] #從列表開(kāi)頭取到最后一位
['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() #進(jìn)行序列翻轉(zhuǎn)
>>> digit
[5, 4, 3, 2, 1]
2、列表嵌套
列表有一個(gè)特性,支持任意的嵌套、能夠以任意的組合對(duì)其進(jìn)行嵌套,并可以多個(gè)層次進(jìn)行嵌套。這個(gè)特性可以實(shí)現(xiàn)數(shù)據(jù)矩陣,或者多維數(shù)組
>>> 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 #查看第二個(gè)子列表中的第三個(gè)值
>>> m[1][2] #改變第二個(gè)子列表中的第三個(gè)值
?
10
4、元組(tuple)
元組可以看成是一個(gè)不可改變的列表,元組也可以支持序列操作。可以方便地存儲(chǔ)與提取一組值
>>> information=('lusi',18,'F')
>>> information
('lusi', 18, 'F')
>>> information[0] #提取第一個(gè)值
'lusi'
>>> information[1] #提取第二個(gè)值
18
注意:元組中的值不能改變,只能給整個(gè)元組重新賦值(字符串也不能改變值,只能重新定義)
>>> id(information)
3073641204L #元組中的內(nèi)存ID號(hào)
>>> information=("sdf","ahlk",67)
>>> info=(1,2,3) #給元組重新賦值之后,ID號(hào)會(huì)改變,代表是個(gè)新的元組出現(xiàn)
>>> id(info)
3074861852L
>>> a=(1,) #定義只有一個(gè)元素的元組時(shí),需要加逗號(hào),否則會(huì)被識(shí)別為整形
>>> type(a)
<type 'tuple'>
>>> b=(1)
print print(
>>> print(type(b))
<type 'int'>
>>> t=(1,2,3) #可以把元組中的值賦予多個(gè)變量(像變量的多元賦值)
>>> t
(1, 2, 3)
>>> a,b,c=t
>>> a
1
>>> b
2
>>> c
3
5、字典
字典編寫(xiě)在{}中,用"鍵:值"的方式進(jìn)行賦值。字典中數(shù)據(jù)成對(duì)保存,適合保存二維數(shù)據(jù),字典的值也可以改變。但是字典的順序并不可靠,也就是我們建立字典時(shí)的順序和我們輸出字典時(shí)候的順序不一定一致。
①字典的定義
>>> info={"name":"jack","age":20,"sex":"M"} #定義字典
>>> info #查看字典
{'age': 20, 'name': 'jack', 'sex': 'M'}
>>> info['name'] #查看字典某一個(gè)鍵的值
'jack'
>>> info['country']='American' #在字典中添加新的"鍵:值"
>>> info
{'country': 'American', 'age': 20, 'name': 'jack', 'sex': 'M'}
②字典中鍵的排序
字典的順序并不可靠,也就是我們建立字典時(shí)的順序和我們輸出字典時(shí)的順序不一定一致
>>> info={"name":"jack","age":20,"sex":"M"}
>>> info #字典輸出的順序并不一定
{'age': 20, 'name': 'jack', 'sex': 'M'}
>>> for key in sorted(info): #for循環(huán),info中有幾個(gè)值,循環(huán)幾次
... print(key, 'is', info[key]) #sorted函數(shù)把info變成列表,并用sort排序,然后用for循環(huán)輸出,注意縮進(jìn)
...
('age', 'is', 20)
('name', 'is', 'jack')
('sex', 'is', 'M')
6、文件型
文件類(lèi)型是python對(duì)電腦上外部文件的主要接口。如果要?jiǎng)?chuàng)建有一個(gè)文件對(duì)象,需要調(diào)用內(nèi)置的open函數(shù),以字符串的形式傳遞給它一個(gè)外部的文件名和一個(gè)處理模式的字符串。
>>> f = open('test','w')
#使用open函數(shù),定義文件名和處理模式,會(huì)在linux當(dāng)前目錄中建立該文件
支持的模式:
'r' 默認(rèn)以讀形式打開(kāi)
'w' 首先清除文件在打開(kāi)進(jìn)行寫(xiě)入
'x' 創(chuàng)建一個(gè)新文件并且打開(kāi)他進(jìn)行寫(xiě)入
'a' 打開(kāi)寫(xiě)入,追加到一個(gè)存在的文件末尾
>>> dir(f) #查看該對(duì)象支持的方法
['__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') #通過(guò)write方法向文件中寫(xiě)入數(shù)據(jù)
>>> f.write('my age is 22/n')
>>> f.close() #關(guān)閉對(duì)文件的寫(xiě)操作
>>> f.close()
>>> t = open('test.txt', 'r') #使用r處理模式,打開(kāi)文件
>>> test = t.read() #賦予變量
>>> test #直接調(diào)用變量不能正確查看內(nèi)容
'my name is jack/nmy age is 22/n'
>>> print(test) #使用print函數(shù)顯示內(nèi)容
my name is jack
my age is 22
7、布爾值
就是判斷表達(dá)式是否為真
>>> 1 == 2
False
>>> 1 < 2
True
>>> 1 > 2
False
>>> 1 <= 2
True
8、查看變量類(lèi)型
>>> name = 'jack'
>>> age = 20
>>> type(name)
<type 'str'>
>>> type(age)
<type 'int'>
>>> age = '18' #加入引號(hào),變成字符串
>>> type(age)
<type 'str'>
9、python的注釋
①# 注釋一句話
②'''
內(nèi)容 #注釋一段內(nèi)容
'''
10、模塊
每一個(gè)義擴(kuò)展名py結(jié)尾的python源碼文件都是一個(gè)模塊,其它腳本可以通過(guò)導(dǎo)入這個(gè)模塊,使用整個(gè)模塊中的所有的內(nèi)容。模塊中國(guó)可以包含函數(shù)和其他的腳本內(nèi)容。
模塊的搜索,先搜索本地位置,再按照sys.path的環(huán)境變量進(jìn)行搜索
導(dǎo)入模塊時(shí),不需要寫(xiě)后綴名
>>> import myhello
需要把自己保存腳本的路徑加入python的path路徑,否則不能正確導(dǎo)入
# cd /usr/local/python27/lib/python2.7/site-packages/
# vim my.pth
/root #把自己的python腳本目錄放入此目錄中以.Pth結(jié)尾
>>> help('modules')
#查詢(xún)系統(tǒng)支持的所有模塊,包含系統(tǒng)內(nèi)置模塊和用戶(hù)導(dǎo)入模塊
>>> help('sys') #查看模塊具體幫助
>>> import math #引入數(shù)學(xué)計(jì)算模塊
>>> dir(math) #查看此模塊支持的函數(shù)
>>> help(math) #查看此模塊具體的注釋
>>> help(math.sin) #查看此模塊中函數(shù)的注釋
>>> math.pi #調(diào)用模塊中一個(gè)函數(shù)
3.141592653589793
③python模塊的導(dǎo)入方法
import 模塊
import 模塊名 as 新名 #給模塊起一個(gè)別名
from 模塊名 import 變量名
導(dǎo)入的模塊在python中是直接運(yùn)行的,但是導(dǎo)入比較耗費(fèi)資源,所以只能執(zhí)行一次(除非退出重新進(jìn)入會(huì)話)
如果想要重復(fù)導(dǎo)入模塊并執(zhí)行,需要使用reload
>>> import imp #在python中,reload不再是內(nèi)置函數(shù),所以必須導(dǎo)入
>>> imp.reload(myhello) #在模塊中,調(diào)用reload函數(shù)
或者
>>> from imp import reload #從模塊中導(dǎo)入reload函數(shù)
>>> reload(myhello)
hello
<module 'myhello' from 'myhello.pyc'>
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注