recode:匿名函數相當于返回值前少了return字眼
函數作為參數 --->閉包
函數作為返回-->裝飾器
調用函數:壓棧過程(系統自動在棧區間開辟空間存儲數據,隨后銷毀)
一.模塊的使用
模塊:python中一個py文件就是一個模塊。
將具有相同功能的函數和數據封裝在一起時,可使用模塊
1.導入模塊
可以通過import或from-import在一個模塊中去導入使用另一個模塊的內容。
- import 模塊名--->導入模塊,通過”模塊名."方式去使用所有全局變量
- from 模塊名 import 變量1,變量2,……-->導入時只能使用導入的該變量,而非全部全局變量
- from 模塊名 import * -->導入模塊名中所有變量
代碼執行到import時,會將import后的模塊內容執行一遍
import不會重復導入,重復命令后內容只執行一次
2.重命名:
- import 模塊名 as 模塊的新名字
- from 模塊名 import 變量名 as 新變量名
import test1 as TS
3.選擇性導入:
if __name__=='__main__':
保留模塊內變量不被外部導入
每一個模塊都有一個__name__屬性,默認值為當前模塊對應文件名。當當前+ 模塊正在被執行時,系統會自動將模塊‘__name__’熟悉變成'__main__'
二.迭代器
1.迭代器(iterator)
一種容器類的數據類型。屬于序列,沒有具體字面量。值的獲取可以將其他的序列轉化成迭代器。
iter(序列)
特點
只能通過next方法去依次按順序獲取迭代器中的元素,取出后迭代器中該元素不存在。去除后只能從下一個元素開始取。
next(迭代器)
迭代器.__next__()
def func3():
str2='skdkjk'
index=0
while index<len(str2):
yield str2[index]
index+=1
ge5=(x for x in range(20)if x%2)
print(next(ge5))
print(next(ge5))
遍歷迭代器可照樣使用for in循環
三.生成式和生成器
1.生成器(generator)
生成器就是迭代器,但迭代器不一定是生成器
生成式是生成器的一種特殊形式
格式: 變量 for 變量 in 序列
#產生一個生成器,生成器中可以生成的數字是0,2,4,6,8
ge1=(x for x in range(5))
for item in ge1:
print(item*2)
生成器生成的數據是調用一次取一次元素
生成器是函數體中有yield關鍵字的函數
函數中有yield,不再執行函數體并獲取返回值,而是產生生成器。此時可用next()進行函數體的執行,獲取生成器元素,遇到yield結束執行,并將yield后面的值作為所獲取的元素返回值。同時保存當前結束位置,下一次獲取生成器元素時,接著上次結束的位置往后執行。
def func1(n):
print('this is a joke')
for x in range(n+1):
yield 10000
print('funny')
ge3= func1(10)
print(ge3)
print(next(ge3))
print(next(ge3))
[out]this is a joke
10000
funny
10000
生成器可以當成序列來使用
四.文件的讀寫
使用文件可以做數據的持久化(本地化)
1)文件的讀取
1.文件操作----讀寫操作
讀-->取出文件中的數據
寫-->將數據寫在文件中
過程:打開-操作-關閉
2.打開文件
open(file,mode='r',encoding='None')
- file->文件路徑(必須傳參),決定打開哪個文件
絕對路徑:電腦里的地址
相對路徑:是相對當前py文件對應的文件夾。格式:‘./相對路徑’
./ --->當前文件夾
../ ---->當前文件夾的上一層目錄文件夾
.../ ---->當前文件夾的上兩層目錄文件夾 - mode->文件打開方式
'r' -->read簡寫,以只讀方式打開文件,文本
‘rb'/’br‘ -->讀操作,讀出來的數據是二進制形式
'w' -->以寫的形式打開文件
'bw'/'wb' -->寫操作,將二進制數據寫入文件
'a'-->寫操作,追加 - encoding->文本文件的編碼方式,默認是None
utf-8:支持中文,幾乎支持所有語言文字
gbk:只支持英文
3.讀文件內容
文件對象.read()-->從文件開始讀到文件結束,返回讀到的結果
文件對象.readline()-->讀一行
文件對象.readlines()-->返回一個列表,列表的元素是文件中每一行的內容
每一次都是往讀過的地方往下讀
4.關閉文件
關閉文件:文件對象.close()
open函數的返回值,就是被打開的文件對象
2)文件的寫操作
1.打開文件
'w'-->將字符串寫入文件中,完全覆蓋文件原來內容
'wb'/'bw'-->將二進制寫入文件中,完全覆蓋文件原來內容
'a'-->追加
格式:文件.write()
文件.write(content+‘str’)-->追加字符串中的文字
文件.writelines同樣適用