Python中包,模块导入的方法
2013-03-05 17:15
741 查看
Python中包,模块导入的方法
http://www.cnblogs.com/allenblogs/archive/2011/05/24/2055149.html
例如:
导入例子:
其实我更喜欢方法1, 因为方法2容易造成同名
例如:
from modname import fa, fb, fc
或者 from modname import *
建议:
1)如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import
2)如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import
3)如果模块包含的属性和方法与你的某个模块同名,你必须使用import module来避免名字冲突
4)尽量少用 from module import * ,因为判定一个特殊的函数或属性是从哪来的有些困难,并且会造成调试和重构都更困难。
例如
mymodule = __import__(’module_name’)
附注:
1)模块的内容都放在一个模块文件中,如 mymodule 的内容应该放在PYTHONPATH 目录下的一个mymodule.py中,C实现的除外
2)包可以将几个模块名称空间组织起来, 如A.b 就表示在包A中的一个子模块b
可以单独导入某一个子模块,如Python文档中给出的例子
import sound.effects.echo
这样必须使用全称对里面的对象进行引用,如
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
还可以使用下面的语句来加载echo子模块
from Sound.Effects import echo # 子模块
它在没有包前缀的情况下也可以使用, 所以它可以如下方式调用:
echo.echofilter(input, output, delay=0.7, atten=4)
不主张从一个包或模块中用import * 导入所有模块,因为这样的通常会导致可读性很差。
from Package import specific_submodule的用法并没有错,实际上这还是推荐的用法,除非导入的模块需要使用其它包中的同名子模块(the importing module needs to use submodules with the same name from different packages).
综上所述,一般情况应该使用import , 但有几个例外
1)module文档告诉你要用from-import的
2)导入一个包组件。需要一个包里面的某个子模块,一般用from A.b import c比import A.b.c 更方便 且不会冒混淆的危险.
http://www.cnblogs.com/allenblogs/archive/2011/05/24/2055149.html
1. import modname
这种方法使用时, 使用的时候要包含模块名. 类似C++的STL 要使用std::一样.例如:
# MyModule1.py def MyDoSomething(a) print(a) class MyClass1: myClassIndex = 1 def __init__(self, classIndex): self.myClassIndex = classIndex def DoSomething(self): print("MyClass Index is %d" %(self.myClassIndex))导入这模块,就可重用这些函数和变量。
导入例子:
# Caller1.py import MyModule1 print(__name__) # 打印本模块的名字 print(MyModule1.__name__) # 打印MyModule1模块的名字 MyModule1.MyDoSomething('Hi') # 调用MyModule1的MyDoSomething方法
2. from modname import funcname
类似C++中使用了 using names std;后就不需要std::一样其实我更喜欢方法1, 因为方法2容易造成同名
例如:
from modname import fa, fb, fc
或者 from modname import *
# Caller2.py from MyModule1 import MyDoSomething print(__name__) # 打印本模块的名字 print(MyModule1.__name__) # 打印MyModule1模块的名字 MyDoSomething('Hi') # 调用MyModule1的MyDoSomething方法 # 这里调用MyDoSomething就不需要包括模块名
建议:
1)如果你要经常访问模块的属性和方法,且不想一遍又一遍地敲入模块名,使用 from module import
2)如果你想要有选择地导入某些属性和方法,而不想要其它的,使用 from module import
3)如果模块包含的属性和方法与你的某个模块同名,你必须使用import module来避免名字冲突
4)尽量少用 from module import * ,因为判定一个特殊的函数或属性是从哪来的有些困难,并且会造成调试和重构都更困难。
3. 内建函数__import__()
还可以使用内建函数__import__()来导入模块. 两者的区别是,import 后面跟的必须是一个类型(type),而__import__() 的参数是一个字符串.例如
mymodule = __import__(’module_name’)
附注:
1)模块的内容都放在一个模块文件中,如 mymodule 的内容应该放在PYTHONPATH 目录下的一个mymodule.py中,C实现的除外
2)包可以将几个模块名称空间组织起来, 如A.b 就表示在包A中的一个子模块b
可以单独导入某一个子模块,如Python文档中给出的例子
import sound.effects.echo
这样必须使用全称对里面的对象进行引用,如
sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)
还可以使用下面的语句来加载echo子模块
from Sound.Effects import echo # 子模块
它在没有包前缀的情况下也可以使用, 所以它可以如下方式调用:
echo.echofilter(input, output, delay=0.7, atten=4)
不主张从一个包或模块中用import * 导入所有模块,因为这样的通常会导致可读性很差。
from Package import specific_submodule的用法并没有错,实际上这还是推荐的用法,除非导入的模块需要使用其它包中的同名子模块(the importing module needs to use submodules with the same name from different packages).
综上所述,一般情况应该使用import , 但有几个例外
1)module文档告诉你要用from-import的
2)导入一个包组件。需要一个包里面的某个子模块,一般用from A.b import c比import A.b.c 更方便 且不会冒混淆的危险.
相关文章推荐
- 用python实现从1加到100的三种方法: for循环,while循环,导入模块法
- Python创建模块及模块导入的方法
- Python 三种导入模块的方法和区别
- python 模块导入方法
- Python使用xlrd模块操作Excel数据导入的方法
- Python在不同目录下导入模块的方法
- python导入不同目录下模块的方法
- python:导入模块的三种不同方法,类似于import
- Python自定义模块导入方法
- python最简单直接的自定义模块导入方法
- python有三种导入模块的方法
- python 函数、模块、包及import导入方法
- python的模块导入机制和模块安装方法
- Python在不同目录下导入模块的实现方法
- python根据路径导入模块的两种方法:sys.path.append和imp.load_source
- Python导入模块或是库文件的方法
- python导入模块的4种方法
- python模块导入方法解析
- IronPython 与 c# 交互之导入Python模块的两种方法
- python 函数、模块、包及import导入方法