python--函数篇3

函数

递归函数

什么是递归函数?

在一个函数的内部调用自身的函数,称为递归函数。 
注意:

分解:原问题可以分解为若干个子问题,且子问题为原问题较小规模的实例。 
解决:递归求解子问题,当子问题的规模足够小,则直接求解。 
合并:将子问题的解一层层的合并返回,直到返回结束,得到原问题的解

由上可以得到,递归必须要有一个结束条件(规模足够小,直接求解),而且需要一个递归的公式(子问题为原问题较小规模的实例)。满足以上条件才是一个合理的递归函数,否则容易出现死循环。

匿名函数

匿名函数又称lambda 表达式 或 lambda 函数,可以作为参数传递。

格式: lambda 参数列表 : 表达式

为列表中的字典排序问题

tmp_list = [{"name": "dragon", "age": 18}, {"name": "Dragon", "age": 20}]

tmp_list.sort(key=lambda x: x["name"])  # 根据name 键排序
print(tmp_list)

tmp_list.sort(key=lambda x: x["age"])  # 根据age 键排序
print(tmp_list)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

列表中的字典排序

列表推导式

作用:轻量级循环创建列表 
定义格式: tmp_list = [表达式 for 临时变量 in range(起始位置,结束位置,步长)]

有列表 [1,2,3,…10],将其变成[[1,2,3],[4,5,6],[7,8,9],[10]]

# 首先生成[1,2,3,...10]
a = [x for x in range(1, 11)]
print(a)

# 然后通过列表推导式产生下标,
# 通过表达式 使用下标 对a进行切片
# 得到目标列表
b = [a[x:x + 3] for x in range(0, len(a), 3)]
print(b)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

列表推导式


文件

为什么需要文件?

因为文件可以长期保存数据,省时省力。

文件的操作

文件的操作有 打开、关闭、读取、写入。

路径

访问文件需要知道文件的位置,也就是文件的路径。 
路径分为绝对路径和相对路径。

绝对路径 
绝对路径是指从根目录开始的路径,win可以理解为从盘符开始的路径。

相对路径 
一般是相对于当前目录(或文件夹)的路径,不是从根目录开始的路径,win不是从盘符开始的路径。

文件的打开模式

主要的 r(只读)、w(只写)、a(追加)

  • r 模式

    • 默认模式,只读模式
    • 文件不存在,则程序报错
    • 文件存在,可以进行读取
  • w 模式 
    • 只写模式
    • 文件不存在,则创建一个新文件进行写入
    • 文件存在,每次打开都覆盖原文件,然后写入。
  • a 模式 
    • 追加模式,特殊的 w 模式
    • 文件不存在,则创建一个新文件进行写入
    • 文件存在,没有内容,则直接写入;有内容存在,在内容的末尾,进行追加写入。
访问模式说明
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
w打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
w+打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

打开与关闭文件

import os

# 文件路径
file_path = "DragonFang.txt"
src_name = None

# 是不是一个文件
if os.path.isfile(file_path):
    src_name = open("DragonFang.txt")  # 是文件直接打开,默认r 模式
else:
    src_name = open("DragonFang.txt", "w")  # 不是文件,创建文件

src_name.close()  # 使用完关闭文件
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

写入与读取文件

write()

向文件中写入内容。

f = open('DragonFang.txt', 'w')  # 以只写模式打开
f.write('Hello DragonFang!')  # write 将文件内容写入文件
f.close()  # 关闭文件
  • 1
  • 2
  • 3
读取
  • read()

    • 一次性读取全部内容
    • 在一次打开操作之后,多次read(),除了第一次可以得到内容,其它得到的都是空字符串
  • read(x)

    • 一次性读取 x 个字节的内容
    • 在一次打开操作之后,且内容读取完毕,再次使用read(x) ,将得到空字符串
  • readline()

    • 一次性读取一行的内容
    • 在一次打开操作之后,且内容读取完毕,再次使用readline(),将得到空字符串
  • readlines()

    • 一次性读取全部内容,放到一个列表中,每一行的内容当做列表的一个元素
    • 在一次打开操作之后,多次readlines(),除了第一次可以得到内容,其它得到的都是空列表

文件的相关操作

import os

# 文件的相关操作
# 文件的重命名,原文件不存在报错
os.rename("Dragon.txt", "DragonFang.txt")

# 删除文件,文件不存在报错
os.remove("Dragon.txt")

# 判断指定资源是不是一个文件,是返回True,不存在不报错
os.path.isfile("Dragon.txt")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

文件夹的相关操作

import os

# 创建文件夹,当文件夹不存在时创建,文件夹存在时报错
os.mkdir("Dragon")

# 删除文件夹,当文件夹存在时删除,文件夹不存在时报错
os.rmdir("Dragon")

# 获取当前工作目录
os.getcwd()

# 改变默认工作目录,"./" 表示当前目录  "../"表示上级目录
os.chdir("../")

# 获取目录列表
os.listdir("./")

# 判断指定路径是不是文件夹,是返回True,路径不存在不会报错

os.path.isdir("") ##############################转自:https://blog.csdn.net/f704084109/article/details/79846107

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值