Python自動化開發03

2022-08-05 17:03:18 字數 3530 閱讀 7203

1、去重

list_1 = set([1,2,3,4,0,7,4,8])

list2 = set([99,34,6,8,3])

list3 = set([0,4,8])

list4 = set([84,45,49])

print(list_1) <<<

2、 交集

list_1 & list2

print(list_1.intersection(list2)) <<<

3、並集(合集)

list_1 | list2

print(list_1.union(list2)) <<<

4、子集

print(list_1.issubset(list2))   <<<  false

5、父集

print(list_1.issuperset(list3)) <<< true

6、差集

list_1 - list2

print(list_1.difference(list2)) <<<

7、補集

list_1 ^ list2

print(list_1.symmetric_difference(list2)) <<<

8、判斷是否有交集(沒有為true)

print(list_1.isdisjoint(list4)) <<< true

9、小知識點補充

list_1.add(59)    #新增

list_1.update([10,37,42])  #新增多項

list_1.remove(8)   #刪除指定項,沒找到會報錯

list_1.discard(88)   #刪除指定項,沒找到不報錯

list_1.pop()   #隨機刪除

檔案操作

f = open("file.txt","r",encoding="utf-8")

f.read()  ----> 一次性讀所有

f.readline()   -----> 每次讀取一行

f.readlines()  ----> 讀取檔案所有行,生成乙個列表,每行為乙個元素(只適合於讀小檔案)

f.tell()   ----> 當前檔案所在的指標,按字元個數計數

f.seek(0)  -----> 指標回到最開始位置

f.encoding  -----> 檔案字元編碼

f.seekable  ----->  判斷是否能移動指標位置(

true/false

)f.flush()   ------->  寫入檔案時不一定及時寫入到硬碟,可能還在快取中,

flush

可以用於重新整理使之寫入到硬碟(快取寫到一定值才會寫入硬碟)

f.truncate(10)   ------>  從頭開始截斷,不管指標在哪

##### example #######(記憶體中只儲存一行,可讀取大檔案,讀一行覆蓋一行

)for line in f:

print(line)

########## 列印進度條

##########

import sys,time

for i in range(50):

sys.stdout.write("#")

sys.stdout.flush()

time.sleep(0.1)

r唯讀;r+可讀可寫;兩都都不建立

w新建只寫,不能讀;

w+新建讀寫,二者都會將檔案內容清零

w+與r+

區別:r+: 可讀可寫,若檔案不存在,報錯;w+: 可讀可寫,若檔案不存在,建立

########### r+與a+

區別############

fd = open("1.txt",'w+')  

fd.write('123')  

fd = open("1.txt",'r+')  

fd.write('456')  

fd = open("1.txt",'a+')  

fd.write('789')  

結果:456789

說明r+進行了覆蓋寫。

以a,a+的方式開啟檔案,附加方式開啟

(a:附加寫方式開啟,不可讀;

a+:

附加讀寫方式開啟)

以 'u' 標誌開啟檔案

, 所有的行分割符通過

python

的輸入方法(例

#如 read*() )

,返回時都會被替換為換行符

\n. ('ru'

模式也支援

'rb'

選項) .r和u

要求檔案必須存在

不可讀的開啟方式:w和

a若不存在會建立新檔案的開啟方式:a,a+,

w,w+1、函式優點

(1) 減少重複**

(2) **統一性

(3) 可擴充套件性

2、非固定引數

def test1(x, *args):

print(x)

print(args)

def test2(x,**kwargs)

print(x)

print(kwargs)

*args  ----> 接收位置引數變成了元組(包括字典,元組)

**kwargs  -----> 接收關鍵字引數轉成字典

注意:關鍵字引數不能寫在位置引數前面

3、形參和實參

4、區域性變數與全域性變數

區域性變數只在函式裡生效,不會改變全域性變數的值

school = "oldboy"

def change_name(name):

global school    # 定義全域性變數可更改

school

school = "mage"

print("before change",name,school)

name = "alex li"

print("after change",name)

change_name('alex')

print(school)

>>> before change alex mage

>>> after change alex li

>>> mage

字串跟整數不能在函式中改全域性變數,列表、字典、集合都是可以在函式裡面改的

注意:不應該在函式中改全域性變數

5、遞迴特性

(1) 必須有乙個明確的結束條件

(2) 每次進入深一層遞迴時,問題規模相經上次遞迴都應有所減少

(3) 遞迴效率不高,遞迴層次過多會導致棧溢位

6、函式與函式式程式設計

物件導向 ---> 類

----> class

面向過程 ----> 過程

----> def

函式式程式設計 ----> 函式

----> def

函式式程式設計:只要輸入是確定的,輸出也是確定的

Python自動化開發學習1

一 開篇的大段毒雞湯真是夠補。正好在外面旅遊,一路上帶著耳機就全部聽完了。二 進入正題,結果還是介紹。說下版本問題,盡量還是用python3。三 hello world。就是個儀式感,別的沒啥 print 你好 四 變數。雖然駝峰規則也行,但是python推薦用 下劃線,那就用下劃線把。變數名全大寫...

python自動化開發 6 常用模組 續

python的常用模組 續 shelve模組 是乙個簡單的k,v將記憶體資料通過檔案持久化的模組,可以持久化任何pickle可支援的python資料格式。configparser模組 對配置檔案進行解析。hashlib模組 主要用於加密。例子 輸出十六進製制md5值 1 author ryb2 co...

前端自動化開發之grunt

上篇文章介紹了前端模組化開發工具seajs,利用seajs我們可以輕鬆實現前端的模組化程式設計,參見 一 準備工作 再使用grunt之前,我們先要安裝node.js,利用node的包管理工具npm來安裝grunt 關於如何安裝及配置node不屬於本文涉及範疇,所以在這裡不做介紹,需要檢視的童鞋可以參...