面向过程编程(理论)
面向过程编程就好比在设计一条产品流水线
缺陷在于,一旦需要修改功能,需要整体改造
用户注册功能:
1.获取用户名和密码
2.组织成固定的格式
3.文件操作写入
def get_info():
username = input('username>>>:').strip()
password = input('password>>>:').strip()
# 用户名或密码不能为空
if username == 0 or password == 0:
print('用户名或密码不能为空')
return
user_id = {'1': 'admin', '2':'user'}
print(user_id)
choice = input('请输入您的身份>>>:').strip()
if chioce in user_id:
id = user_id.get(chioce)
return deal_data(username, password, id)
else:
print('输入不合法')
return
def deal_data(username, password, id):
data = '%s|%s|%s\n' % (username, password, id)
return seve_data(data)
def seve_data(data):
with open(r'userinfo', 'a', encoding='utf8') as f:
f.write(data)
print('注册成功')
get_info()
模块简介
1.什么是模块
模块:一系列功能的结合体
2.为什么要使用模块
提高开发效率
3.模块的三种来源
1.python内置的
2.第三方
3.自己写的
4.模块的四种表现形式
1.使用python编写的代码
2.已被编译为共享库或DLL的C或C++ 扩展
3.包好一组模块的薄(文件夹)
4.使用C编写并链接到python解释器的内置模块
import句式
1.学习模块的时候,一定要区分好谁是导入文件,谁是模块文件
import md # 导入py文件模块,一定不要加后缀名
2.多次导入相同模块,只会执行一次
3.首次导入模块发生的事情
1.运行导入文件产生该文件的全局名称空间
2.运行md.py文件
3.产生md.py全局名称空间,运行md文件内代码,产生的名字全部存档与md.py名称空间
4.在导入文件的名称空间产生一个md的名字指向md.py全局名称空间
4.import句式导入模块之后
通过模块点名的方式就可以使用模块中所有的名字,且肯定不会产生冲突
form…import…句式
form md import money,read,change
1.form...import...句式多次导入同样也之后导入一次
1.先产生执行文件的全局名称空间
2.执行模块文件,产生模块的全局名称空间
3.将模块中执行之后产生的名字全部存档于模块名称空间中
4.在执行文件中有一个money指向模块名称空间中money指向的值
form...import...指名道姓的导入某个名字
使用的时候直接写名字即可,不过当当前名称空间有相同名字的
时候就会产生冲突,使用的就变成了当前名称空间的名字
# money = 999
# print(money)
money = 999
# def read1():
# print('董小姐')
# read1()
change()
print(money)
导入模块拓展用法
1.起别名
既可以给模块名起别名也可以给模块中某个名字起名字
import mdddddddd as m
from mddddddd import name as n
2.连续导入
import 模块名1,模块名2
可以连续导入多个模块,但是只有当多个模块功能相似或者属于同一个系列
如果功能不属于一个系列,那么推荐分行导入
import 模块1
import 模块2
from 模块名1 import 名字1 名字2 名字3
3.通用导入
form md import * 将模块中所有名字导入
print(money)
print(read1)
print(read2)
__all__ = ['money', 'read1'] # 在被导入的模块文件中使用__all__指定可以
# 被导入使用的名字
判断文件类型
判断py文件是作为模块文件还是执行文件
__name__当文件是执行文件的时候会返回__main__
如果文件是被当做模块导入则返回文件名(模块名)
if __name__ == '-__main__':
read1()
pycharm中可以直接敲main按tab键即可自动补全if判断
模块导入的顺序
'''1.先从内存中查找
2.再去内置模块中查找
3.最后去sys.path系统路径查找(自定义模块)
给py文件命名的时候尽量不要与内置模块名一样
import sys
print(sys.path) # 结果中第一个元素永远是当前执行文件所在的路径
某个自定义模块查找不到时的解决方案
1.自己手动将该模块所在路径添加到sys.path中
import sys
sys.path.append(文件路径)
2.from...import...句式
from 文件夹名称 文件夹名称 import 模块名
from 文件夹名称.模块名称 import 名字
绝对导入与相对导入
在程序中涉及到多个文件之间导入模块的情况一律安装'执行文件'所在路径为准
绝对导入
始终按照'执行文件'所在的'sys.path'查找文件
相对导入
句点符(.)
. '一个点'表示当前文件路径
.. '两个点'表示上一层文件路径
能够打破始终以'执行文件'为准的规则,只考虑两个文件之间的位置
相对导入只能在'模块'文件中,不能在'执行文件'中使用