python从包中导入模块_Python中包,模块导入的方法

Python中包,模块导入的方法

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 更方便 且不会冒混淆的危险.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值