python学习笔记之函数&文件

一.函数

(1).函数的定义

def function_name(parameters):
    """说明文档"""
    # 函数体
    return result

函数是先定义,然后再去调用,传入参数和返回值都可以省略

说明文档对函数进行说明解释,帮助更好理解函数的功能

(2).函数的多返回值

在 Python 中,函数支持多个返回值,实际上它们会被打包成一个 元组(tuple) 进行返回。

def get_user_info():
    name = "Alice"
    age = 30
    city = "Beijing"
    return name, age, city

# 接收多个返回值
n, a, c = get_user_info()
print(n)  # Alice
print(a)  # 30
print(c)  # Beijing

(3).函数的五种传参方式

1.位置参数

def greet(name, age):
    print(f"Hello, {name}. You are {age} years old.")

greet("Alice", 25)

2.关键字参数

greet(age=25, name="Alice")

3.默认参数

def greet(name, age=18):
    print(f"{name}, {age}")

greet("Bob")         # Bob, 18
greet("Tom", 30)     # Tom, 30

虽然已经给age一个默认值,但是如果给age传入一个参数,它会覆盖默认值

而且需要注意,有默认值的形参只能放在无默认值的形参后面,不然代码会报红,运行会报错

4.可变参数

def add(*numbers):
    return sum(numbers)

print(add(1, 2, 3, 4)) # 输出: 10

*args:接收多个 位置参数,以元组形式保存。(上面的例子中,numbers就是一个元组)

def print_info(**info):
    print(info)

print_info(name="Alice", age=30)

**kwargs:接收多个 关键字参数,以字典形式保存。(同理,info=字典)

5. 强制命名参数 / 仅限关键字参数

def register(name, *, age, city):
    print(name, age, city)

register("Tom", age=20, city="Beijing")  # 正确
register("Tom", 20, "Beijing")         # 报错

通过 * 来限制后面的参数只能通过关键字传递

(4).函数作为参数来传递

def greet(name):
    return f"Hello, {name}!"

def run_function(func, value):
    return func(value)

result = run_function(greet, "Alice")
print(result)  # 输出:Hello, Alice!

在 Python 中,函数作为参数传递的意思是:你可以把一个函数“当作数据”一样,传给另一个函数。也就是说,函数名本身可以当作变量来使用,并作为参数传递。

(5).lambda匿名函数

语法:

lambda 参数: 表达式

在 Python 中,lambda 匿名函数 是一种轻量级的函数定义方式,用于创建简单的函数,而不需要用 def 关键字来显式命名函数

# 普通函数
def add(x ,y):
    return x + y
# lambda函数
add_lambda= lambda x, y: x + y

print(add(3,5)) # 8
print(add_lambda(3,5))# 8

二.文件

(1).文件编码

概念:在 Python 中,文件编码是指将文本(字符串)在保存到文件时转换为字节序列,或在读取文件时从字节序列还原为文本的方式。编码的选择直接关系到文件中内容的可读性和正确性。

常见的文件编码
编码名称说明
utf-8

最常用的编码方式,支持所有语言,兼容ASCll

gbk中文Windows系统常用编码
gb2312早期中文编码(简体)
utf-16Unicode编码的一种,用两个字节存储一个字符
ascii最基础的编码,支持英文字符和符号(0-127)

(2).文件的读取操作

1.基本读取操作

# 打开文件,读取内容
with open('example.txt', 'r', encoding='utf-8') as file:
    content = file.read()
    print(content)

with:上下文管理器,使用后会自动关闭文件

2.逐行读取

# 第一种逐行读取
with open('example.txt', 'r', encoding='utf-8') as file:
    for line in file:
        print(line.strip())  # strip() 去除换行符和两端空格

# 第二种逐行读取
with open('example.txt', 'r', encoding='utf-8') as file:
    lines = file.readlines()
    for line in lines:
        print(line.strip())

3.读取固定字节

with open('example.txt', 'r', encoding='utf-8') as file:
    part = file.read(10)  # 读取前10个字符
    print(part)

文件路径可以是相对路径(如 'example.txt')也可以是绝对路径(如 'C:/data/example.txt')。

(3).文件的读取方法及常见读取模式

读取方法
open(f,mode,encoding)打开文件获得文件对象
f.read(num)读取指定长度字节,不指定num则读取文件全部
f.readline()读取一行
f.readlines()读取所有行,返回一个列表
for line in ffor循环文件行,一次循环得到一行数据
f.close()关闭文件对象
with open() as f通过with open语法打开文件,可以自动关闭

常见读取模式
模式含义
r读取文本(默认)
rb读取二进制
r+读写文本(不清空原文件)
rb+读写二进制

(4).文件的写入操作

1.写入文本文件(覆盖原内容)

# 写入文本内容到文件(如果文件已存在会被覆盖)
with open("example.txt", "w", encoding="utf-8") as f:
    f.write("你好,世界!\n")
    f.write("这是写入文件的第二行。")

with open("example.txt", "w", encoding="utf-8") as f:
    f.write("我不好!\n")
# 最后example文件里的内容是“我不好”

2.追加内容到文件(不覆盖原内容)

# 追加内容到文件末尾
with open("example.txt", "a", encoding="utf-8") as f:
    f.write("\n这是追加的内容。")

3.写入多行内容

lines = ["第一行内容\n", "第二行内容\n", "第三行内容\n"]

with open("multiline.txt", "w", encoding="utf-8") as f:
    f.writelines(lines)  # 写入一个字符串列表

(5).文件的写入方法及常见写入模式

写入方法
方法说明
write()写入字符串,但它不会自动换行,需要手动加\n
writelines()写入多个字符串,writelines(list)
f.flush()手动刷新缓冲区到文件中
常见写入模式
模式说明
w写入(会清空原文件,没有会创建)
a追加写入(不会清空原文件)
x仅创建新文件写入(如果存在会报错)
r+读写模式(不清空原文件)
wb写入二进制
ab追加二进制写入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值