import time
time.ctime()
print(time.ctime())        # 调用模块中的函数
# import 在首次导入模块的时候会发生如下三种操作
# 1.打开模块文件
# 2.执行模块对应的文件，将执行过程中产生的名字都丢到模块的命名空间
# 3.在程序中会有一个模块的名称指向模块的命名空间

from time import ctime,time  # 部分导入
print(ctime())
# from import 首次导入发生了三个步骤
# 1.以模块为准创造了一个模块的命名空间
# 2.执行模块对应的文件，将执行过程中产生的名字都丢到模块的命名空间
# 3.在当前执行文件的命名空间中拿到一个名字，该名字直接指向模块中的名字，意味着可以不用加任何的前缀而直接使用
# 优点：不用加前缀，直接使用，代码更简洁了
# 缺点：容易与当前执行文件中命名空间中的名字冲突


#  form import 和import 的相同点
#  都会执行模块对应的文件，都会产生模块的命名空间
#  两者在调用时都需找到定义时寻找作用域关系
#  form import 和import 的不同点
#  import在使用时需要加前缀，from import不需要加前缀


# import可以使用 import xxx as xxx 来给这个命名空间取一个别名，以此来防止命名空间与自己设置的模块相同
