python全栈开发 * 31知识点汇总 * 180716
生活随笔
收集整理的這篇文章主要介紹了
python全栈开发 * 31知识点汇总 * 180716
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
31 模塊和包
一.模塊
(一)模塊的種類:內(nèi)置模塊,自定義模塊,擴(kuò)展模塊第三方模塊
(二)自定義模塊
1.模塊的創(chuàng)建 : 新建一個py文件.
2.模塊名 : 模塊名需要符合變量的命名規(guī)范.
3.模塊的導(dǎo)入 import: (注意:導(dǎo)入模塊時,python報錯提示不可靠;import空格 文件名 不帶.py.)
(1).導(dǎo)入過程做了什么事?
相當(dāng)于執(zhí)行了一個被導(dǎo)入的py文件
(2).會重復(fù)導(dǎo)入嗎?
不會,所有被導(dǎo)入的模塊都會存在sys.modules中,這個字典中的key是這個模塊的名字,value是模塊的內(nèi)存地址
(3).導(dǎo)入后可以直接使用這個模塊中的函數(shù)和變量, 模塊名.函數(shù)或變量名
每一個模塊的導(dǎo)入都會創(chuàng)建一個屬于自己的命名空間.
(4).導(dǎo)入模塊時發(fā)生了什么?
創(chuàng)建一個屬于這個模塊的命名空間;
執(zhí)行這個模塊中的代碼;
創(chuàng)建一個引用來調(diào)用這個模塊命名空間中的名字;
將這個模塊的的內(nèi)存地址存儲在sys.modules中.
(5)為模塊起別名.
import 模塊名 as m
以上操作為導(dǎo)入模塊重命名,重命名后新的名字會存儲在內(nèi)存空間中,作為模塊的引用,但原模塊名不能在文件中使用.
使用情況有兩種:
a: 模塊名較長時可以使用,節(jié)省代碼,增強(qiáng)可讀性.
b: 兩個模塊提供的功能相同.
序列化json pickle
你提供序列化功能,幫助用戶對***進(jìn)行序列化
def dump(somthing,m = 'json'):
if m == 'json':
import json as m
else:
import pickle as m
m.dumps(somthing)
數(shù)據(jù)庫
oracle oracle_db
mysql mysql_db
if db_name=="mysql":
import mysql_db as db
elif db_name=="oracle":
import oracle_bd as db
db.connect()
db.exec()
(6)導(dǎo)入多個模塊
導(dǎo)入的模塊都寫在文件的最開始;
導(dǎo)入順序:先導(dǎo)入內(nèi)置模塊,再導(dǎo)入擴(kuò)展模塊,最后導(dǎo)入自定義模塊;
格式:分開寫,導(dǎo)入的各模塊中間空一行;
另一種寫法: 寫一行:import os,sys,flash
重命名:import os as o,sys as s,flask as f
4.導(dǎo)入模塊 from 模塊名 import變量名(方法名)
沒被導(dǎo)入的其它名字不能用了
(1)導(dǎo)入過程中發(fā)生什么事:
執(zhí)行整個被導(dǎo)入的模塊;
(2) 創(chuàng)建一個命名空間 ,并把模塊中的所有名字都存在命名空間中;
(3)導(dǎo)入后, 使用模塊中的名字不需要用 模塊名.函數(shù)名或變量名 ,
而是導(dǎo)入什么名字就能用什么名字 沒有導(dǎo)入的名字不能用.
(4)導(dǎo)入多個名字
from 模塊名 import 變量名,變量名 ( 寫一行)
from 模塊名 import 變量名
from 模塊名 import 變量名 (分開寫)
(5)重命名
from 模塊名 import 變量名 as s ,變量名 as m
(6)* 和__all__
from 模塊名 import * (* 導(dǎo)入全部變量名 一般不用)
(7)情況分析
如果模塊中有20個方法,只用一個,用from 模塊名import 方法名;
如果模塊中有20個方法,用十個,用import方法;
import* 不定義__all__,*可以導(dǎo)入模塊中的所有名字,,如果有__all__=[ 變量名,變量名] *只可以導(dǎo)入出現(xiàn)在__all__列表中的變量名.
(三)模塊的循環(huán)作用 (互相引用)==>直接報錯
1.依賴倒置原則: 高層不應(yīng)該依賴低層模塊.
2.a引用b,b是a的高層.
(四)模塊的加載與修改
1.模塊一旦引入并加載完,再改導(dǎo)入模塊中的內(nèi)容,當(dāng)前文件中不會改變還是用原值.
2.如果想改,import importlib (內(nèi)置模塊)
import importlib
importlib.reload(模塊名) 使修改生效
(五)把模塊當(dāng)做腳本來執(zhí)行
(六)模塊的搜索路徑
二.包
(一)導(dǎo)入模塊
(二)導(dǎo)入包
(三)絕對導(dǎo)入
(四)相對導(dǎo)入
(五)__all__和*
一.模塊
(一)模塊的種類:內(nèi)置模塊,自定義模塊,擴(kuò)展模塊第三方模塊
(二)自定義模塊
1.模塊的創(chuàng)建 : 新建一個py文件.
2.模塊名 : 模塊名需要符合變量的命名規(guī)范.
3.模塊的導(dǎo)入 import: (注意:導(dǎo)入模塊時,python報錯提示不可靠;import空格 文件名 不帶.py.)
(1).導(dǎo)入過程做了什么事?
相當(dāng)于執(zhí)行了一個被導(dǎo)入的py文件
(2).會重復(fù)導(dǎo)入嗎?
不會,所有被導(dǎo)入的模塊都會存在sys.modules中,這個字典中的key是這個模塊的名字,value是模塊的內(nèi)存地址
(3).導(dǎo)入后可以直接使用這個模塊中的函數(shù)和變量, 模塊名.函數(shù)或變量名
每一個模塊的導(dǎo)入都會創(chuàng)建一個屬于自己的命名空間.
(4).導(dǎo)入模塊時發(fā)生了什么?
創(chuàng)建一個屬于這個模塊的命名空間;
執(zhí)行這個模塊中的代碼;
創(chuàng)建一個引用來調(diào)用這個模塊命名空間中的名字;
將這個模塊的的內(nèi)存地址存儲在sys.modules中.
(5)為模塊起別名.
import 模塊名 as m
以上操作為導(dǎo)入模塊重命名,重命名后新的名字會存儲在內(nèi)存空間中,作為模塊的引用,但原模塊名不能在文件中使用.
使用情況有兩種:
a: 模塊名較長時可以使用,節(jié)省代碼,增強(qiáng)可讀性.
b: 兩個模塊提供的功能相同.
序列化json pickle
你提供序列化功能,幫助用戶對***進(jìn)行序列化
def dump(somthing,m = 'json'):
if m == 'json':
import json as m
else:
import pickle as m
m.dumps(somthing)
數(shù)據(jù)庫
oracle oracle_db
mysql mysql_db
if db_name=="mysql":
import mysql_db as db
elif db_name=="oracle":
import oracle_bd as db
db.connect()
db.exec()
(6)導(dǎo)入多個模塊
導(dǎo)入的模塊都寫在文件的最開始;
導(dǎo)入順序:先導(dǎo)入內(nèi)置模塊,再導(dǎo)入擴(kuò)展模塊,最后導(dǎo)入自定義模塊;
格式:分開寫,導(dǎo)入的各模塊中間空一行;
另一種寫法: 寫一行:import os,sys,flash
重命名:import os as o,sys as s,flask as f
4.導(dǎo)入模塊 from 模塊名 import變量名(方法名)
沒被導(dǎo)入的其它名字不能用了
(1)導(dǎo)入過程中發(fā)生什么事:
執(zhí)行整個被導(dǎo)入的模塊;
(2) 創(chuàng)建一個命名空間 ,并把模塊中的所有名字都存在命名空間中;
(3)導(dǎo)入后, 使用模塊中的名字不需要用 模塊名.函數(shù)名或變量名 ,
而是導(dǎo)入什么名字就能用什么名字 沒有導(dǎo)入的名字不能用.
(4)導(dǎo)入多個名字
from 模塊名 import 變量名,變量名 ( 寫一行)
from 模塊名 import 變量名
from 模塊名 import 變量名 (分開寫)
(5)重命名
from 模塊名 import 變量名 as s ,變量名 as m
(6)* 和__all__
from 模塊名 import * (* 導(dǎo)入全部變量名 一般不用)
(7)情況分析
如果模塊中有20個方法,只用一個,用from 模塊名import 方法名;
如果模塊中有20個方法,用十個,用import方法;
import* 不定義__all__,*可以導(dǎo)入模塊中的所有名字,,如果有__all__=[ 變量名,變量名] *只可以導(dǎo)入出現(xiàn)在__all__列表中的變量名.
(三)模塊的循環(huán)作用 (互相引用)==>直接報錯
1.依賴倒置原則: 高層不應(yīng)該依賴低層模塊.
2.a引用b,b是a的高層.
(四)模塊的加載與修改
1.模塊一旦引入并加載完,再改導(dǎo)入模塊中的內(nèi)容,當(dāng)前文件中不會改變還是用原值.
2.如果想改,import importlib (內(nèi)置模塊)
import importlib
importlib.reload(模塊名) 使修改生效
(五)把模塊當(dāng)做腳本來執(zhí)行
(六)模塊的搜索路徑
二.包
(一)導(dǎo)入模塊
(二)導(dǎo)入包
(三)絕對導(dǎo)入
(四)相對導(dǎo)入
(五)__all__和*
轉(zhuǎn)載于:https://www.cnblogs.com/J-7-H-2-F-7/p/9326486.html
總結(jié)
以上是生活随笔為你收集整理的python全栈开发 * 31知识点汇总 * 180716的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsonp的原理?
- 下一篇: websocket python爬虫_p