python3基礎知識梳理
Python3基礎知識梳理
1、第一個python程式的解釋
hello.py
#! /usr/bin/python #python是一門解釋語言可以使用./或source執行
# coding:utf-8 #編碼格式,python直譯器自己匹配生效無所謂帶-*-不帶
print("hello python!!!\n") #python2不支援這種輸出,其輸出不帶小括號
2、註釋
# 單行註釋
‘’’
這是多行註釋
‘’’
3、變數以及型別
變數就是用來儲存資料的
變數的資料型別:
Numbers(數字):int、long、float、complex(複數)
布林型別:True、False
String(字串)
List(列表)
Tuple(元組)
Dictionary(字典)
Python中定義變數不需要說明其型別,系統會自動識別,type(變數名稱)方法可以檢視其型別
變數命名:最好使用駝峰法命名,不能使用關鍵字命名,最好不要用雙下滑線命名(特別是開頭)
4、輸入輸出
輸入:
name = input(“請輸入你的名字\n”) 提示語,換行(\n) python3格式
name = raw_input(“請輸入你的名字”) python2格式
格式化輸出:
name = “小明”
age = 8
print(“姓名:%s,年齡%d\n”%(name,age)) python3格式
print “姓名:%s,年齡%d\n”%(name,age) python2格式
格式符號 |
轉換 |
%f |
浮點型 |
%s |
通過str() 字串轉換來格式化 |
%d |
有符號十進位制整數 |
5、運算子
運算子 |
描述 |
例項 |
+ |
加 |
兩個物件相加 a + b 輸出結果 30 |
- |
減 |
得到負數或是一個數減去另一個數 a - b 輸出結果 -10 |
* |
乘 |
兩個數相乘或是返回一個被重複若干次的字串 a * b 輸出結果 200 |
/ |
除 |
x除以y b / a 輸出結果 2 |
// |
取整除 |
返回商的整數部分 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0 |
% |
取餘 |
返回除法的餘數 b % a 輸出結果 0 |
** |
冪 |
返回x的y次冪 a**b 為10的20次方, 輸出結果 100000000000000000000 |
= |
賦值運算子 |
把=號右邊的結果給左邊的變數 num=1+2*3 結果num的值為7 |
複合運算子
運算子 |
描述 |
例項 |
+= |
加法賦值運算子 |
c += a 等效於 c = c + a |
-= |
減法賦值運算子 |
c -= a 等效於 c = c - a |
*= |
乘法賦值運算子 |
c *= a 等效於 c = c * a |
/= |
除法賦值運算子 |
c /= a 等效於 c = c / a |
%= |
取模賦值運算子 |
c %= a 等效於 c = c % a |
**= |
冪賦值運算子 |
c **= a 等效於 c = c ** a |
//= |
取整除賦值運算子 |
c //= a 等效於 c = c // a |
6、資料型別轉換
函式 |
說明 |
int(x [,base ]) |
將x轉換為一個整數 |
long(x [,base ]) |
將x轉換為一個長整數 |
float(x ) |
將x轉換到一個浮點數 |
complex(real [,imag ]) |
建立一個複數 |
str(x ) |
將物件 x 轉換為字串 |
repr(x ) |
將物件 x 轉換為表示式字串 |
eval(str ) |
用來計算在字串中的有效Python表示式,並返回一個物件 |
tuple(s ) |
將序列 s 轉換為一個元組 |
list(s ) |
將序列 s 轉換為一個列表 |
chr(x ) |
將一個整數轉換為一個字元 |
unichr(x ) |
將一個整數轉換為Unicode字元 |
ord(x ) |
將一個字元轉換為它的整數值 |
hex(x ) |
將一個整數轉換為一個十六進位制字串 |
oct(x ) |
將一個整數轉換為一個八進位制字串 |
7、條件分支
if condition:
條件為真執行的操作
else:
條件為假執行的操作
if condition:
action
elif condition:
action
else:
action
python可以有效避免“懸掛else”(if else對應關係出錯)
條件表示式(三元操作符)
small = x ifx<y else y
如果x<y ,small=x.否則small=y
斷言assert:當這個關鍵字後面的條件為假,程式自動崩潰並丟擲異常
assert 3>4
可以利用他置入檢查點
8、 迴圈語句
while 條件:
滿足條件執行語句
for 臨時變數 in 可迭代物件:
action
else:
不滿足條件action
break 跳出整個迴圈
continue 結束本次迴圈進入下一次迴圈
他們只能在迴圈中使用,作用於當前迴圈
9、 字串 列表 元組 字典
字串:
我想應該都不陌生,以下是他的一些常用的方法
count(sub) 統計字串中出現sub的數量
endswith(sub) 以sub結束,返回布林值
startswith(sub) 以sub開始,返回布林值
find(sub) 查詢sub是否存在,如存在返回下標,否者返回-1
join(sub) 以字串做分割符,分割sub
replace(old, new) 替換
split(“sub”) 以sub分割字串
strip() 去除字串左右兩邊的空格
字串切片的使用:>>> tes ="123456" >>>tes[0:4] 結果:’1234’
列表:
List = [1, ‘dafd’, 12.6,True ]
列表的元素可以是不同型別的
列表是一個可變、可迭代的物件
列表的訪問方式:下標索引,for迴圈迭代輸出,while迴圈輸出
列表的常見操作:
新增(append, extend, insert):
append() 在列表後面追加元素
extend() 可以將集合中的元素逐一新增到列表中去
insert(index, a) 在指定index前新增a元素
修改:List[index] = value
查詢:in ,not in 返回布林值
刪除(del, pop, remove):
del 根據下標進行刪除
pop 刪除最後一個元素
remove 根據元素的值進行刪除
排序(sort, reverse):
sort() 對自身進行排序,預設從小到大,引數reverse=True可改為倒序
reverse() 將list進行逆置
元組:
元組也可以存放不同的資料型別
元組只一個不可變、可迭代的物件
(python中不可修改元組的元素,元素不可刪除,只能進行訪問)
元組的訪問方式:下標索引,for迴圈迭代輸出,while迴圈輸出
元組常見的操作:
元組切片(其原本資料不變):
>>> tt =(1,2,3,"dfsf",12.4)
>>> tt[1:3]
(2, 3)
刪除整個元組:del 元組名
查詢:in, not in 返回布林值
count(sub) 查詢元組中sub元素的數量
字典:
字典是按照鍵值對的方式存放資料的
字典是一個可變、可迭代的物件
字典常見的操作:
修改與新增:
變數名['鍵'] = 資料
若字典中‘鍵’存在,則修改其值
否則新增新的鍵值
刪除(del, clear):
del 即可以刪除字典元素,又可以刪除整個字典
clear() 清空整個字典
len() 測試字典的長度,即鍵值對的個數
keys() 返回一個包含字典所有key的列表
values() 返回一個包含字典所有value的列表
items() 返回一個包含字典所有(鍵:值)元組的列表 例:[(‘name’:’fcd’),(‘age’:20)]
has_key(key) 判斷字典中是否存在key,返回布林值
10、函式
全域性變數和區域性變數:
Python同其他的語言一樣存在全域性變數和區域性變數,但在python的函式中如果不改變全域性變數的值,可以不必宣告,直接引用即可。如果需要改變需要使用global先進行宣告,再使用
函式定義與呼叫:
def 函式名():
action
函式名()
同其他語言一樣python的函式也有返回值、引數,不過python可以在函式內寫說明文件
檢視函式說明文件help(函式名)
與其他語言相比python比較有特點的引數:收集引數(*args), 自定義引數(**kwargs)
Python中內嵌函式:內部函式呼叫外部函式變數需要nonlocal宣告
函式遞迴同其他語言一樣
匿名函式:使用lambda 返回值:表示式 (這種短小的匿名函式可以當作函式引數進行傳參)
11、模組匯入
以random模組為例:
import random
s = random.randint(1,10) #隨機產生一個1~10的整數
from random import randint()
s = randint(1,10)
12、檔案
檔案的開啟與關閉:
fp = open(“檔名稱”,”開啟方式”)
檔案開啟方式
訪問模式 |
說明 |
r |
以只讀方式開啟檔案。檔案的指標將會放在檔案的開頭。這是預設模式。 |
w |
開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。 |
a |
開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。 |
rb |
以二進位制格式開啟一個檔案用於只讀。檔案指標將會放在檔案的開頭。這是預設模式。 |
wb |
以二進位制格式開啟一個檔案只用於寫入。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。 |
ab |
以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該檔案不存在,建立新檔案進行寫入。 |
r+ |
開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。 |
w+ |
開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。 |
a+ |
開啟一個檔案用於讀寫。如果該檔案已存在,檔案指標將會放在檔案的結尾。檔案開啟時會是追加模式。如果該檔案不存在,建立新檔案用於讀寫。 |
rb+ |
以二進位制格式開啟一個檔案用於讀寫。檔案指標將會放在檔案的開頭。 |
wb+ |
以二進位制格式開啟一個檔案用於讀寫。如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。 |
ab+ |
以二進位制格式開啟一個檔案用於追加。如果該檔案已存在,檔案指標將會放在檔案的結尾。如果該檔案不存在,建立新檔案用於讀寫。 |
關閉檔案:fp.close()
檔案的讀寫:
fp.write() 向檔案中寫資料
fp.read() 從檔案中讀資料
fp.readlines() 將檔案中的資料一次性讀取,把每一行當做一個元素存入列表
fp.tell() 獲取檔案當前的位置
fp.seek(offset,from) 定位操作
offset:偏移量
from: 0 表示檔案開頭
1 表示當前位置
2 表示檔案末尾
檔案系統操作:
模組:打包的檔案系統
os模組:
常用方法:
os.getcwd():返回工作目錄
os.chdir(path):改變工作目錄
os.listdir(path=''):列出檔案目錄
os.mkdir(path):建立目錄
os.makedirs(path):建立遞迴目錄
os.remove(path):刪除檔案
os.removedirs(path):遞迴刪除
os.rename(old,new):檔案重新命名
os.system(command):執行系統的shell命令
os.curdir:指代當前目錄.等價於‘。’
os.pardir:指代上一級目錄
os.sep:輸出作業系統的路徑分隔符
os.linesep:當前平臺使用的行終止符
os.name:指出當前使用的作業系統
13、類和物件
定義類
class 類名:
方法列表
類名開頭最好大寫
建立物件
物件名 = 類名()
屬性:
Python中定義私有屬性是變數名前加雙下劃線,如 __name
否則是公有屬性
魔法方法:
__init__(self)方法:初始化函式,設定一些預設值。在建立物件後立即被呼叫
__str__(self)方法:設定物件的返回值
__del__(self)方法:當刪除物件時,python直譯器會自動呼叫
繼承:
單繼承:class NameClass(BaseClass1)
多繼承:class NameClass(BaseClass1, BaseClass2,BaseClass3)
重寫父類方法:
所謂重寫,就是子類方法與父類方法同名,子類中的方法將會覆蓋父類中的方法
多型
所謂多型就時定義與執行不一致
靜態方法和類方法
類方法:類物件所擁有的方法,需要用裝飾器@clsaamethod來標記為類方法,對於類方法第一個引數必須是類物件,一般以cls作為第一個引數。它可以通過例項物件引用,也可通過類物件引用
靜態方法:需要通過@staticmethod類進行修飾,不必有引數。它可以通過例項物件引用,也可通過類物件引用
14、異常
常見標準異常:
AssertionErron/AttributeError/EOFError/IndexError/KeyError
/NameError/OSError/OverflowError/SyntaxError/TypeError/ZeroDivisionError
捕獲異常:
try:
檢測範圍
exceptException[as reason]:
出現異常後的處理程式碼 print('程式碼')
exceptException[as reason];
出現異常後的處理程式碼 print('daimai'+str(reason))
except(Error1,Error2):
處理異常的程式碼
try:
檢測範圍
except Exception[as reason]:
處理異常的程式碼
finally:
無論如何都會處理的程式碼
raise語句丟擲異常
raise Exception('指示程式碼')