一.函数
(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-16 | Unicode编码的一种,用两个字节存储一个字符 |
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 f | for循环文件行,一次循环得到一行数据 |
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 | 追加二进制写入 |