本帖最后由 dingliu 于 2018-6-27 19:10 编辑
区别1:import导包时,需要使用包名.属性或方法的形式调用,from module import *可以直接使用属性名或方法调用
我自定义的一个moudle,里面有一个方法sayhi,还有一个变量version
[Python] 纯文本查看 复制代码 # Filename: text.py
def sayhi():
print('Hi this is mymodule speaking')
version='1.0'
引用这个module的两种方式
# 方式一:import module
[Python] 纯文本查看 复制代码 import text
text.sayhi()
#方式二:from module import *
[Python] 纯文本查看 复制代码 from text import *
sayhi()
这两种方式都能正常运行,并且结果都一样,
如果使用import的话,就需要使用导入的module名称来引用模块的方法,成员变量了
如果使用from … import 就可以直接使用该模块中的方法 成员变量了
区别二:当模块中有__all__=[属性,方法]方法时,使用from module import *只能导入__all__的列表中定义的属性和方法,import module还是可以全部调用,不受影响
[Python] 纯文本查看 复制代码 # Filename: text.py
__all__ = ['version']
def sayhi():
print('Hi this is mymodule speaking')
version='1.0'
# 方式一:import module
[Python] 纯文本查看 复制代码 import text
print(text.version)
text.sayhi()
结果:
#方式二:from module import *
[Python] 纯文本查看 复制代码 from text import *
print(version)
sayhi()
结果:
区别三:import可以修改被导入的模块中的全局变量,from module import *不能修改被导入模块中的全局变量
方式一:import module
[Python] 纯文本查看 复制代码 #main.py
from send import *
from show import *
# 主流程
def main(): # 发女朋友
send() # 秀恩爱
show()
if __name__ == '__main__':
main()
[Python] 纯文本查看 复制代码 #send.py
import girl
# 发女朋友
def send():
print("发女朋友了,翠花是你的了")
girl.have_girl = True
[Python] 纯文本查看 复制代码 #show.py
import girl
# 秀恩爱
def show():
if girl.have_girl == True:
print("我有女朋友了,好开心")
else:
print("单身贵族")
[Python] 纯文本查看 复制代码 #girl.py
# 共同变量模块
have_girl = False #False代表没有女朋友 True代表有女朋友
结果:
方式二:from module import *
[Python] 纯文本查看 复制代码 #main.py
from send import *
from show import *
# 主流程
def main(): # 发女朋友
send() # 秀恩爱
show()
if __name__ == '__main__':
main()
[Python] 纯文本查看 复制代码 #send.py
from girl import *
# 发女朋友
def send():
print("发女朋友了,翠花是你的了")
have_girl = True
[Python] 纯文本查看 复制代码 #show.py
from girl import *
# 秀恩爱
def show():
if have_girl == True:
print("我有女朋友了,好开心")
else:
print("单身贵族")
[Python] 纯文本查看 复制代码 #girl.py
# 共同变量模块
have_girl = False #False代表没有女朋友 True代表有女朋友
结果:
|