Python3基础之学习笔记(四)-文件-函数-高阶函数-匿名函数

1 文件

1.1 文件简介

打开文件的模式有三种:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;因为会清空原有文件的内容,一定要慎用】
  • a,追加模式。【可读; 不存在则创建;存在则只追加内容;】

注意最后要记得关闭文件:f.close()

1.2 文件使用实例

#!/usr/bin/python
#coding:utf-8
 
"""
@author: GoldenKitten
@contact: GoldenKitten@163.com
@software: PyCharm
@file: file_base.py
@time: 2018/8/11 13:54
"""
 
 
def file_read():
	#f = open('helloworld.txt', 'rb')#以二进制方式读
	#不指定编码默认使用系统编码
	f=open('helloworld.txt','r',encoding='utf-8')#以读的模式打开文件,'r+'是读写模式
	#data=f.readline()#读取一行
	#dataList=f.readlines()#读取所有行存在一个列表里,注意每一行包括\n
	'''
	一行一行的读,高效的读取
	for line in f:
		print(line)
	'''
	data=f.read()#读取文件所有内容,文件指针指向内容结尾,不能应用于大文件
	print(data)
	offset=f.tell()#获取文件指针位置
	print(f.seekable())#判断文件是否可以移动文件指针
	f.seek(0)#将文件指针移到文件内容首部
	print(f.encoding)#获取文件编码
	print(f.truncate(20))#从头开始截断20个字符
	f.close()
def file_write():
	f=open('myfile.txt','w',encoding='utf-8')#以写的模式打开文件,'w+'是写读模式,无法修改原文件内容,只能追加
	data='我爱吃土豆'
	f.write(data)#写入文件,如果文件存在会覆盖原文件内容
	#f.flush()#将缓冲区内容写入文件
	f.close()
def file_append():
	f = open('myfile.txt', 'a', encoding='utf-8')  # 以追加的模式打开文件,'a+'追加读模式
	data='我爱吃西红柿'
	f.write(data)#如果文件存在则在文件末尾添加内容
	f.close()
#文件修改方法,第一种打开两个文件,读取第一个文件内容写到第二个文件里,修改文件内容
 
if __name__ == "__main__":
	#file_read()
	#file_write()
	file_append()
 

为了避免打开文件后忘记关闭,可以通过管理上下文,即用with语句

with open('helloworld.txt','r',encoding='utf-8') as f:

打开多个文件

with open('helloworld.txt','r',encoding='utf-8') as f,\
     open('helloworld1.txt','r',encoding='utf-8') as f1:

2 函数

2.1 函数简介

编程语言中函数定义:一种逻辑结构化和过程化的编程方法。

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。

Python 定义函数使用 def 关键字

def 函数名(参数列表):
    函数体

2.2 函数类型

#!/usr/bin/python
#coding:utf-8
 
"""
@author: GoldenKitten
@contact: GoldenKitten@163.com
@software: PyCharm
@file: func.py
@time: 2018/8/11 16:41
"""
#多个形参定义,参数组,*代表参数不固定
def fun1(*args):
	print(args)#args是一个元组,将N个参数转换成元组
def fun2(grade,**kwargs):#接收一个字典,将N个参数转换成字典
	print(kwargs)#kwargs={'name':'xxx','age':22}
def fun3(a,b=3,*args,**kwargs):#默认参数,args不能接收关键字参数,也就是name='xxx'是接收不了的
	global c
	c=3#加了global代表c为全局变量,没有加则代表c为局部变量,只能在函数内使用和修改
	print(a,b)#a是一个局部变量,不可变类型是不能在局部变量里改变的,列表字典集合不用加global可以直接修改
def main():
	fun1(1,2,3,4)
	fun1(*[1,2,3,4])#*args=*[1,2,3,4] args=tuple([1,2,3,4])
	fun2(30,name='xxx',age=22)#必须以关键字传值,参数组一定要放到最后面
	fun2(30,**{'name':'xxx','age':22})
c=2#a是一个全局变量
if __name__ == "__main__":
	main()

3 高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

def add(x,y,f):
    return f(x)+f(y)
res=add(1,2,abs)#abs是一个标准函数的函数名称
print(res)

4 匿名函数

匿名函数是没有名字的

calc=lambda x:x*3
print(calc(3))
# 结果为9

没有更多推荐了,返回首页