函数
函数定义
关键字def
def add(a, b):
result = a + b
print(f"{a}+{b}={result}")
add(4, 5)
def my_len(data):
count = 0
for i in data:
count += 1
print(f"字符串{data}长度为{count}")
my_len("python")
def check(date):
if date > float(37.5):
print("您需要隔离")
else:
print("请进")
check(float(input("请输入您的体温:")))
def add(a, b):
result = a + b
return result #函数返回值,用于变量接收
a = add(4, 5)
print(a)
关键字global 将函数内定义的变量变为全局变量
函数多个返回值
def a():
return 1, 2
x, y = a()
print(x, y)
函数参数种类
def a(b, c, d):
print(b, c, d)
# 两种传参
a(b="小明", c=20, d="男")
a("小明", 20, "男")
位置传递 位置不定长
传进的参数都会被变量收集,根据传进参数的位置合并为一个元组(tuple)
def user(*args): # args是元组类型,这种是位置传递
print(args)
user('Tom', 18)
关键字传递 关键字不定长
def user(**kwargs):
#参数为键值对的情况下,所有键值对会被kwargs接受,并根据键值对组成字典
print(kwargs)
user(a='Tom', b=18, c=123)
函数作为参数传递
我感觉这种理解起来有点抽象,感觉自己明白,又感觉自己不明白(笑哭)。
def test_func(compute):
result = compute(1, 2)
print(result)
def com(x, y):
return x + y
test_func(com)
lambda匿名函数
无名称的匿名函数只能临时使用一次 lambda 传入参数:函数体(一行代码)
利用匿名函数作为参数传递
def test_func(compute):
result = compute(1, 2)
print(result)
test_func(lambda x, y:x+y)
文件操作
文件编码
open(name, mode, encoding) name:要打开的目标文件名的字符串(可以包含文件所在的具体路径) mode:设置打开文件的模式(访问模式):只读、写入、追加等 r 只读 w 写入 a 追加 文件已存在会加到已有文件之后,如没有文件会创建文件 encoding:编码格式
文件读取操作
read(num) num表示从文件中读取的数据长度,没有mun表示读取文件中所有数据 readlines() 按照行的方式把整个文件中的内容进行一次性读取,返回一个列表,每一行的数据为一个元素 readline() 读取一行
# 文件目录可自行更改
f = open('D:/pycharm/py-learning/python.txt', 'r', encoding='UTF-8')
print(f"读取两个字节{f.read(2)}")
print(f.read())
f = open('D:/pycharm/py-learning/python.txt', 'r', encoding='UTF-8')
lines = f.readlines()
print(lines)
f = open('D:/pycharm/py-learning/python.txt', 'r', encoding='UTF-8')
line1 = f.readline()
line2 = f.readline()
line3 = f.readline()
print(line1)
print(line2)
print(line3)
f = open('D:/pycharm/py-learning/python.txt', 'r', encoding='UTF-8')
for line in f:
print(f"每一行的数据是{line}")
关闭文件
close() f.close()
执行完自动关闭文件 with...as...
with open('D:/pycharm/py-learning/python.txt', 'r', encoding='UTF-8') as f:
for line in f:
print(f"每一行的数据是{line}")
文件写入
f = open('D:/pycharm/py-learning/python2.txt', 'w', encoding='UTF-8')
# w模式中,文件不存在的时候会创建文件,当文件存在的时候会把文件清空再写入想写的东西
f.write("你好") # 写入文件
f.flush() # 刷新,将内存中的文件写入硬盘中
文件追加
把文件写入操作中的w模式换成a模式
f = open('D:/pycharm/py-learning/python2.txt', 'a', encoding='UTF-8')
f.write("\n你好!!!!") # 写入文件
f.flush() # 刷新,将内存中的文件写入硬盘中
f.close()
文件备份案例
fr = open('D:/pycharm/py-learning/python.txt', 'r', encoding='UTF-8')
fw = open('D:/pycharm/py-learning/python.txt.bak', 'w', encoding='UTF-8')
for line in fr:
line = line.strip()
if '哈' in line:
continue
fw.write(line)
fw.write("\n")
fr.close()
fw.close()
捕获异常操作
try: 可能发生的错误 except: 如果出现异常执行的代码
try:
f = open('D:/pycharm/py-learning/python3.txt', 'r', encoding='UTF-8')
except:
print("出现异常,文件不存在改为w模式打开")
f = open('D:/pycharm/py-learning/python3.txt', 'w', encoding='UTF-8')
捕获指定异常(其中1/0为异常,除以0为异常)
try:
# print(name)
1 / 0
except (NameError, ZeroDivisionError)as e:
print("出现了未定义异常或/0异常")
print(e)
捕获所有异常
try:
print(name)
1 / 0
except Exception as e:
print("出现了异常")
print(e)
异常else 表示没有出现异常执行的操作 异常finally 无论是否异常都要执行
错误的传递(错误可以从一个函数传递到下一个函数)
def func1():
1 / 0
def func2():
func1()
def main():
try:
func2()
except Exception as e:
print(f"有错误,错误信息是{e}")
main()