from import 的认识

# from my_moudle import login
# # # 1.找my_moudle模块
# # #2 开辟属于这个模块的命名空间
# # #3执行这个模块(注意这里的意识是读完这个文件)
# # # 知道了要import 的是login这个名字。就会在本文件中创建一个变量login,指向模块命名空间中的login函数
# # # print(my_moudle.name)   #NameError: name 'my_moudle' is not defined  .因为这里并没有建立引用指向my_moudle 模块
# # # 这里没有引用指向moudle模块
# #
# # # 导入了什么,就能使用什么,不导入不意味者不存,只是没有建立文件到模块中其他名字的引用,
# #
# # login()  # 登录 dudu
# # # 因为my_moudle先执行了,所以name = "dudu"
# #
# # def login():
# #     print("本文件")  # 在这里实现了login,但是在之前调用的login的时候没有login这个函数,所以会执行模块中的函数
# #
# #
# # login()
# #
# # # 登录 dudu
# # # 本文件
# #
# # from my_moudle import login  # 找到moudle发现已经导入了,import login 再次建立对模块中login的引用
# # login()
# # # 当模块中导入的方法或者变量和文件重名的时候,那么这个歌名字只代表最后一次对他赋值的那个方法或者变量
# #
# # # 登录 dudu
# # # 本文件
# # # 登录 dudu
#
# name = "本文件"
# login()   #登录 dudu
#
# # 在本文件中对全局变量的修改不会影响到模块中变量的引用
#


# # 重命名
# from my_moudle import login as l  #只是改变了本文件中对login的引用
# l()

# # 导入多个模块
# from my_moudle import login,name
# login()
# print(name)
# name = "太亮"  # 这里只是相当于修改了对name的引用
# login()
# print(name)
#
# #登录 dudu
# # dudu
# # 登录 dudu
# 太亮

# # 重命名
# from my_moudle import login as l, name as n
# l()
# print(n)

#from 模块 import * # 表示对模块中所有元素同名引用

# __all__ 可以控制 from 模块 import *  中 * 的导入情况
from my_moudle import *
login()
print(name)

my_moudle.py

__all__ = ["login"]
name = "ho"
def login():
    print("登录",name)
name = "dudu"

 

posted @ 2019-03-27 16:21  杨fj  阅读(134)  评论(0编辑  收藏  举报