一、模塊
模塊的導入有三種方法:
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 :' ) #
能夠訪問模塊的所有方法 s = greet.greet(name) print (s) s = greet._hello(name) print (s) 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 :' ) s = gt.greet(name) print (s) s = gt._hello(name) print (s) 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 :' ) s = greet(name) print (s) #
NameError: name '_hello' is not defined s = _hello(name) print (s) #
NameError: name '_hi' is not defined s = _hi(name) print (s)
|