模塊

  • 導入模塊

a、模塊是一個包含全部定義的函數和變量的文件,其後綴名是.pypython

b、模塊能夠被別的程序引入,以使用該模塊中的函數等功能數據結構

  • import語句
#導入 c:\Python 中的 hello.py文件
import sys
sys.path.append('c:/Python') #在c盤下有個模塊/程序須要導入
import hello  #導入 hello.py文件

在 UNIX 系統中,不能只是簡單地將字符串'~/Python'添加到 sys.path中,必須使用完整的路徑(例如 /home/yourusername/python。),若是但願將這個操做自動完成,能夠使用 sys.path.expanduser('~/python')app

Python 3.0中使用 exec 從新載入模塊編輯器

import sys
sys.path.append('F:/PythonWrokPlace')  #文件所在目錄
import h,h1  #第一次導入時 h 輸出print的內容,h1在函數的模塊做用域內被定義,能夠訪問函數

h1.hello()  #經過:文件名.函數的方式訪問函數

 

  • __name__屬性

一個模塊被另外一個程序第一次引入時,其主程序將運行,若是想在模塊被引入時,模塊衆的某一程序塊不執行,能夠使用__name__屬性來使該模塊自身運行時執行函數

#定義一個h2.py,而且導入
#h2.py的具體內容
def hello():
    print 'hello,world'

def test():
    hello()

if __name__ == '__main__':test() #若是__name__的變量值是'__main__',則是做爲程序運行,
                                 # 若是爲導入模塊,則__name__的值是模塊名稱

        
#導入h2.py
import sys
sys.path.append('F:/PythonWrokPlace')
import h2

h2.hello()
h2.test()

 

  • 搜索路徑

搜索路徑是由一些目錄名組成的,Python解釋器就一次從這些目錄中去尋找所引入的模塊ui

#打印 sys.path 解釋器的搜索路徑
import sys,pprint
pprint.pprint(sys.path) #若是數據結構過大,不能在一行打印完成,能夠使用 pprint

#輸出
['F:\\PythonWrokPlace', 
 'F:\\PythonWrokPlace',
 'H:\\Anaconda\\python27.zip',
 'H:\\Anaconda\\DLLs',
 'H:\\Anaconda\\lib',
 'H:\\Anaconda\\lib\\plat-win',
 'H:\\Anaconda\\lib\\lib-tk',
 'H:\\Anaconda',
 'H:\\Anaconda\\lib\\site-packages',
 'H:\\Anaconda\\lib\\site-packages\\Sphinx-1.5.1-py2.7.egg',
 'H:\\Anaconda\\lib\\site-packages\\uniout-0.3.7-py2.7.egg',
 'H:\\Anaconda\\lib\\site-packages\\win32',
 'H:\\Anaconda\\lib\\site-packages\\win32\\lib',
 'H:\\Anaconda\\lib\\site-packages\\Pythonwin',
 'H:\\Anaconda\\lib\\site-packages\\setuptools-27.2.0-py2.7.egg']

 

  • from...import 語句

Python 的 from 語句從模塊中導入yield指定的部分到當前年的命名空間中spa

from modname import name1[,name2[,...nameN]]

#案例
from x import y

#這聲明不會將整個 x模塊導入當前的命名空間,它只是會將 x 裏的 y函數引入進來

 

  • From...import*語句

將一個模塊的全部內容全都導入到當前的命名空間,這種聲明不建議過多的使用code

from modname import*

 

  • dir()函數

內置的 dir() 能夠找到模塊內定義的全部名稱,以一個字符串列表的形式返回:ip

import sys,pprint
pprint.pprint(dir(sys))
#輸出
['__displayhook__',
 '__doc__',
 '__excepthook__',
 '__name__',] #省略輸入不少


#若是沒有給定的參數,那麼會羅列出當前定義的全部名稱
dir()
#輸出
['__builtins__',
 '__doc__',
 '__file__',
 '__name__',
 '__package__',
 'pprint',
 'sys']

 

a、包是一種管理 Python模塊命名空間的形式,採用"點模塊名稱",好比 A.B表示 包A中的子模塊B作用域

b、必須包含一個命名爲 __init__.py 的文件(模塊)

  • __all__變量
  • 幫助文檔、源代碼等
import copy
help(copy.copy)  #查看幫助信息

print '-----------'

print copy.copy.__doc__
print '--------------------------'

print range.__doc__  #查看幫助文檔

#使用源代碼
print copy.__file__  #查看源代碼的位置,用編輯器打開便可,若是文件名以.pyc結尾,只要查看.py結尾的文件
相關文章
相關標籤/搜索