今日内容
用户注册功能
1.获取用户名和密码
2.组织成固定的格式
3.文件操作写入文件
# 面向过程编程的缺点就是想改错其他位置也要跟着改
def get_info():
username = input('username>>>:').strip()
password = input('password>>>:').strip()
if len(username) == 0 or len(password) == 0:
print('用户名或密码不能为空')
return
user_id = {
'1':'admin',
'2':'user',
}
print(user_id)
choice = input('请选择您的身份>>>:').strip()
if choice in user_id:
id = user_id.get(choice)
return deal_data(username, password,id)
else:
print('输入不合法')
return
def deal_data(username,password,id):
data = '%s|%s|%s\n'%(username,password,id)
return save_data(data)
def save_data(data):
with open(r'userinfo','a',encoding='utf8') as f:
f.write(data)
print('注册成功')
get_info()
模块简介
python语言
最早起源于linux运维、胶水语言、调包侠(贬义词>>>褒义词)
1.什么是模块
模块:一系列功能的结合体
2.为什么要用模块
为了提升开发效率
3.模块三种来源
1.内置的(python解释器自带能够直接导入使用)
2.第三方的(别人写好的发布在网上的 需要先下载后使用)
3.自定义的(自己写的)
4.模块的四种表现形式
1 使用python编写的代码(.py文件)
2 已被编译为共享库或DLL的C或C++扩展
3 包好一组模块的文件夹
# 包其实就是多个py文件(模块)的集合
包里面通常会含有一个__init__.py文件
4 使用C编写并链接到python解释器的内置模块
# 写项目优先考虑有没有模块用
import句式
import 模块名
# 导入多少相同的模块只会运行一次
m1.py # 文件名
def gzj()
print('123')
def lyq()
print('456')
def lfq()
print('789')
m2.py # 文件名
import m1 # 全部导入
import gzj # 导入一个
from...import...句式
from m1 import gzj,lyq,lfq
gzj()
lfq()
lyq()
"""
from...import...多次导入也只会导入一次
1.先产生执行文件的全局名称空间
2.执行模块文件 产生模块的全局名称空间
3.将模块中执行之后产生的名字全部存档于模块名称空间中
4.在执行文件中有一个money执行模块名称空间中money指向的值
from...import...指定导入某个名字
在使用的时候直接写名字即可 但是当当前名称空间有相同名字的时候
就会产生冲突 使用的就变成了当前名称空间
"""
![image]()
导入模块扩展用法
1.可以给导入的模块起别名
import m1 as m
from m1 import gzj as nb
nb() # 结果为123
2.连续导入
import m1,m2 # 相同类型 如果功能不同并且不属于一个系列 那么推荐分行导入
import m1
import n2
from m1 import gzj,lyq,lfq
3.通用导入
from m1 import * # 将模块中所有的名字全部导入(*表示所有)
lyq()
lfq()
gzj() # 红线,运行报错,不允许被调用
m1 # 文件名
__all__ = ['lyq','lfq'] # 在被导入的模块文件中可以使用__all__指定可以被导入使用的名字
判断文件类型
# 判断py文件是作为模块文件还是执行文件
__name__当文件是执行文件的时候会返回__main__
如果文件是被当做模块导入则返回文件名(模块名)
if __name__ == '__main__':
gzj()
循环导入
# 以后在导入模块的时候如果出现了循环导入的情况 说明程序设计的不合理
# 以后的编程生涯中不允许出现循环导入的现象
一错再错
1.调换顺序
将彼此导入的句式放在代码的最后
2.函数形式
将导入的句式放入函数体代码 等待所有的名字加载完毕之后再调用
模块导入的顺序
"""
1.先从内存中查找
2.再去内置模块中查找
3.最后去sys.path系统路径查找(自定义模块)
如果都没有查找到则报错
"""
# 在给py文件命名的时候不要与内置模块名冲突
import sys
print(sys.path) # 结果中第一个元素永远是当前执行文件所在的路径
当某个自定义模块查找不到的时候解决方案
1.自己手动将该模块所在的路径添加到sys.path中
import sys
sys.path.append(r'D:\py20\day18\aaa')
2.from...import...句式
from 文件夹名称.文件夹名称 import 模块名
from 文件夹名称.模块名称 import 名字