python学习笔记3

函数

函数定义

关键字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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值