python 学习笔记10-----模块

1、模块搜索路径

import sys

sys.path

这个列表中保存了模块搜索路径,如果需要增加路径,可以通过append来增加列表元素

sys.modules,表明当前已经import了哪些模块和他们的路径

2、名字空间

包括有:内建名字空间、全局名字空间、局部名字空间,解释器,加载名字空间的顺序也是如此。

3、模块的导入

模块的导入方法如下,可以在as后面跟缩写,可选的,如果在代码的顶层导入,模块的作用域为全局的,如果在函数中导入,作用域仅作用域函数

import *** as ***

from *** import *** as ***

有些模块是自动导入的,可以通过sys.modules来查看

4、被导入到导入者作用域的名字

这里我们提供了两个模块的代码: 一个导入者, impter.py , 一个被导入者, imptee.py 。impter.py 使用 from-import 语句只创建了局部绑定。
#############
# imptee.py #
#############
foo = 'abc'
def show():
print 'foo from imptee:', foo
#############
# impter.py #
#############
from imptee import foo, show
show()
foo = 123
print 'foo from impter:', foo
show()
运行这个导入者程序, 我们发现从被导入者的观点看, 它的 foo 变量没有改变, 即使 我们在 importer.py 里修改了它。
foo from imptee: abc
foo from impter: 123
foo from imptee: abc
唯一的解决办法是使用 import 和完整的标识符名称(句点属性标识)。
#############
# impter.py #
#############
import imptee
imptee.show()
imptee.foo = 123
print 'foo from impter:', imptee.foo
imptee.show()
完成相应修改后, 结果如我们所料:
foo from imptee: abc
foo from impter: 123
foo from imptee: 123

5、globals() 和 locals()

globals() 和 locals() 内建函数分别返回调用者全局和局部名称空间的字典。

def foo():
print '\ncalling foo()...'
aString = 'bar'
anInt = 42
print "foo()'s globals:", globals().keys()
print "foo()'s locals:", locals().keys()
print "__main__'s globals:", globals().keys()
print "__main__'s locals:", locals().keys() 
foo()

结果:

__main__'s globals: ['__doc__', 'foo', '__name__', '__builtins__']
__main__'s locals: ['__doc__', 'foo', '__name__', '__builtins__']

calling foo()...
foo()'s globals: ['__doc__', 'foo', '__name__', '__builtins__']
foo()'s locals: ['anInt', 'aString']


6、包的绝对导入和相对导入

相对导入:

from Phone.Mobile.Analog import dial
from .Analog import dial
from ..common_util import setup
from ..Fax import G3.dial.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值