import 和 from … import 模块的变量、方法引用差异
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这个类可见
首先明确:尽量不要为了图省事使用from xxx import *
python中有两种导入模块的方式,一种是import xxx,另一种是from xxx import yyy,两者的区别在于,
第一种仅仅导入一个模块,并且将该模块执行了一遍,if __main__ =="__main__"里面的没有执行。同时,有在当前的命名空间中导入变量,需要通过xxx.yyy的方式使用导入模块中的变量、函数、类等;
第二种则将模块中的变量yyy导入了当前命名空间,因此使用时可以直接以yyy调用,使用这种导入方法时,需要注意当前的命名空间是否有重名的,from xxx import *这种方式尽量不要使用,因为这样就破坏了对命名空间的管理。
ps:使用from xxx import *时是不能导入以单下划线开头的保护属性和以双下划线开头的私有属性的

浙公网安备 33010602011771号