Python基础系列:(五)Python函数嵌套、递归、os模块文件处理


前言

Python系列文章主要是记录自己学习成果及知识输出整合,提供一个温故而知新的场所。
本篇主要记录Python的函数嵌套、递归、os模块文件处理。


一、函数嵌套

函数体中调用其他函数(可以调用自己)

def a():
	print('这里是a函数')

def b():
	a()
	print('这里是b函数')
# 以上b函数的函数体里面调用了函数a,就称为嵌套。

# 在函数里面再定义函数
def c():
	def d():
		print('这里是d函数')
	return d
#那如何调用呢?
value = c()  #这里value所接收到的值就是函数d,但要执行函数d那么就要加上括号
value()
	
# 也可接收函数名
def e(a):
	a()
	print('这里是e函数')
e(b)
# 函数可以作为返回值也可以作为函数的参数

二、Python递归函数

递归函数:函数体中调用自己本身,也属于函数嵌套的一种

'''
递归函数:自己调用自己本身函数
注意:1、结束条件
	  2、递推的条件
'''

# 示例:计算阶乘
def sample(n):
	if n == 1: # 结束条件
		return 1
	return n*sample(n-1) # 递推条件
# 假设输入的值是5
# 因为5不为1所以
sample(5)=5*sample(5-1)
# 又因为sample(5-1)中n=4,也不等于1,故
sample(5) = 5*4+sample(4-1)
# 以此类推,当n减到1时 跳出函数,也就不在循环
sampl(5) = 5*4*3*2*1 =120


# 示例:斐波那契数列:1,1,2,3,5,8,13......n 
# 假设传入的值是3,那么应该输出2,第三个数值是2,如果传入4应该输出3
def fbnq(n):
	# 分析数列的规律,如果n=1,那么输出1,
	#                  n=2,也是输出1,所以停止条件就是 n == 1 or n == 2:
	if n == 1 or n == 2:
		return 1
	# 前面是n=1或n=2,那么n=3,就是前面两个之和也就是n-1,n-2的和
	return fbnq(n-1) + fbnq(n-2) 
# 以下使用遍历的方式,就可展示整个数列
num = []
for i in range(1, 5):
	num.append(fbnq(i))
print(num)

三、os文件处理

文件处理流程,跟我们常规手动操作文件一样:

  • 打开文件
  • 对文件句柄进行相应的操作
  • 关闭文件
'''
open 内置函数,open底层调用的是操作系统接口
f1文件句柄。对文件进行的任何操作,都得通过文件句柄的方式
encoding:可以不写,不写参数,默认编码本:操作系统默认的编码
windows:gbk
Linux: utf-8
mac:utf-8
f1.close(): 关闭文件句柄
'''
# 打开文件 open(),获取文件内容(对文件进行读操作)
file = 'D:\\test.txt'
f1 = open(file, 'r')
result = f1.read()  # read()是读取内容的函数
print(result)
f1.close()

# 打开文件 open(),对文件新增内容(对文件进行写操作)
f = open(file ,mode='w')
f.write('sdd')  # write() 是写入内容的函数
f.close()

# 另一种打开文件的方式,更便捷,防止前一种忘记写close()函数,导致占用系统内存
with open('D:\\test.txt') as f1:
	print(f1.read())

mode参数

参数值释义
r以只读方式打开文件。文件的指针将在文件开头。这是默认模式
rb以二进制格式打开一个文件用于只读。一般用于非文本文件如图片等
r+打开一个文件用于读写(文件的指针将在文件的开头)
w打开一个文件只用于写入,如果文件存在,删除重新编辑,否则新建
wb以二进制格式打开一个文件只用于写入
w+打开一个文件用于读写,如果文件存在,删除重新编辑,否则新建
a打开文件追加内容,存在文件,在文件原内容后增加,否则新建写入
a+打开一个文件用于读写,存在文件,在文件原内容后增加,否则新建写入
ab以二进制格式打开一个文件用于追加。存在文件,在文件原内容后增加,否则新建写入
ab+以二进制格式打开一个文件用于读写。存在文件,在文件原内容后增加,否则新建写入

"""
示例:
文件的改的操作
    1.以读的模式打开原文件
    2.以写的模式创建一个新文件
    3.将原文件的内容读出来修改成新内容,写入新文件
    4.将原文件删除
    5.将新文件重命名成原文件
"""
# 普通版

# 1.以读的模式打开原文件
# 2.以写的模式创建一个新文件
with open(file, encoding='utf-8') as f1,open(file+'.bak', encoding='utf-8', mode='w') as f2:

# 3.将原文件的内容读出来修改成新内容,写入新文件
    old_content = f1.read()
    new_content = old_content.replace('sd', '不要')
    f2.write(new_content)
# 4.将原文件删除
os.remove(file)

# 5.将新文件重命名成原文件
os.rename(file+'.bak', file)


# 进阶版

# 1.以读的模式打开原文件
# 2.以写的模式创建一个新文件
time.sleep(2)
with open(file, encoding='utf-8') as f1, open(file+'.bak', encoding='utf-8', mode='w') as f2:
    # 3.将原文件的内容读出来修改成新内容,写入新文件
    for line in f1: # 第一次循环第一行
        new_line = line.replace('不要', 'ss') # 修改内容
        f2.write(new_line)

# 4.将原文件删除
os.remove(file)

# 5.将新文件重命名成原文件
os.rename(file+'.bak', file)

总结

以上就是文章要表达的内容,本文简单介绍了Python函数嵌套、递归、os模块文件处理的概念以及应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值