python3學習之路-基礎篇

一、官方網站

鏈接:https://www.python.org
中文文檔最新:https://docs.python.org/zh-cn/3.8/c-api/index.html

1、python 3 Readiness

鏈接:http://py3readiness.org/
github:https://github.com/chhantyal/py3readiness

2、python Speed Center

鏈接:https://speed.python.org/

3、pycon

鏈接:https://by.pycon.org/

4.python開發工具pyCharm

鏈接:https://www.jetbrains.com/pycharm/download/#section=windows

二、python基礎語法

python保留關鍵字

False class finally is return True continue for lambda try None
def from nonlocal while and del global not with as elif
if or yield assert else import pass break except in raise

python模塊的包

	import modulel as m			#導入模塊並命名變量
	from modulel import z		#導入模塊中變量
	import com.pkg2.hello as module #導入包並命名變量
	from com.pkg2.hello import z	#導入包中變量

python註釋

1.# 文件註釋和代碼註釋
2.""" “”" 文檔註釋

python變量賦值

	y=1

python命名規範

包名 全部小寫 com.pkg.m
模塊名 全部小寫,多個單詞用_分割 hello_world
類名 大駝峯 HelloWorld
異常名 大駝峯 OsError
變量名 全部小寫,可以_開頭或分割 _hello,hello_world
函數名和方法名 全部小寫,可以_開頭或分割 _hello,hello_world
常量名 全部大寫,可用_分割 HELLO_WORLD

三、python數據類型

6種標準數據類型:數字,字符串,列表,元組,集合,字典

int number類型 不可變
float number類型 不可變
str number類型 不可變
bytes sequence類型 不可變
bytearray number類型 可變
list number類型 可變
tuple number類型 不可變
dict mapping類型 可變
set set類型 可變
frozenset set類型 不可變

1、整數 int

		二進制函數  bin(100)
		八進制函數 oct(100)
		十六進制函數 hex(100)
		十進制函數 int("64",16)
		除法運算   3/2  返回浮點數,3//2 返回整數
		取模運算  5%2
		***注意***  不支持 數字和非數字比較  如:1 > ""  
		整數轉換函數:int(100.01)

2、布爾類型 True,False

	0,0.0,None,"",list(),tuple(),dict(),set(),frozenset()     數字0,空值,空序列,空字典 在判斷時都爲False,其它的爲True

3、浮點數 float(採用雙精度存儲)

	***注意***  1. 浮點數不能直接比較 如:0.1*3 == 0.3
				解決方法:限制精度範圍 如:round(0.1*3,2) == round(0.3,2)
				2. 浮點數不能直接進行運算 如:1.1+2.2 == 3.3
				解決方案:from decimal import Decimal
						 Decimal("1.1")+Decimal("2.2")
				3.round() 函數先下取整 如:round(1.5) 但是取小數時 有誤差 如 round(1.25,1)		 
	不同類型的數字之間可以 進行加減和比較運算 如:1.1+21.1<2,1.1=1
	浮點數轉換函數:float(100)		

4、字符竄類型 str

	轉義符:\t	水平製表符
			\n	換行
			\r	回車
			\"	雙引號
			\'	單引號
			\\	反斜槓
	原始字符串: s=r'Hello\world'
	字符串查找:str.find(syb[,start[,end]])	從字符左側start到end之間查找字符串sub的位置下標,沒有找到返回-1
			   str.rfind(syb[,start[,end]])	從字符右側start到end之間查找字符串sub的位置下標,沒有找到返回-1
	字符竄長度函數: len('zifu')
	字符竄格式化: "{x} {y}".format(x=100,y=[1,2,3])
	字符串轉換函數:str(100)

5、字節數組 bytes

6、內存視圖 bytearray

7、列表 list

創建列表
	a=[1,2]
追加元素
	a.append(3)
	a.extend(4)
插入元素
	a.insert(1,5)		#在索引1處插入一個5
替換元素
	a[1]=6				#在索引1處替換爲6
刪除元素
	a.remove(6)
	a.pop(1)			#刪除索引爲1的數據
其他方法
	a.reverse()			#倒置列表
	a.copy()			#複製列表
	a.clear()			#清空列表
	a.index(x[,i[,j]])	#返回x第一次出現的索引
	a.count(x)			#返回x在中出現的次數	
in 判斷元素是否存在列表中  如:2 in [1,2]

列表推導式
	x=[a**2 for a in range(10) if a%2 == 0]

8、元祖 tuple

創建元組
	a=(1,2)
訪問元組
	a[start:end]	  #取start到end之間的數據		
	a[start:end:step] #取start到end之間以step位步長的數據
遍歷元組
	for item in a:
		print(item)
	for i,item in enumerate(a):
		print('{0}---{1}'.format(i,item))			

9、數祖 array

10、字典 dict

創建字典
	a=dict(a=1,b=2),{"a":1,"b":2}/{a:1,b:2}
修改字典
	a.pop(key[,default])	#刪除字典鍵值爲key的數據
	a.popitem()				#刪除字典的數據
	a.get(key[,default])	#通過鍵值key返回數據
	a.items()				#返回字典所有鍵值對
	a.keys()				#返回字典的鍵
	a.values()				#返回字典的值
遍歷字典
	for key in a.keys():
		print(key)
	for values in a.values():
		print(values)
	for key,values in a.items():
		print('{0}---{1}'.format(key,values))
字典推導式
	a=[k for x,v in a.items() if v%2 == 0]					
字典不支持加法,乘法,大小等運算,只可比較是否相同
	& 交集
	| 並集
	- 差集
	^ 對稱差集 
	如:a=dict(a=1,b=2)
		b=dict(c=3,b=2)
		ka=a.keys()
		kb=b.keys()
		ka & kb	 #在a、b中同時存在	
		ka | kb  #在a和b中存在
		ka - kb  #僅在a中存在
		ka ^ kb	 #僅在a或僅在b中出現

11、集合 (可變和不可變)不允許有重複值

創建集合
	a=set({1,"a"})/{1"a"} 可變
	a=frozenset(range(3)) 不可變
修改可變集合函數
	a.add()			#添加元素
	a.remove()		#刪除元素,不存在拋異常
	a.discard()		#刪除元素,不存在不拋異常
	a.pop()			#刪除並返回集合中的刪除的元素
	a.clear()		#清除集合
遍歷集合
	for item in a:
		print(item)
	for i,item in enumerate(a):
		print('{0}---{1}'.format(i,item))	
集合推導式
	x={a**2 for a in range(10) if a%2 == 0}	
集合支持大小,相等運算符
	& 交集
	| 並集
	- 差集
	^ 對稱差集

四、python表達式

	python註釋:#註釋內容
	python幫助:"""幫助信息"""
	python賦值:a=b=c=1234
			   x=1,"abc",[10,20]
			   s=0
			   s+=10
			   a=b=[]
			   a+=[1,2] #列表直接修改原內容 
			   c=d=()
			   c+=(1,2)	#元祖新建對象	
			   a,b,c="xyz"
			   a,b,c=[1,2,3]
			   a,b=[1,2],(3,4)
			   a,(b,c)=1,[10,20]
			   a,((b,c),(d,e))=1,[(10,20),"ab"]
			   a,*b,c=range(5)
			   a,*b,c=1,2 #*號只能有一個,*號不能單獨出現 如 *a=1,2 或者只能放在列表或元祖內  (*a)=1,2
			              #*號還可用來迭代對象 如:a=(1,2)
			              						 [*a]
			              #*號對於字典展開主鍵,**號展開鍵值 如:d={"a":1,"b":2}
			              									  [*d]
			              									  {"c":2,**d}
			   			  #*號可用於函數調用,將單個對象分解爲多個實參           									  							 					

1、python作用域

	g=1
	global g #可以引用全局變量
	nonlocal #爲外層嵌套函數

2、python運算符

一元運算符
	-	#取反
二元運算符
	+	#加
	-	#減
	*	#乘
	/	#除
	%	#取餘
	**  #冪
	//	#取除的最大整數
關係運算符
	==	#等於
	!=	#不等於
	>	#大於
	<	#小於
	>=	#大於等於
	<=	#小於等於
邏輯運算符
	not #非
	and #與
	or #或者,可用於簡化默認值設置 如: x=None
									y=x or 100
位運算符
	~	#位反
	&	#位與
	|	#位或
	^	#位異或
	>>	#右移
	<<	#左移
賦值運算符
	+=	#加賦值
	-=	#減賦值
	*=	#乘賦值
	/=	#除賦值
	%=	#取餘賦值
	**=	#冪賦值
	//=	#取除最大整數賦值
	&=	#位與賦值
	|=	#位或賦值
	^=	#位異或賦值
	<<=	#左移賦值		 
	>>=	#右移賦值
其他運算符
	is/is not	#判斷是/否同一對象
	in/not in	#判斷是/否包含某一元素	
三元表達式
	X?T:F #當條件X爲真時,返回T,否則返回F
	T if X else F	#當條件X爲真時,返回T,否則返回F

切片複製指定元素

	x=[0,1,2,3,4,5,6]
	x[2:5:1] # 2 表示起始位置(默認是0) 5 表示結束位置(不包括結束位置) 1 表示容納最後一個元素(是指間隔幾個元素獲取)
	x[:5]
	x[2:]
	x[:]
	x[2:6:2]
	x[::2]
	x[::-1] #反向步進,全部複製
	x[5:2:-1]
	x[-2:-5:-1]
	del x[2:5] #刪除指定元素
	x[2:5]=[100,200] #賦值指定元素

3、python控制流

		1、選擇 if elif else  
		if x>0:
			print("+")
		elif x<0:
			print("-")
		else:
			print("=")
		2、循環 while 
		while n > 0:
			print(n)
			n-=1
		3、循環for 
		for i in range(3):
			print(i)
		3、迭代 
		for a,b in [(1,2),(3,4)]:
			print(a,b)
		for i,x in enumerate([1,2,3]):
			print(i,x)							 				 											 	
		4、可選分支for elsewhile else
		n=3
		while n>0:
			n-=1
		else:
			print("over")
			
		for n in range(10):
			if n==3
				break
		else
		 	print("over")	 	
		5.breakcontinue
		break:跳出循環
		cintinue:結束本次循環,繼續下次循環								

3、python推導式

	列表:[x for x in range(5)]
	字典:{k:v for k,v in zip("abc",range(10,13))}
	嵌套: [f"{x}{y}" for x in "abc" if x!="c" for y in range(3) if y!=0]
	生成器:(x for x in range(3))

五、python函數

創建函數
	def add(a,b):	   #a可以寫爲 *a:表示可以傳元組,**a:表示可以傳字典
		c=a+b
		d=a*b
		def sub(a,b):	#可以在函數中嵌套使用
			return a-b
		if a > 0:
			return sub(c,d)	
		else:
			return c/(c,d) #可有多個返回值
執行函數	
	add(1,2)
lambda表達式(匿名函數,不用使用return返回)
	lambda 參數列表:lambda體
	c=lambda a,b:(a+b)
基礎函數
	filter(function,iterable)	#可以對iterable對象過濾,function:函數,iterable可迭代對象
	map(function,iterable)		#可以對iterable對象變換
	reduce(function,iterable[,initializer])	#將多個數據按照指定算法積累疊加起來,返回一個數據					#

六、python模塊

	import sys  #引入系統模塊
	from sys import version #引入模塊內函數
	import lib.demo #引入包內模塊
	from lib import * #引入包內所有模塊
	dir() 

七、python類

python類具有封裝、繼承和多態的特性
python包含了構造方法(用__init__聲明),實例方法(和變量聲明一樣),類方法(用@classmethod聲明),靜態方法(用@staticmethod聲明)

聲明類
	class A: 					
		a=100					#類字段
		def __init__(self,x):	#實例初始化方法
			self.x=x			#實例字段
		def get_x(self):		#實例方法
			return self.x
繼承父類
	class B(A):					#繼承自A
		b="hello"
		def __init__(self,x,y):
			super().__init__(x)	#調用父類的初始化方法
			self.y=y
		def get_y(self):
			return self.y
多繼承父類
	class X(A,B):pass		   #多繼承			
調用類
	o=B(1,2)
父子類型檢查
	issubclass(class,classinfo)	#檢查class是否是classinfo的子類
	isinstance(class,classinfo)	#檢查class是否是classinfo的子類
__new__ :構造方法,創建對象實例
__init__:初始化方法,設置實例的相關屬性
__del__:析構方法,實例被回收時調用
	**python 支持封裝,繼承和多態**
擴展object類:python的原始類
擁有的方法:
	__str__()		:返回該對象的字符串表示
	__eq__(other)	:指其他對象是否與此對象相等
擴展枚舉類定義:
	import enum
	class 枚舉類名 (enum.Enum):
		枚舉類常量							

八、python異常

常見異常

AttributeError 類成員變量異常
OsError 操作系統異常
IndexError 索引異常
KeyError 鍵值異常
NameError 變量聲明異常
TypeError 數據類型異常
ValueError 傳參異常
	def test(n):
		try:							#需要保護的代碼塊
			print("try")
			if not n: rasie Exception
		except:							#異常發生時,按所屬類型捕捉並處理
			print("except")
		else:							#異常未發生時執行,但最少有一個except語句
			print("else")
		finally:						#無論異常是否發生,總是執行
			print("finally")			

九、python常用模塊

1.math模塊

引用:import math
函數:
math.ceil()		#向上取整
math.floor()	#向下取整
round()			#四捨五入取整
math.log(a[,b])	#返回b爲底的a的對數,省略b,返回a的自然對數
math.sqrt(a)	#返回a的平方根
math.pow(a,b)	#返回a的b次冪的值
math.sin(a)		#返回a的三角正弦
math.cos(a)		#返回a的三角餘弦
math.tan(a)		#返回a的三角正切
math.asin(a)	#返回a的反正弦
math.acos(a)	#返回a的反餘弦
math.atan(a)	#返回a的反正切
math.dereees(a)	#將弧度a轉換爲角度
math.radians(a)	#將角度a轉換爲弧度

2.random模塊

引用:import random
函數:
random.random()		#返回0~1之間的浮點數
random.randrange(n)	#返回0~n之間的隨機整數
random.randint(a,b)	#返回a~b之間的隨機整數

3.datetime模塊

引用:import datetime
函數:
datetime.datetime(year,month,day,hour=0,minute=0,second=0,microsecond=0)	#創建日期
datetime.date(year,month,day)												#創建日期
datetime.date.today()														#當天日期
datetime.date.fromtimestamp(timestamp)										#timestamp時間戳對應的日期
datetime.time(hour=0,minute=0,second=0,microsecond=0,tzinfo=None)			#當天的時間
datetime.timedelta(days=0,second=0,microseconds=0,milliseconds=0,minutes=0,hours=0,weeks=0)#日期計算
datetime.strptime()/datetime.strftime()										#格式化日期
datetime.timezone(offset,name=None)											#時區	
日期格式化控制符
%m:	兩位的月份
%y:	兩位的年份
%Y:	四位的年份
%d:	每月中的日期
%H:	24小時制的兩位小時
%I:	12小時制的兩位小時
%p:	AMPM
%M:	兩位的分鐘
%S:	兩位的秒數
%f:	六位數的微妙
%z:	+HHMM形式的時區
%Z:	時區名稱
示例:
import datetime
d=datetime.datetime.today()
d.strftime('%Y-%m-%d %H:%M:%S')

4.logging模塊

引用:import logging
函數:
logging.debug()		#返回調試信息
logging.info()		#返回節點信息
logging.warning()	#錯誤的警告
logging.error()		#嚴重錯誤
logging.critical()	#嚴重錯誤

十、python文件操作與管理

1.打開文件

方法:
open(file,mode='r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
參數:
file:要打開的文件路徑
mode:r(只讀)/w(覆蓋文件內容)/x(文件不存在時創建並寫入,存在返回異常fileExistsError/a(在文件末尾追加寫入)/b(二進制模式)/t(文本模式,默認)/+(更新模式,必須與rwxa組合使用,如r+,a+,w+)
buffering:緩衝區,0爲關閉緩衝區,>0爲設置緩衝區字節大小,-1爲自動設置
encoding:文件編碼
errors:編碼錯誤是如何處理
newline:設置換行模式
closefd:關閉文件
opener:打開文件執行函數
示例:
f = open('text.txt','w+')
f.write('Hello World')   #創建文件並寫入	

2.關閉文件

close()

3.文本文件讀寫

read(size=-1)		#讀取字符 size:字符數
readline(size=-1)	#讀取單行字符串 size:字符數
readlines(hint=-1)	#讀取文件到一個字符串列表中,每行數據是列表的一個元素 hint:行數
write(s)			#將字符竄寫入文件
writelines(lines)	#向文件寫入一個列表
flush()				#刷新緩存區

4.os模塊

引用:import os
函數方法:
os.rename(src,dst)	#修改文件名,src(源文件),dst(目標文件)
os.remove(path)		#刪除path所指的文件,如path是目錄,返回OSError
os.mkdir(path)		#創建path所指的目錄,如目錄已存在,返回FileExistsError
os.rmdir(path)		#刪除path所指的目錄,如目錄非空,返回OSError
os.walk(top)		#遍歷top所指的目錄樹,返回三元數組 (目錄路徑,目錄名列表,文件名列表)
os.listdir(dir)		#列出指定目錄中的文件和子目錄
屬性:
os.curdir			#當前目錄
os.pardir			#當前父目錄	

5.os.path模塊

引用:import os.path
函數和方法:
os.path.abspath(path)		#返回絕對路徑
os.path.basename(path)		#返回目錄名或文件名
os.path.dirname(path)		#返回目錄部分
os.path.exists(path)		#判斷文件是否存在
os.path.isfile(path)		#判斷是否是文件
os.path.isdir(path)			#判斷是否是目錄
os.path.getatime(path)		#返回最後一次訪問時間(數值是時間戳),不存在返回OSError	
os.path.getmtime(path)		#返回最後修改時間,不存在返回OSError
os.path.getctime(path)		#返回創建時間,不存在返回OSError
os.path.getsize(path)		#返回文件大小,不存在返回OSError

十、python正則表達式

參照:python3學習之路-爬蟲篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章