day14之模块
一、列表生成式與生成表達(dá)式
1、列表生成式(數(shù)據(jù)量小)
要求:在列表內(nèi)造100個(gè)元素
示例:
1 l=[] 2 for i in range(100): 3 l.append('egg%s'%i) 4 print(l) 5 6 #可簡(jiǎn)化如下格式: 7 l=['egg%s'%i for i in range(100)] 8 print(l)1.2、常用列表生成式
示例:
l=['egg%s'%i for i in range(100) if i > 10] print(l)注:此處不能寫else,因?yàn)闊o法判斷else輸入for 還是 if
?
2、生成器表達(dá)式(數(shù)據(jù)量大)
l=('egg%s'%i for i in range(100) if i > 10) #1. res=l.__iter__() print(res.__next__()) print(res.__next__()) #2. print(next(l)) print(next(l)) #3. for i in l:print(i)?
3、練習(xí)題
3.1、把列表內(nèi)元素都變成大寫
names=['egon','alex','wupeiqi','yuanhao','lxx_sb'] names=[i.upper() for i in names] print(names)3.2、把結(jié)尾帶sb的過濾掉
names=['egon','alex','wupeiqi','yuanhao','lxx_sb'] names=[i for i in names if not i.endswith('sb')] print(names)3.3、保存剩下的名字的長(zhǎng)度
names=['egon','alex','wupeiqi','yuanhao','lxx_sb'] names=[len(i) for i in names ] print(names)3.4、求a.txt中最長(zhǎng)的行的長(zhǎng)度,需要使用max函數(shù)
a.txt文件內(nèi)容如下:
sdfsdfsdgffsdgfdshfdgfh 12231321311321 132132 321 321 321 32 sdaflkjsdlkfs sdflkjsdlkfjlsdjf sdlkfjlsddjflk1.
with open('a.txt','r',encoding='utf-8')as f:nums=[len(line) for line in f] print(nums) print(max(nums))2.
with open('a.txt','r',encoding='utf-8')as f:nums=(len(line) for line in f)# print(nums)#內(nèi)存地址# print(next(nums))#取出一個(gè)值# print(max(nums))#取出最大值print(max(len(line) for line in f)) #取出最大值?
二、模塊
1、什么是模塊?
模塊就是系統(tǒng)功能的結(jié)合體,在python中一個(gè)py文件就是一個(gè)模塊,比如module.py其中模塊名是module。
2、使用模塊
2.1、import導(dǎo)入模塊
首次導(dǎo)入模塊發(fā)生三件事:
1、創(chuàng)建一個(gè)模塊的名稱空間
2、執(zhí)行模塊對(duì)應(yīng)的文件,將產(chǎn)生的名字存放于1中的名稱空間
提示:from ... import ... 與import 前兩件事是一模一樣
3、在當(dāng)前執(zhí)行文件中拿到一個(gè)模塊名,該模塊名指向1的名稱空間
執(zhí)行:
import time import time import timetime.sleep(2)
強(qiáng)調(diào):之后的導(dǎo)入會(huì)直接引用第一次導(dǎo)入的結(jié)果,不會(huì)重復(fù)執(zhí)行文件
模塊中功能的執(zhí)行始終以模塊自己的名稱空間為準(zhǔn)
3、為模塊起別名
import time as sm sm.sleep(2) import time as mysql mysql.sleep(4)功能升級(jí)示例:
如果兩個(gè)模塊有類似功能,用戶可以選擇執(zhí)行
4、一行導(dǎo)入多個(gè)模塊
不推薦使用
import time , requests , _mysql推薦成多行
import time import requests import json5、模塊的使用之from ... import ...
首次導(dǎo)入模塊發(fā)生三件事:
1、創(chuàng)建一個(gè)模塊的名稱空間;2、執(zhí)行模塊對(duì)應(yīng)的文件,將產(chǎn)生的名字存放于1中名稱空間
提示:from ... import ... 與import 前兩件是一模一樣
3、在當(dāng)前名稱空間中直接拿到模塊中的名字,可以直接使用,不用加任何前綴
from ... import...名字,拿到的名字可以不加前綴直接使用,使用起來更加方便,
但問題是容易與當(dāng)前執(zhí)行文件中相同的名字沖突 注意:同import,執(zhí)行模塊中的功能,始終以模塊的名稱空間為準(zhǔn)
6、起別名
from requests import get as m print(m) 可以在一行導(dǎo)入多個(gè),'*'代表所有,如果在模塊中存在__all__=['get',....],那么'*'代表列表內(nèi)的一些功能 from requests import *7、模塊的設(shè)計(jì)者_(dá)_name__的使用
spam.py文件內(nèi)容:
# -*- coding:utf-8 -*- #spam.py print('from the spam.py') __all__=['money','read1']#from ... import * money=1000def read1():print('spam模塊:',money)def read2():print('spam模塊')read1()def change():global moneymoney=0# print(__name__) #__name__的值 #1、在文件被直接執(zhí)行的情況下,等于'__main__' #2、在文件被導(dǎo)入的情況下,等于模塊名if __name__ == '__main__':# print('文件被當(dāng)做腳本執(zhí)行了') read1() else:print('文件被導(dǎo)入了')8、模塊的搜索路徑
import sys print(sys.path)查看內(nèi)存中被導(dǎo)入的模塊
import sys print(sys.modules) 獲取到文件路徑列表:['D:\\mypython\\projects\\函數(shù)\\day14', 'D:\\mypython',
'D:\\Python\\Python36\\python36.zip', 'D:\\Python\\Python36\\DLLs',
'D:\\Python\\Python36\\lib', 'D:\\Python\\Python36',
'D:\\Python\\Python36\\lib\\site-packages']
第一條路徑是:此文件的執(zhí)行路徑
可以看做python文件
因此模塊的查找順序是:
1、 內(nèi)存中已經(jīng)加載的模塊
2、 內(nèi)置模塊
3、 sys.path路徑中包含的模塊 import sys sys.path.append(r'D:\mypython\projects\函數(shù)\day14')import spam read1()
強(qiáng)調(diào):sys.path的第一路徑就是當(dāng)前執(zhí)行文件所在的文件夾
?
轉(zhuǎn)載于:https://www.cnblogs.com/happyfei/p/9428125.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
- 上一篇: 进程浅析
- 下一篇: poj-2406(kmp水题)