python基础三

文件操作

我们先来模拟一个登陆页面,当三次输入错误后则加锁。
这里写图片描述
这里写图片描述
此时若再次执行程序,会发现无法执行,且程序所在工程中产生了一个lock.log文件。

生成文件对象
python中使用open函数生成文件对象。
fileobject = open(filename,mode)
filename:文件路径
mode:对文件的操作
这里写图片描述

文件对象方法
String = FileObjext.readline([size])
每次读取文件的一行
size:是指每行每次读取size个字节,直到行的末尾

List = FileObject.readlines([size])
多行读,返回一个列表
size:每次读入size个字符,然后继续按size读,而不是每次读入行的size个字符。

String = FileObject.read([size])
读出文件的多用内容,并复制给一个字符串
size:读出文件的前【size】个字符,并输出给字符串,此时文件的指针指向size处。

FileObject.next()
返回当前行,并将指针指向下一行

FileObject.write(string)
FileObject.writelines(List)
write和writelines在写入数据前是否清除文件中原来所有的数据,再重新写入新的内容,取决于打开文件的模式。

FileObject.seek(偏移量,选项)
(1)选项=0时,表示将文件指针指向从文件头部到“偏移量”字节处
(2)选项=1时,表示将文件指针指向从文件的当前位置,向后移动“偏移量”字节
(3)选项=2时,表示将文件指针指向从文件的尾部,向前移动“偏移量”字节。

FileObject.flush()
提交更新

FileObject.close()
关闭打开的文件对象,每次调用都需要使用

f = open('first.txt','r')
f.read()
f.close()

如果考虑到异常处理的情况,我们通常用以下方式打开一个文件:

with open('file') as f:
    s = f.read()

自定义函数

def functionName(parameter1,parameter2):
    “” ”注释”””
    statement1
    statment2

    return valueToReturn

这里写图片描述

我们来用函数写一个猜数字的小游戏:
这里写图片描述
这里写图片描述

函数返回值:
(1)函数被调用后悔返回一个指定的值
(2)函数调用后默认返回None
(3)return 返回值
(4)返回值可以是任意类型
(5)return执行后,函数终止
(6)区分返回值和输出

和C++相同,在函数体内定义的变量是局部变量,它的改变不会引起这个变量值的改变。python中,声明一个全局变量必须加上global关键字。

列表和字典也可以作为函数参数进行传递
这里写图片描述

参数冗余处理
通常情况下,当我们调用函数时的实参个数大于形参个数时,会出现报错的现象,但如果在定义函数时做特殊处理,则不会报错。
这里写图片描述
在定义函数时多传入一个*arg,则实参中冗余的参数都会被写入arg中。

但如果是在指定默认参数的情况下呢?
我们需要再加入一个接收字典类型的形参。
这里写图片描述

内置函数:
有很多函数python已经为我们提供了,我们不需要每一个函数都自己去完成。
python中的内置函数:
http://www.runoob.com/python/python-built-in-functions.html

匿名函数—lambda
lambda函数是一种快速定义单行的最小函数,是从Lisp借用来的,可以用在任何需要函数的地方。
lambda函数的特点:
(1)使用python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
(2)对于一些抽象的,不会在别的地方再复用的函数,有时候给函数起个名字也是难题,使用lambda不需要考虑命名的问题
(3)使用lambda在某些时候让代码更容易理解

lambda应用实例:
reduce为主次操作list里的每项,接收的参数为两个,最后返回的为一个结果。
这里写图片描述
使用lambda匿名函数就不需要再先定义一个myadd函数,可直接按照下面的代码计算:
这里写图片描述

序列处理函数:
filter(function, iterable)
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该函数接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,python2中返回的是过滤后的列表, 而python3中返回到是一个filter类

filter类实现了iternext方法, 可以看成是一个迭代器, 有惰性运算的特性, 相对python2提升了性能, 可以节约内存.

这里写图片描述

zip()
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同

这里写图片描述
map()
map() 会根据提供的函数对指定序列做映射。
map(function, iterable, …)
function – 函数,有两个参数
iterable – 一个或多个序列

Python 2.x 返回列表。
Python 3.x 返回迭代器。

这里写图片描述

生成器表达式—yield
这里写图片描述

yield和return不能再同一个分支同时使用,可以在不同的分支出现
这里写图片描述

这里写图片描述

装饰器
装饰器的作用是为了实现代码重用。
这里写图片描述
这里写图片描述
在上述代码中,deco函数是用来计算某个函数的运行时间的,这样的代码可能会被经常重复调用,这个时候我么就该考虑装饰器了。
装饰器的返回值是另一个函数,这样在调用其他函数之后,可以使得该函数的名称发生变化。
这里写图片描述
但这样的代码有些繁琐,每一次都需要接收返回值,python提供了装饰器的语法糖‘@’来精简代码。
这里写图片描述

闭包
闭包是词法闭包的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,闭包是由函数与其相关的引用环境组合而成的实体。

创建闭包:
(1)闭包函数必须有内嵌函数
(2)内嵌函数需要引用该内嵌函数上一级变量
(3)闭包函数必须返回内嵌函数

这里写图片描述
这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值