初識python模塊

一、模塊

Python同java類似,也有模塊(包)的概念,防止同名稱文件無法區別等問題,可以簡單理解爲不同的文件夾。
導入模塊,關鍵在爲import。

模塊的導入有三種方法:

1、import 模塊名稱

例如,導入sys模塊:import sys,導入多級模塊:import dendy.web.utils等。

這種方法導入模塊後,當前命名空間建立了一個到該模塊的引用,訪問模塊的類、方法、屬性時,必須跟上模塊的全名稱,否則會出現TypeError: XXX object is not callable的錯誤,這種方法還能夠訪問模塊內部的私有屬性和方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!~/usr/bin/env python
# -*- coding:utf-8 -*-
 
'''
問候。
2015-1-7 15:57:08
'''
 
__author__ = 'dendy'
 
import greet
 
name = input('Please enter you name :')
# 能夠訪問模塊的所有方法
= greet.greet(name)
print(s)
= greet._hello(name)
print(s)
= greet._hi(name)
print(s)



2、from 模塊名稱 import 函數名稱、類等(*爲全部導入)

這種方式,導入的元素被直接加入到本地命名空間了,所以訪問的時候不需要加上模塊名稱。

* 表示,該模塊的所有公共對象(public objects)都被導入到 當前的名稱空間,也就是任何只要不是以”_”開始的東西都會被導入。

3、內建函數__import__('模塊名稱')

這種方式更靈活,可以講模塊名稱做成配置,然後用內建函數導入。

3中導入方式根據實際需要選擇,比如經常用的模塊,或者想導入特定的類或方法,選擇第二種;如果要導入的模塊與本地模塊有衝突,可以選擇第一種。

標準的模塊文件結構如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!~/usr/bin/env python
# -*- coding:utf-8 -*-
 
'''
問候模塊。
2015-1-7 15:57:08
'''
__author__ = 'dendy'
 
def _hello(name):
    return 'Hello, %s' % name
 
def _hi(name):
    return 'Hi, %s' % name
 
def greet(name):
    if len(name) > 3:
        return _hello(name)
    else:
        return _hi(name)

第一、二行均爲註釋,第一行標明可以運行在mac和Linux系統上,第二行標明瞭字符編碼。

第4-7行的內容,成爲文檔註釋,其實就是一個字符串,爲了使用多行採用符號"'''"來表示,文檔註釋可以使用特殊變量__doc__來獲取。

__author__變量,表明了模塊的作者信息。

然後開始纔是真正的代碼信息。

二、別名

可以使用as關鍵爲引入的模塊取一個別名,下次引入就可以直接使用別名了:

1
2
3
4
5
6
7
8
import greet as gt
name = input('Please enter you name :')
= gt.greet(name)
print(s)
= gt._hello(name)
print(s)
= gt._hi(name)
print(s)


三、作用域

Python中,私有元素均以"_"開頭,例如上邊的_hi(name)方法爲私有方法;而以"__"開頭的特殊元素,有着特殊的用途,我們變成的時候應該儘量少用,例如前邊的__author__變量,代表了模塊的作者信息等。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!~/usr/bin/env python
# -*- coding:utf-8 -*-
 
'''
問候。
2015-1-7 15:57:08
'''
 
__author__ = 'dendy'
 
# 採用這種方式導入後,只有公有信息會導入
from greet import *
 
name = input('Please enter you name :')
= greet(name)
print(s)
 
# NameError: name '_hello' is not defined
= _hello(name)
print(s)
# NameError: name '_hi' is not defined
= _hi(name)
print(s)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章