python的函数和文件操作

函数

为了提高代码的利用率,我们需要将重复的代码包装成一个函数来进行使用,这样可以提高工作效率,也便于代码的管理,在python中,我们需要使用def来定义一个函数,函数名最好使用下划线法来进行命名,符合代码规范,需要调用函数的时候只要写函数的名字加小括号就可以调用了
在这里插入图片描述
在这里插入图片描述同时可以在定义函数的时候在括号内加上参数来丰富函数的功能,参数的形式有普通参数,默认参数,不定长参数,不定长参数有两种,带一个*号的与带**号的,区别在于一个接收的是不定长的普通参数,两个接收的是定长的字典参数
在这里插入图片描述
在这里插入图片描述参数的传递顺序必须按照首先普通参数,然后默认参数,接着不定长参数,不定长参数(*args)要在(**kwargs)之前。同时,函数可以返回值,用return来返回,注意一旦返回值函数之后的代码就不会执行了,函数已经结束,若要返回多个值,需要在同一句return语句中返回
在这里插入图片描述
在这里插入图片描述
可以看到返回之后的那一句并没有执行,返回多个值的时候返回形式是以元组的形式返回

在这里插入图片描述

局部变量与全局变量

局部变量是指在函数内使用的变量,在函数外这个变量不存在,不可用,全局变量则是在整个程序运行过程中起作用,在函数内外均可以使用,若要在函数内声明全局变量,需要在变量声明前加global关键字
在这里插入图片描述
在这里插入图片描述
可以看到局部变量b在函数内可以正常使用,但是在函数外则显示未定义,但在函数内声明的全局变量c可以在函数外正常使用

递归函数

递归函数是指在函数调用函数自身,相当于一个循环,故也有可能像while一样可能造成死循环,所以一定要定义递归的边界,什么时候退出循环,比较明显的递归例子有斐波拉契数列,汉诺塔,阶乘等,这里示例来做一个求和的递归函数,输入一个整数n,求1+2+3+4+…+n的值
在这里插入图片描述
在这里插入图片描述

匿名函数

匿名函数,也就是lambda函数,意义:在我们声明函数的过程中太过复杂,甚至是对一些简单的函数也需要几行才可以完成,而且函数多了名字会有重复的问题,为了简便函数的声明,于是引入了匿名函数,匿名函数不用单行命名重复的问题,适用于生成简单的函数,复杂的函数则不适用。
在这里插入图片描述

关于filter(过滤),map(刷子),reduce(合并)

filter是过滤出满足条件的元素,需要传入两个参数,第一个是函数,也就是过滤条件,可以使用lambda匿名函数,第二个参数传入范围,也就是被过滤的值,示例
在这里插入图片描述
map和filter类似,也需要传入两个参数,首先是一个函数,然后是作用范围,map的功能是将后面作用范围内的每一个值都采用前面的函数运算,示例
在这里插入图片描述
reduce与前两个不同,使用前需要先导入,因为在python3中,reduce不是内建函数了,需要先从functools中导入在使用,传入的参数还可以多一个初始值,reduce的作用是将后面的作用值依次参与前面函数的运算,最后返回一个值,示例
在这里插入图片描述

文件操作

在我们进行编程的时候,总会有input和output,对于文件的操作也是,尤其是在Linux中,有着一切皆文件的说法,对于文件的操作一般有三种,读,追加写入,覆盖写入,也就是我们通常所说的io操作,python中对于文件的操作是通过open来操作的,open需要的参数有文件名,打开方式,打开方式又分为多种,r:只读,r+:读写,指针在文件开头,rb:以二进制只读,一般带b的二进制操作针对于非文本操作,w:覆盖写入,w+:读写,指针在开头,wb:二进制写入,a:追加写入,指针在文件末尾,a+:读写,ab:二进制追加写入,还有rb+:二进制读写,wb+:覆盖写入追加,ab+:二进制追加,在打开文件操作完毕后,一定要关闭文件,读取文件方法为,readlines:按行读取整个文本并返回,readline:读取当前指针所在的行并返回,然后指针指向下一行 ,read(number)读取规定字节数量的内容,write方法用于写入文本,写完换行
在这里插入图片描述
然后可以根据文件形式和需求看是否进行二进制操作,需要二进制操作则加上b
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此外,我们还可以用tell方法来获取当前指针的位置
在这里插入图片描述
在这里插入图片描述
数字14和30指的是当前二进制位置。
对于文件操作,还有专业的os模块可以使用,对于文件和文件夹得操作十分方便。比如说,可以用name方法来获取当前工作的平台是windows还是Linux,"nt"表示是windows平台
在这里插入图片描述
使用os.getcwd()可以获取当前执行程序的路径
在这里插入图片描述
使用os.listdir()来获取目录下的所有文件和文件夹
在这里插入图片描述
使用os.mkdir()创建新目录
在这里插入图片描述
使用os.remove()删除文件,使用os.rmdir()删除文件夹,创建多层文件夹使用mkdirs(),使用path.isdir()判断是否是一个文件夹,使用path.isexist()判断文件或者文件夹是否存在,使用chdir()改变当前工作目录,使用path.xxx()来进行相关路径的操作
在这里插入图片描述
在这里插入图片描述
注:windows平台下os.path.isexist()不存在

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值