"""
1、什么是模块
模块就是一个功能的集合体,不是用来直接运行,而是用来被导入使用的
模块分为三大来源:
1、内置的模块
2、第三方模块
3、自定义的模块
模块分为四种类别:
1、一个py文件就是一个模块
2、一个文件夹也是一个模块=》包
3、已被编译为共享库或DLL的C或C++扩展
4 使用C编写并链接到python解释器的内置模块
2、为何要用模块
使用别人的模块:
1、拿来主义,提升开发效率
自定义模块:
1、别人的功能不够用了,需要自己的去编写
2、解决代码冗余
3、如何用模块
"""
# 文件名是spam.py,模块名则是spam
x=111
import spam
# 首次导入模块发生的事情
# 1、触发被导入的模块的运行,产生一个模块的名称空间,把模块中的名字都丢进去
# 2、会在当前执行文件中得到一个名字spam,该名字是指向被导入模块的名称空间的
# 之后的导入,名字spam直接引用首次导入产生的名称空间,不会再执行模块的内的代码了
# import spam
# import spam
# import spam
money = 2000
# print(money)
# print(spam.money)
# spam.read1()
# def read1():
# print('run1.py----read1')
# spam.read2()
# spam.change()
# print(spam.money)
# print(money)
# 一行导入多个模块
import spam,m1,m2,m3 # 不推荐
# 为导入的模块起别名
# import spamasdfasfsadfadfasfd as sm
# sm.xxx
# 示例:
# #mysql.py
# def sqlparse():
# print('from mysql sqlparse')
# #oracle.py
# def sqlparse():
# print('from oracle sqlparse')
#
# #test.py
# db_type=input('>>: ')
# if db_type == 'mysql':
# import mysql as db
# elif db_type == 'oracle':
# import oracle as db
#
# db.sqlparse()
# 文件名是spam.py,模块名则是spam
x=111
# from spam import money,read1,read2 # money=spam.money,read1=spam.read1,read2=spam.read2
# 首次导入模块发生的事情
# 1、触发被导入的模块的运行,产生一个模块的名称空间,把模块中的名字都丢进去
# 2、会在当前执行文件中得到名字
# money=模块spam中的money对应值的内存地址
# read1=模块spam中的read1对应值的内存地址
# read2=模块spam中的read2对应值的内存地址
# from spam import money,read1,read2
# from spam import money,read1,read2
# from spam import money,read1,read2
# from spam import money,read1,read2
# print(money)
# print(read1)
# print(read2)
# money=111
# print(money)
# money=2000
# read1()
# def read1():
# print('run.py read1')
# read2()
# 一行导入多个名字
# from spam import money,read1
# 为导入的模块起别名
# from spam import money as m
#
# print(m)
# from spam import *
from spam import *
# print(money)
# print(read1)
# print(read2)
print(change)
09-09