import 和 from … import 模块的变量、方法引用差异
还是上面例子中的模块 support.py:
def print_func( par ): print "Hello : ", par return
使用 import 引入并调用 support 模块的正确方法:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 导入模块 import support # 现在可以调用模块里包含的函数了 support.print_func("Runoob")
提示:并不能直接使用 print_func() 实现调用,必须将引入的模块名称当作一个对象,调用这个模块对象下的方法 print_func,这时才能实现调用。
使用 from … import 模块的正确方法:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 导入模块 from support import * # 现在可以调用模块里包含的函数了 print_func("Runoob")
提示:可以直接使用 print_func() 实现调用。
笔者建议:一般来说,推荐使用 import 语句,避免使用 from … import,因为这样可以使你的程序更加易读,也可以避免名称冲突。
1. 调用模块属性的区别
import 模块名 模块名.xxx = 引用 from 模块名 import * xxx = 拷贝 # 能修改属性值
函数,类... : "import 模块名" 和 "from 模块名 import *" 都是引用。
2. 私有属性两种导入的区别
# . 类中的私有属性 # 本质做了一个名字重整 class test() self.__name
__name 名字重整成 _test__name。
_littlethree : 模块的私有属性(数据)。
- from 模块 import * : 导入模块时,会跳过私有属性;
- import 模块 : 通过引用可以访问私有属性
两个import语义有差异
import datetime print(datetime.datetime.now())
是引入整个datetime包
from datetime import datetime print(datetime.now())
是只引入datetime包里的datetime类
所以import之后前者是datetime这个包可见 后者是datetime.datetime这个类可见