#什么是模块 #一系列的功能的集合体 #分为三大类: 内置模块,自定义模块,第三方模块 #一个py文件本身就是一个模块 # #在python中,模块的使用方式都是一样的,但其实细说的话,模块可以分为四个通用类别: # # 1 使用python编写的.py文件 # # 2 已被编译为共享库或DLL的C或C++扩展 # # 3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包) # # 4 使用C编写并链接到python解释器的内置模块 #1、从文件级别组织程序,更方便管理 # 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。 # 这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用 # # #2、拿来主义,提升开发效率 # 同样的原理,我们也可以下载别人写好的模块然后导入到自己的项目中使用,这种拿来主义,可以极大地提升我们的开发效率 # # #ps: # 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来, # 需要时就通过python test.py方式去执行,此时test.py被称为脚本script。 # 模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行(import语句是可以在程序中的任意位置使用的, # 且针对同一个模块很import多次,为了防止你重复导入,python的优化手段是:第一次导入后就将模块名加载到内存了, # 后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块内的语句),如下 #test.py # import model_file #只在第一次导入时才执行spam.py内代码, # 此处的显式效果是只打印一次'from the model_file.py',当然其他的顶级代码也都被执行了,只不过没有显示效果. #2、为何要用模块 #3、如何用模块 # from python开发.python基础.Day07 import model_file # 执行了model_file #模块名.名字:指名道姓地问模块要名字对应的值,不会与名称空间里的名字发生关系 #无论是查看还是修改操作的都是原模块本身,都是以原模块为基准的,与调用位置无关 # model_file.login() # model_file.register() #推荐使用! # import time # import requests # import turtle # import time,turtle,requests 不推荐使用 #导入规范顺序 #1、内置模块 #2、第三方模块 #3、自定义模块 # import model_file as m # import 模块名 as 别名 #模块是第一类对象 #自定义模块命名应采用纯小写+下划线 #可以在函数内导入模块使用 #import 导入模块在使用时必须加前缀“模块”. #优点:肯定不会与当前名称空间的名字冲突 #确定:加前缀显得麻烦! #唯一的区别就是:使用from...import...则是将spam中的名字直接导入到当前的名称空间中,所以在当前名称空间中, # 直接使用名字就可以了、无需加前缀:model_file. #from...import...的方式有好处也有坏处 # 好处:使用起来方便了 # 坏处:容易与当前执行文件中的名字冲突 # import model_file # # print(model_file) # from ... import ...导入也发生了三件事情 #1、产生一个模块名称空间 #2、运行model_file.py将运行过程中产生的名字丢到模块名称空间去 #在当前名称空间拿到 一个名字,该名字模块名称空间中的某一个内存地址 # from python开发.python基础.Day07.model_file import login # login() #*:导入模块中所有名字 ---------------不推荐使用 #from model_file import * # __all__=[x,a] # #控制*的名字 #不要写循环导入模块的代码 #无论是import还是from...import...在导入模块时都涉及到的查找问题 #优先级: #1、内存(内置模块) #2、从硬盘找(按照一个一个文件夹找) import sys #值为一个列表,存放了一系列的文件夹 #第一个文件夹就是第一个执行文件夹 print(sys.path) # sys.modules#显示已加载到内存的模块!
#model_file模块代码
print('model_file文件运行了') def login(): user_name=input('请输入用户名:') user_pwd=input('请输入密码:') if user_name=='loky' and user_pwd=='123': print('login in successful!') else: print('faild to login !') def register(): print('这是一个注册功能!') def transform(): print('这是一个转账功能!') # if __name__ == '__main__': # login() # print('文件执行!') # # else: # print('模块被调用')