python學習筆記之——python模塊

一、python模塊

Python 模塊(Module),是一個 Python 文件,以 .py 結尾,包含了 Python 對象定義和Python語句。python

模塊讓你可以有邏輯地組織你的 Python 代碼段。shell

把相關的代碼分配到一個模塊裏能讓你的代碼更好用,更易懂。函數

模塊能定義函數,類和變量,模塊裏也能包含可執行的代碼。測試

模塊引入spa

(1)import語句:import module1[, module2[,... moduleN]code

引入模塊必須在文件的最開始引用。對象

一個模塊只會被導入一次,無論你執行了多少次import。這樣能夠防止導入模塊被一遍又一遍地執行。blog

導入模塊以後,若是要使用模塊內的函數,必需要這樣使用:模塊名.函數名作用域

舉例:源碼

# coding=UTF-8
import time print time.time()

(2)From…import 語句:

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

from modname import *

Python 的 from 語句讓你從模塊中導入一個指定的部分到當前命名空間中。

from modname import name是導入指定的一部分,from modname import *是導入模塊的全部內容。

import modname和from modname import*的區別是:

import modname導入的,必須這樣使用:模塊名.函數名

from modname import*導入的,能夠直接使用:函數名

舉例:

# coding=UTF-8
from time import *
print time()

輸出:

1514445265.6

二、模塊搜索路徑

當你導入一個模塊,Python 解析器對模塊位置的搜索順序是:

  • 當前目錄
  • 若是不在當前目錄,Python 則搜索在 shell 變量 PYTHONPATH 下的每一個目錄。
  • 若是都找不到,Python會察看默認路徑。UNIX下,默認路徑通常爲/usr/local/lib/python/。

模塊搜索路徑存儲在 system 模塊的 sys.path 變量中。變量裏包含當前目錄,PYTHONPATH和由安裝過程決定的默認目錄。

 三、命名空間和做用域

變量是擁有匹配對象的名字(標識符)。

命名空間是一個包含了變量名稱們(鍵)和它們各自相應的對象們(值)的字典。

一個 Python 表達式能夠訪問局部命名空間和全局命名空間裏的變量。若是一個局部變量和一個全局變量重名,則局部變量會覆蓋全局變量。

每一個函數都有本身的命名空間。類的方法的做用域規則和一般函數的同樣。

Python 會智能地猜想一個變量是局部的仍是全局的,它假設任何在函數內賦值的變量都是局部的。

所以,若是要給函數內的全局變量賦值,必須使用 global 語句。

global VarName 的表達式會告訴 Python, VarName 是一個全局變量,這樣 Python 就不會在局部命名空間裏尋找這個變量了。

例如,咱們在全局命名空間裏定義一個變量 Money。咱們再在函數內給變量 Money 賦值,而後 Python 會假定 Money 是一個局部變量。然而,咱們並無在訪問前聲明一個局部變量 Money,結果就是會出現一個 UnboundLocalError 的錯誤。

 四、Python中的包

包是一個分層次的文件目錄結構,它定義了一個由模塊及子包,和子包下的子包等組成的 Python 的應用環境。

簡單來講,包就是文件夾,但該文件夾下必須存在 __init__.py 文件, 該文件的內容能夠爲空。__int__.py用於標識當前文件夾是一個包。

考慮一個在 package_runoob 目錄下的 runoob1.py、runoob2.py、__init__.py 文件,test.py 爲測試調用包的代碼,舉例以下:

(1)包結構:

(2)runoob1.py源碼

# -*- coding:UTF-8 -*-
def runoob1(): print "I'm runoob1"

(3)runoob2.py源碼

# -*- coding:UTF-8 -*-
def runoob2(): print "I'm runoob2"

(4)test.py源碼

#!/usr/bin/python # -*- coding: UTF-8 -*- # 文件名:test.py
from package_runoob.runoob1 import runoob1 from package_runoob.runoob2 import runoob2 runoob1() runoob2()

(5)test.py執行結果

package_runoob 初始化 I'm runoob1
I'm runoob2
相關文章
相關標籤/搜索