模块的使用import.py
#1 什么是模块?
# 模块就一系统功能的集合体,在python中,一个py文件就是一个模块,比如module.py,其中模块名module
#2 使用模块
#2.1 import 导入模块
#首次导入模块发生三件事
#1、创建一个模块的名称空间
#2、执行模块对应文件,将产生的名字存放于1中的名称空间
#3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间
x=1
def f1():
pass
# import spam
#强调:之后的导入会直接引用第一次导入的结果,不会重复执行文件
# import spam
# import spam
# import spam
# import spam
# import spam
# print(spam)
# print(spam.money)
# spam.read1()
# 模块中功能的执行始终以模块自己的名称空间为准
# read1=111111
# print(spam.read1)
# money=1111111111111
# spam.read1()
# read1=111111111111 11111111111111
# spam.read2()
# money=1111111111111111
# spam.change()
# print(money)
# spam.read1()
#3、为模块起别名
# import spam as sm
#
# print(sm.money)
# sm.read1()
engine=input('>>: ').strip()
if engine == 'mysql':
import mysql as db
elif engine == 'oracle':
import oracle as db
db.parse()
#4、一行导入多个模块(不推荐使用)
# import spam,mysql,oracle
#推荐写成多行
import spam
import mysql
import orcacle
二.模块的使用.....import.....py
首次导入模块发生三件事
1.创建一个模块的名称空间
2.执行模块对应的文件,将产生的名字存放于1中的名称空间
#提示:from....import...与import前两件事一模一样
3.在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀
# import spam # spam.名字
#
# from spam import money,read1,read2,change
# print(money)
# read1()
# read2()
# change()
# import spam
# print(money)
# 注意:
# 1、同import,执行模块中的功能,始终以模块的名称空间为准
# money=1111111111
# change()
# print(money)
#2、from ... import 名字,拿到的名字可以不加前缀直接使用,使用起来更加方便
#当问题是容易与当前执行文件中相同的名字冲突
# money=1111111111111111
# print(money)
# read1=1111111
# read1()
# 起别名
# from spam import money as m
# print(m)
# 在一行导入多个
# from spam import money,read1,read2
#from ... import *
# from spam import *
#
# print(money)
# print(read1)
# print(read2)
# print(change)
# from spam import *
# print(money)
# print(read1)
# print(read2)
import spam
# import m1
# m1.f1()
# 模块的查找顺序是:
# 1、内存中已经加载的模块
# 2、内置模块
# 3、sys.path路径中包含的模块
# import time
#
# import m1
# m1.f1()
#
# time.sleep(15)
# import m1
# m1.f1()
# import sys
# print('time' in sys.modules)
# import time
# time.sleep(2)
# print('time' in sys.modules)
import sys
sys.path.append(r'D:codeSH_fullstack_s1day14dir1')
import m1
m1.f1()
# 强调强调强调强调强调强调强调强调强调强调强调强调
# sys.path的第一个路径是当前执行文件所在的文件夹
# import m1
# m1.f1()
# 模块的查找顺序是:
# 1、内存中已经加载的模块
# 2、内置模块
# 3、sys.path路径中包含的模块
# import time
#
# import m1
# m1.f1()
#
# time.sleep(15)
# import m1
# m1.f1()
# import sys
# print('time' in sys.modules)
# import time
# time.sleep(2)
# print('time' in sys.modules)
import sys
sys.path.append(r'D:codeSH_fullstack_s1day14dir1')
import m1
m1.f1()
# 强调强调强调强调强调强调强调强调强调强调强调强调
# sys.path的第一个路径是当前执行文件所在的文件夹
# import m1
# m1.f1()
# 模块的查找顺序是:
# 1、内存中已经加载的模块
# 2、内置模块
# 3、sys.path路径中包含的模块
# import time
#
# import m1
# m1.f1()
#
# time.sleep(15)
# import m1
# m1.f1()
# import sys
# print('time' in sys.modules)
# import time
# time.sleep(2)
# print('time' in sys.modules)
import sys
sys.path.append(r'D:codeSH_fullstack_s1day14dir1')
import m1
m1.f1()
# 强调强调强调强调强调强调强调强调强调强调强调强调
# sys.path的第一个路径是当前执行文件所在的文件夹
#spam.py
print('from the spam.py')
__all__=['money','read1'] # from .. import *
money=1000
def read1():
print('spam模块.read1:',money)
def read2():
print('spam模块.read2')
read1()
def change():
global money
money=0
# print(__name__)
# __name__的值
#1、在文件被直接执行的情况下,等于'__main__'
#2、在文件被导入的情况下,等于模块名
if __name__ == '__main__':
# print('文件被当中脚本执行啦。、。')
read1()
else:
print('文件被导入啦')