python中使用什么导入模块-python—模块导入和类
1.查詢模塊:按目錄依次查找需要導入的模塊,模塊目錄一般在:/usr/lib64/python2.7
In [2]: sys.path
Out[2]:
["",
"/usr/bin",
"/usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg",
"/usr/lib64/python27.zip",
"/usr/lib64/python2.7",
"/usr/lib64/python2.7/plat-linux2",
"/usr/lib64/python2.7/lib-tk",
"/usr/lib64/python2.7/lib-old",
"/usr/lib64/python2.7/lib-dynload",
"/usr/lib64/python2.7/site-packages",
"/usr/lib/python2.7/site-packages",
"/usr/lib/python2.7/site-packages/python_memcached-1.58-py2.7.egg",
"/usr/lib/python2.7/site-packages/IPython/extensions",
"/root/.ipython"]
2.自定義模塊目錄
方法一:sys.path.append(),一般加在目錄列表最后
In [3]: sys.path.append("/root/python/")
In [4]: sys.path
Out[4]:
["",
"/usr/bin",
"/usr/lib64/python2.7/site-packages/MySQL_python-1.2.5-py2.7-linux-x86_64.egg",
"/usr/lib64/python27.zip",
"/usr/lib64/python2.7",
"/usr/lib64/python2.7/plat-linux2",
"/usr/lib64/python2.7/lib-tk",
"/usr/lib64/python2.7/lib-old",
"/usr/lib64/python2.7/lib-dynload",
"/usr/lib64/python2.7/site-packages",
"/usr/lib/python2.7/site-packages",
"/usr/lib/python2.7/site-packages/python_memcached-1.58-py2.7.egg",
"/usr/lib/python2.7/site-packages/IPython/extensions",
"/root/.ipython",
"/root/python/"]
方法二:修改環(huán)境變量,一般加在目錄列表前面vim /root/.bashrc # 加入 export PYTHONPATH=/root/python
source /root/.bashrc # 刷新
例子:統(tǒng)計一個文件,行數(shù)、單詞數(shù)、字符數(shù)(和wc命令相同效果)
說明:為了避免使用split切割之后,最后多出一個空字符串,而使用count()#/usr/bin/env python
def count(s):
char = len(s)
words = len(s.split())
lines = s.count(" ")
print lines,words,char
file1 = open("/etc/passwd","r")
s = file1.read()
count(s)
3.腳本形式,導入模塊,腳本名字不能是數(shù)字,會產(chǎn)生一個編譯文件
例子:
#!/usr/bin/env python
import wc
說明:目錄下生產(chǎn)編譯文件:wc.pyc
4.py和wc.py的__name__內(nèi)置變量不一樣,前者是wc,或者是__main__,修改wc.py,執(zhí)行自己時,輸出自己的結(jié)果,被調(diào)用時,執(zhí)行不顯示源結(jié)果:
wc.py:
#/usr/bin/env python
def count(s):
char = len(s)
words = len(s.split())
lines = s.count(" ")
print lines,words,char
if __name__ == "__main__":
file1 = open("/etc/passwd","r")
s = file1.read()
count(s)
test.py:
#!/usr/bin/env python
import wc
s = open("/root/python/10.py","r").read()
wc.count(s)
5.包的形式,導入模塊
四種導入方法:在包目錄dir下創(chuàng)建一個__init__.py空文件
方法一:
from dir import wc
wc.count("abc")
方法二:
import dir.wc
dir.wc.count("abc")
方法三:
from dir.wc import count
count("abc")
方法四:別名from dir.wc import count as count
count("abc")
6.面向?qū)ο缶幊?#xff1a;python、java、C++;面向過程編程:C、函數(shù)式編程、shell
類的(靜態(tài))屬性:(人類的五官,理解為變量)
類的(動態(tài))方法:(人類吃穿住行,理解為一個函數(shù))
對象:類的實例化,之后才能有屬性和方法
7.類的創(chuàng)建
類的方法中,至少有一個參數(shù)self
調(diào)用屬性時,不帶括號
調(diào)用方法時,使用括號;方法調(diào)用屬性時,至少有一個self參數(shù)
屬性調(diào)用其他方法:類名.屬性名
例子:class People():
color = "yellow"
def think(self): # 加上self表示是類的方法,不加則表示函數(shù)
self.color = "black" # 加上self表示是類的屬性
print ("My color is %s "% (self.color))
ren = People() # 類的實例化
print ren.color # 類的屬性外部調(diào)用
ren.think() # 類的方法外部調(diào)用,如加上print,則多一個默認return值none
運行結(jié)果:
yellow
My color is black
8.私有屬性在定義的類中的內(nèi)部函數(shù)中被調(diào)用
例子:class People():
color = "yellow"
__age = 27
def think(self):
self.color = "black"
print self.__age # 內(nèi)部函數(shù)調(diào)用類的私有屬性,外部函數(shù)不能直接調(diào)用
print ("My color is %s "% (self.color))
ren = People()
print ren.color
ren.think()
9.外部調(diào)用私有屬性(格式:實例化名._類名屬性名),一般只是測試用
例子:class People():
color = "yellow"
__age = 27
def think(self):
self.color = "black"
print self.__age
print ("My color is %s "% (self.color))
ren = People()
print ren.color
ren.think()
print ren._People__age # 外部調(diào)用私有屬性
10.類的方法
公有方法:內(nèi)部和外部都可以調(diào)用
私有方法:內(nèi)部函數(shù)調(diào)用
動態(tài)方法:classmethod()函數(shù)處理,沒有被調(diào)用的類的其他參數(shù)不會加載進內(nèi)存中
靜態(tài)方法:
方法的定義和函數(shù)一樣,但是需要把self作為第一個參數(shù),如果還是有其他參數(shù),繼續(xù)加上;類實例化之后,采用“類名.方法名()”調(diào)用
例子1:私有方法調(diào)用class People():
color = "yellow"
__age = 27
def __think(self):
self.color = "black"
print self.__age
print ("My color is %s "% (self.color))
def test(self):
self.__think() # 類的私有方法調(diào)用
ren = People()
ren.test() # 類的私有方法調(diào)用
例子2:動態(tài)方法調(diào)用
class People():
color = "yellow"
__age = 27
def __think(self):
self.color = "black"
print self.__age
print ("My color is %s "% (self.color))
def test(self):
print ("Testing...")
cm = classmethod(test) # 動態(tài)方法定義
ren = People()
ren.cm() # 動態(tài)方法調(diào)用
例子3:靜態(tài)方法調(diào)用:
類函數(shù)不帶self參數(shù),該函數(shù)使用staticmethod()函數(shù)處理(如果不處理,缺少self,,調(diào)用時會報錯),加載關(guān)于這個類的所有東西
class People():
color = "yellow"
__age = 27
def __think(self):
self.color = "black"
print self.__age
print ("My color is %s "% (self.color))
def test(): # 內(nèi)部函數(shù),不帶self
print ("Testing...")
#print People.color # 因為沒有self,不能調(diào)用該類的屬性
cm = staticmethod(test) # 靜態(tài)方法定義
ren = People()
ren.cm() # 靜態(tài)方法調(diào)用
例子4:加裝飾器,只對下面的一個函數(shù)起作用,就可以使用類的方法調(diào)用了
class People():
color = "yellow"
__age = 27
def __think(self):
self.color = "black"
print self.__age
print ("My color is %s "% (self.color))
@classmethod # 加裝飾器,可以通過類來調(diào)用
def test(self): # 動態(tài)方法,帶self
print ("Testing...")
@staticmethod # 加裝飾器
def test1(): # 靜態(tài)方法,不帶self
print ("Testing1..")
ren = People()
People.test() # 類的方法調(diào)用
People.test1() # 類的方法調(diào)用
11.定義內(nèi)部類
方法一:
class People():
color = "yellow"
__age = 27
class Chinese(object): # 定義內(nèi)部類
country = "I am chinese"
hzp = People.Chinese() # 外部類.內(nèi)部類實例化
print hzp.country # 實例化后,調(diào)用內(nèi)部類的屬性
方法二:
class People():
color = "yellow"
__age = 27
class Chinese(object):
country = "I am chinese"
hzp = People() # 先外部類實例化
hzp2 = hzp.Chinese() # 再內(nèi)部類實例化
print hzp2.country
方法三:
class People():
color = "yellow"
__age = 27
class Chinese(object):
country = "I am chinese"
print People.Chinese.country # 類的方法
print People.Chinese().country # 相當于People.Chinese()實例化,最后調(diào)用屬性
12.構(gòu)造函數(shù)和析構(gòu)函數(shù)
構(gòu)造函數(shù)用于初始化類的內(nèi)部狀態(tài),提供的函數(shù)是__init__(),不給出則會提供默認方法
析構(gòu)函數(shù)用于釋放占用的資源,提供的函數(shù)是__del__(),不給出則會提供默認方法
1)__str__(self):只能使用return,不能使用print,無需調(diào)用和打印,會自動調(diào)用
例子1:
class People():
color = "yellow"
__age = 27
class Chinese(object):
country = "I am chinese"
def __str__(self): # 定義__str__(self)
return("This is a test") # return返回結(jié)果,不能使用print
ren = People()
print ren # 類實例化后,自動調(diào)用
運行結(jié)果:
This is a test
2)__init__():初始化值,不需調(diào)用,實例化后,自動執(zhí)行,也可以傳值
例子2:
class People():
color = "yellow"
__age = 27
class Chinese(object):
country = "I am chinese"
def __str__(self):
return("This is a test")
def __init__(self):
self.color = "black"
ren = People()
print ren.color # 實例化后,變成“black”
print People.color # 類直接調(diào)用,color值不變
運行結(jié)果:
black
yellow
3)__del__():在腳本最后執(zhí)行,釋放資源;如果沒有析構(gòu)函數(shù)釋放資源,也沒關(guān)系,python通過gc模塊,實現(xiàn)垃圾回收機制
例子3:
class People():
def __init__(self): # 構(gòu)造函數(shù),打開文件
print("Initing...")
self.fd = open("/etc/hosts","r"):
def __del__(self): # 析構(gòu)函數(shù),關(guān)掉文件
print("End")
self.fd.close()
ren = People()
ren
運行結(jié)果:
Initing...
End
總結(jié)
以上是生活随笔為你收集整理的python中使用什么导入模块-python—模块导入和类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux运行好麻烦,解析用Linux非
- 下一篇: java数组的四个要素_Java零基础系