文件相关知识点及函数基本知识点
目录一、文件读写总概括
描述 | 模式 |
---|---|
r | 只读不写,文件路径必须存在 |
w | 只写不读,文件路径不存在则创建 |
a | 在文本文件末尾追加内容,文件路径不存在创建,存在则清空原有的内容 |
t | 文本模式,默认模式 |
rb | 以二进制打开文件,只读不写 |
wb | 以二进制打开文件,只写不读,文件路径不存在则创建 |
ab | 以二进制在文件末尾追加内容,文件路径不存在则创建 |
x | 写模式,新建文件,如果该文件已存在会报错 |
r+ | 打开文件用于读写 |
w+ | 打开文件用于读写,文件路径不存在创建,存在则清空原有的内容,写新的内容 |
a+ | 打开文件用于在末尾追加内容,文件路径不存在创建,存在则清空原有的内容 |
二、计算机硬盘修改数据的原理(了解)
数据的修改其实是写入的内容覆盖了原来的内容
数据存储在硬盘中,数据的删除就是将占有态变成了自由态,自由态的删除可以用格式化。可以用大量别的文件覆盖原文件,然后删掉自由态数据,保护自己的二手手机,电脑
硬盘删除数据的原理:
不是直接删除而是改变状态,等待后续数据的覆盖才会被真正删除
三、文件内容修改(了解)
代码修改文件的方式:
1.覆盖写
with open(r'a.txt', 'r', encoding='utf8') as f:
data = f.read()
with open(r'a.txt', 'w', encoding='utf8') as f1:
f1.write(data.replace('今天要好好学习', '加油'))
注意点:replace的参数需要两个,只得到了一个,就会报错
2.重命名(换地写)
# 先在另外一个地方写入内容,然后将源文件删除,将新文件命名成源文件
eg:
import os # 模块
with open('a.txt', 'r', encoding='utf8') as read_f,
open('.a.txt.swap', 'w', encoding='utf-8') as write_f:
for line in read_f: # .swap是临时文件,循环读取每一行内容
write_f.write(line.replace('tony', 'kevinSB')) # 替换
os.remove('a.txt') # 删除a.txt
os.rename('.a.txt.swap', 'a.txt') # 重命名文件
四、函数简介
python函数是指组织好的、可重复使用的、用来实现单一或相关联功能的代码段,通过一个函数名封装起来,若想执行这个函数,只需要调用函数名。
优点:减少代码的重复量,使代码看起来更简洁,易修改
五、函数语法结构
语法结构:
def 函数名(参数):
'''函数注释'''
函数体代码
return 返回值
1.def 定义函数的关键字
2.函数名:命名等同于变量名,指代函数体的代码,要做到知其意
3.括号:函数名后面一定要写括号
4.参数:参数可以一个可以多个可以不写,可有可无,用于使用函数时规定要不要外界数据传进来
5.参数注释:类似于根据说明书
6.函数体代码:整个函数的主心骨,存放逻辑代码实现函数的功能
7.return:使用函数之后可以返回给使用者的数据
六、函数的定义与调用
1.函数在调用的阶段只检测语法,不执行代码
def func()
pass
2.函数在调用阶段才会执行函数体代码
func()
3.函数必须先定义再调用
4.函数定义必须使用关键字def函数调用使用>>>:函数名加括号
七、函数的分类
1.空函数
函数体代码用pass或者...代替,函数体没有任何的功能,主要用于前期项目的框架搭建,提示主要功能,让整体的框架清晰
def func():
pass
eg:
def func():
pass
choice = input('please input your choice')
if choice == '1':
print('xx1')
elif choice == '2':
print('xx2')
elif choice == '3':
print('xx3')
2.无参函数
定义函数阶段括号内没有参数
def func():
print('from function')
3.有参函数
函数定义阶段括号内有参数,类似于变量,调用函数的时候括号传参数
def func(a):
print(a)
八、函数的返回值
函数外部的代码想要获取函数执行的结果,就可以在函数里用return语句把结果返回,返回值就是调用函数产生的结果
获取返回值:变量名 = 函数()
函数返回值的多种情况:
1.函数体代码中没有关键字return,默认返回none
eg:
def func():
print('hello')
res = func() # hello
print(res) # none
2.函数体代码中有return,如果后面没有写任何东西还是返回none
eg:
def func():
print('hello')
return # 没有写任何东西,返回none
res = func()
print(res)
3.函数体有return 后面写什么就返回什么
eg:
def func():
print('hello')
return 222 # f返回222
res = func()
print(res)
4.函数体代码有return并且后面有多个数据值,则自动组织成元组返回
eg:
def func():
print('hello')
return 1, 2, 3 # 返回(1, 2, 3)
res = func()
print(res)
5.函数体代码遇到return会立刻结束
eg:
def func():
print('upper')
return 34555 # 返回34555
print('lower') # 不会执行,相当于循环语句中的break
func()
九、函数的参数
1.形式参数
在函数定义阶段括号内填写的参数,简称'形参'
2.实际参数
在函数调用阶段括号内填写的参数,简称'实参'
形参与实参的关系:
形参类似于变量名,在函数定义阶段可以随便写,最好知名见意
eg:
def register(name, pwd):
pass
实参类似于数据值,在函数调用阶段与形参临时绑定,函数运行结束立刻断开
eg:
register('jason', 123) 形参name与jason绑定,形参pwd与123绑定
eg:
def register(name, pwd):
print(name,pwd)
register('jason', 123)
十、作业
使用函数将员工管理系统和文件进阶注册登录封装
def add():
num_dict = {}
emp_id = input('请输入圆滚编号').strip()
if emp_id in num_dict:
print('该用户已存在')
else:
user_info = {}
name = input('请输入员工姓名').strip()
age = input('请输入员工年龄').strip()
post = input('请输入员工岗位').strip()
salary = input('请输入员工薪资').strip()
user_info['emp_id'] = emp_id
user_info['name'] = name
user_info['age'] = age
user_info['post'] = post
user_info['salary'] = salary
num_dict['num'] = user_info
print(f'员工编号{emp_id}添加成功')
print(num_dict)
def update():
num_dict = {}
emp_id = input('请输入员工编号').strip()
if emp_id not in num_dict:
print('该用户bu存在')
else:
userinfo = num_dict['num']
new_salary = input('请输入修改后的薪资').strip()
userinfo['salary'] = new_salary
num_dict[emp_id] = userinfo
print('薪资修改完成')
print(num_dict)
def check_one():
num_dict = {}
num = input('请输入员工编号').strip()
if num not in num_dict:
print('该用户不存在')
else:
userinfo = num_dict['num']
print(f'''
--------------info of emp-------------------
编号:{userinfo.get('emp_id')}
姓名:{userinfo.get('name')}
年龄:{userinfo.get('age')}
岗位:{userinfo.get('job')}
薪资:{userinfo.get('salary')}
--------------------------------------------
''')
def check_all():
num_dict = {}
userinfo = num_dict['num']
print(f"""
--------------info of emp-------------------
编号:{userinfo.get('emp_id')}
姓名:{userinfo.get('name')}
年龄:{userinfo.get('age')}
岗位:{userinfo.get('job')}
薪资:{userinfo.get('salary')}
--------------------------------------------
""")
def delete():
num_dict = {}
emp_id = input('请输入员工编号').strip()
if emp_id not in num_dict:
print('该用户bu存在')
else:
num_dict.pop(emp_id)
print(f'编号{emp_id}员工删除成功')
def menu():
print('''
===========员工管理系统===========
1.添加员工信息
2.查看单个员工信息
3.查看所有员工信息
5.删除员工信息
=================================
''')
def func():
while True:
menu()
choice = input('请输入您要执行的功能编号').strip()
if choice == '1':
add()
elif choice == '2':
update()
elif choice == '3':
check_one()
elif choice == '4':
check_all()
elif choice == '5':
delete()
else:
print('没有对应的编号')
if _name_ == '_main_':
func()
'''写得可能不正确,也可能不全面,但是尽力了....'''
标签:知识点,函数,文件,num,dict,func,print,def
From: https://www.cnblogs.com/zx0524/p/16773803.html