1.模塊導(dǎo)入
將代碼按照不同的功能拆分放到不同的.py文件中,每個(gè).py文件就是一個(gè)模塊。不同模塊中的變量名可以相同,他們不會(huì)受影響。在創(chuàng)建許許多多模塊后,我們可能希望將某些功能相近的文件組織在同一文件夾下,這里就需要運(yùn)用包的概念了。
包是帶有__init__.py文件的文件夾。包必須有__init__.py文件,不然他就是個(gè)文件夾。包是用來(lái)區(qū)分不同類(lèi)型的模塊,不同包中的模塊名可以相同,他們不會(huì)相互受影響。包下可以還有包(子包),如同子文件夾
com/ 頂層包
? ? __init__.py? ? ? ? ? ? ? 初始化 com包
? ? comtest.py? ? ? ? ? ? ? com 下comtest模塊
? ? woodman/? ? ? ? ? ? ? ? com下的子包
? ? ? ? ? ? __init__.py
? ? ? ? ? ? woodtest.py
? ? ? ? ? ? ...
? ? gif/? ? ? ? ? ? ? ? ? ? 圖片處理包
? ? ? ? ? ? __init__.py
? ? ? ? ? ? gifecho.py
? ? ? ? ? ? giftest.py? ? ? 注意添加代碼
? ? ? ? ? ? ...
? ? modle/? ? ? ? ? ? ? ? ? modle子包
? ? ? ? ? ? __init__.py
? ? ? ? ? ? model.py
import... as...
import 模塊路徑.文件名 as 別名,當(dāng)文件在當(dāng)前目錄下或PATH環(huán)境變量下,可以直接import 文件名,否則要從項(xiàng)目根目錄下開(kāi)始指定路徑。如果要同時(shí)導(dǎo)入多個(gè)模塊,只需要在模塊名之前用逗號(hào)進(jìn)行分隔:import module1,module2,module3....別名,直接引入文件名可以不用別名,如果帶模塊路徑引入最好加上別名,使用時(shí)直接 【別名. 】使用
在用import語(yǔ)句導(dǎo)入模塊時(shí)最好按照以下的順序:
1、python 標(biāo)準(zhǔn)庫(kù)模塊? ? ?2、python 第三方模塊? ? ? 3、自定義模塊
import math? ? ? ?# 引入math模塊,系統(tǒng)自帶模塊都在PATH下
import com.gif.gifecho as gif? ? ? ? ?# 引入gifecho 模塊
from ... import ...
from 模塊路徑.文件名 import 變量名\函數(shù)\類(lèi)名
from com.gif.giftest import *? ? ? ? ? ? ?# 引入giftest.py 下的全部
from com.gif.giftest import add? ? ? ? # 只引入add函數(shù)
from com.gif.giftest import giftest? ? # 只引入giftest類(lèi)
深入模塊http://www.runoob.com/python3/python3-module.html(以后補(bǔ)充)
2.面向?qū)ο?/h1>
把程序看做不同的對(duì)象相互調(diào)用,是一種對(duì)具體事務(wù)的抽象模型。Python中一切都是對(duì)象。面向?qū)ο缶幊套罨咎卣魇穷?lèi)和實(shí)例。類(lèi)是用于定義抽象的對(duì)象模型,實(shí)例是根據(jù)類(lèi)創(chuàng)建的對(duì)象。
類(lèi)(Class): 用于定義抽象的對(duì)象模型,它是描述具有相同的屬性和方法的對(duì)象的集合。它定義了該集合中每個(gè)對(duì)象所共有的屬性和方法。對(duì)象是類(lèi)的實(shí)例。
類(lèi)屬性(類(lèi)變量):類(lèi)屬性在整個(gè)實(shí)例化的對(duì)象中是公用的。類(lèi)屬性定義在類(lèi)中且在函數(shù)體方法之外。類(lèi)屬性通常不作為實(shí)例變量使用。
方法:類(lèi)中定義的函數(shù)。
實(shí)例屬性(實(shí)例變量):只做用于當(dāng)前實(shí)例的變量屬性。
方法重寫(xiě):如果從父類(lèi)繼承的方法不能滿足子類(lèi)的需求,可以對(duì)其進(jìn)行改寫(xiě),這個(gè)過(guò)程叫方法的覆蓋(override),也稱(chēng)為方法的重寫(xiě)。
實(shí)例化:創(chuàng)建一個(gè)類(lèi)的實(shí)例,類(lèi)的具體對(duì)象。
實(shí)例:根據(jù)類(lèi)定義的抽象模型創(chuàng)建出來(lái)的具體對(duì)象。
對(duì)象:通過(guò)類(lèi)定義的數(shù)據(jù)結(jié)構(gòu)實(shí)例。對(duì)象包括兩個(gè)數(shù)據(jù)成員(類(lèi)變量和實(shí)例變量)和方法,其實(shí)他就是實(shí)例。
數(shù)據(jù)成員:類(lèi)變量或者實(shí)例變量用于處理類(lèi)及其實(shí)例對(duì)象的相關(guān)的數(shù)據(jù)。
繼承:即一個(gè)派生類(lèi)(derived class)繼承基類(lèi)(base class)的字段和方法。繼承也允許把一個(gè)派生類(lèi)的對(duì)象作為一個(gè)基類(lèi)對(duì)象對(duì)待。
class person(object):
? address = '中國(guó)'? ? # 類(lèi)屬性,沒(méi)個(gè)實(shí)例的公共屬性
? def __init__(self, name, sex, age):?
? ? ? self.name = name? ? ? ?# 實(shí)例屬性
? ? ? self.sex = sex? ? ? ? ? ? ? # 實(shí)例屬性
? ? ? self.age = age? ? ? ? ? ? # 實(shí)例屬性
? def dance(self):? ? ? ? ? # 方法
? ? ? print(self.name, '跳了一場(chǎng)舞')
hong = person('小紅', '女', 18)? ? # 實(shí)例化小紅,將實(shí)例化的對(duì)象賦值給變量hong
ming = person('小明', '男', 26)
hua = person('小花', '女', 22)
類(lèi):根據(jù)共有特征定義一個(gè)類(lèi)(抽象對(duì)象模型)<人>類(lèi)的相同屬性有姓名、性別、年齡實(shí)例:根據(jù)<人>類(lèi)可以創(chuàng)建不同的人,如【小明】、【小紅】等具有自己相應(yīng)特征的人,【小明】、【小紅】就是實(shí)例
類(lèi)的私有屬性:兩個(gè)下劃線開(kāi)頭,聲明該屬性為私有,不能在類(lèi)地外部被使用或直接訪問(wèn)。在類(lèi)內(nèi)部的方法中使用時(shí)?self.__private_attrs。
類(lèi)的方法:在類(lèi)地內(nèi)部,使用 def 關(guān)鍵字來(lái)定義一個(gè)方法,與一般函數(shù)定義不同,類(lèi)方法必須包含參數(shù)?self,且為第一個(gè)參數(shù),self?代表的是類(lèi)的實(shí)例。
類(lèi)的私有方法:兩個(gè)下劃線開(kāi)頭,聲明該方法為私有方法,只能在類(lèi)的內(nèi)部調(diào)用 ,不能在類(lèi)地外部調(diào)用。self.__private_methods。