#导入模块干了哪些事:

#1 执行源文件

#2 以一个源文件的全局名称空间

#3 在当前位置拿到一个模块名,指向2创建的名称空间




# import spam

# money=100000000000

# def read1():

#     print('from test')

# # print(spam.money)

# # print(spam.read1)

# # spam.read1()

#

# # spam.read2()

# spam.change()

# print(money)

# spam.read1()



#

# import spam as s1

# print(s1.money)





# sql_type=input('sql_type: ')

# if sql_type == 'mysql':

#     import mysql as sql

#

# elif sql_type == 'oracle':

#     import oracle as sql

#

# sql.sqlparse()





import sys

print(sys)

import spam

print(spam)




#优点:使用源文件内的名字时无需加前缀,使用方便

#缺点:容易与当前文件的名称空间内的名字混淆

# from spam import money,read1,read2,change

# money=0

# print(money)

# print(read1)

#

# read1()


# def read1():print('ok')

# read2()


#

# money=10

# change()

# print(money)



# from spam import money as m

#

# print(m)





from spam import *


# print(_money)

# read1()

# print(read2)


print(money)

print(x)

print(read1)




#模块只在第一次导入时才会执行,之后的导入都是直接引用内存已经存在的结果

import sys

print('spam' in sys.modules) #存放的是已经加载到内的模块



import spam

print('spam' in sys.modules)

# import spam

# import spam

# import spam

# import spam

# import spam