1、import和from…improt
1.1、
- import :導入一個模塊,(相當於導入的是一個文件夾,是個相對路徑);
- from…import:導入了一個模塊中的一個函數(相當於導入的是一個文件夾中的文件,是個絕對路徑)。
1.2、使用方法與差異
example模塊:
example.py
:
def print_func( val ):
print "Hello : ", val
return
- 1)import引入一個模塊後,使用時需要包括模塊名,有些類似C++裏實例化後調用函數。使用 import 引入並調用 example模塊的正確方法:
#!/usr/bin/python
#-*- coding: UTF-8 -*-
#導入模塊
import example
#現在可以調用模塊裏包含的函數了
example.print_func(" World ")#使用模塊時,需包括模塊名
2)使用 from … import 模塊的正確方法:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 導入模塊
from example import print_func
# 現在可以調用模塊裏包含的函數了
print_func("World")#不需要包括模塊名
PS:一般來說,不建議使用from ... import *
,這樣會導致命名空間混亂,同時使得代碼可閱讀性下降。使用from ... import
能夠比較清晰看到引用了模塊的什麼方法。
1.3、幾種導入方式
#主要包括以下幾種導入方式:
1、import moduels(模塊名字)
#導入整個模塊,這種導入方式比較佔用內存
2、import moduels (模塊名字) as XX
#這裏是導入整個模塊的同時給它取一個別名,因爲有些模塊名字比較長,用一個縮寫的別名代替在下次用到它時就比較方便
3、from modules(模塊名字) import func(方法)
#從一個模塊裏導入方法,你要用到模塊裏的什麼方法就從那個模塊裏導入那個方法,這樣佔用的內存就比較少
也可以用別名表示 :from modules(模塊名字) import func(方法)as XX
4、from package.modules import func(方法)
#從一個包的模塊裏導入方法 這個方法跟上面那種基本一樣,佔用的內存也比較少
也可以用別名表示,from modules(模塊名字) import func(方法)as XX
2、__init__.py
#TODO
假設工程目錄如下圖,且每一個文件夾下都有一個__init__.py
文件。
a.py
文件的內容爲:
print("This is alpha!")
在文件夾mypackage
同級創建test.py
並輸入:
from mypackage.alpha import a
則輸出爲:
This is alpha!