zoukankan      html  css  js  c++  java
  • 第七节:迭代器、生成器、装饰器

    f.read(3)代表读取3个字符,如果是b模式打开的文件,则是读取三个字节
    f.flush将文件从内存刷到硬盘
    f.closeed文件如果关闭则返回True
    f.encoding查看使用open打开文件的编码


    tell查看光标位置
    seek移动光标
    truncate截断文件
    0模式,从开头开始移动光标位置,默认模式就是0,以r模式打开就行
    1模式,从上一次的光标位置开始移动(要以rb的方式读 文件)f.seek(10,1)
    2模式,从文件末尾开始倒着移动光标f.seek(-10,2),注意windows行尾有 ,多用在写日志文件的时候

    循环文件的方式:
    for i in f:这样用到的时候才会读到内存中
    for i in f.readlines():这样是是把文件所有内容读到内存中
    for i in f:
    f.seed(-3,2)

    迭代器
    递归:自己调用自己,将处理结果不断地传递给自己处理,直到得到最终结果
    可迭代对象:更新换代,每次得到的结果都是基于上一次
    for循环的机制(很重要)
    while循环模拟for循环的工作机制
    li = [1,2,3,4,5]
    li_iter=li.__iter__()
    while True:
    try:
    print(li_iter.__next__())
    except StopIteration:
    print("迭代完毕,终止打印")
    break

    生成器:就是可迭代对象,不需要通过_iter_()进行转换,直接调用方法._next_(),或者函数nest(),生成器的值只可以取一次
    生成器函数:函数族后yiel代替return,可以yield多从,retrun只可以一次
    列表解析:[ 'bb%s' %i for i in range(10) ],三元表达式规则,把[]换成()就变成了生成器表达式

    三元表达式:
    "sd" if name == "sdd" else "sb"
    一元 二元 三元

    列表解析:
    [ 'bb%s' %i for i in range(10) ] 生成列表,数值较大的时候会占用内存

    装饰器:本质就是函数,功能激素hi为其他函数添加附加功能

    原则:

    1、不修改被修饰函数源代码

    2、不修改被修饰函数的调用方式

    知识储备:

    1、高阶函数、2、函数的嵌套  3、闭包

    @timmer 在修饰的函数之前定义一下,相当于test= timmer(test) 

    
    
    import time
    def timmer(func):
    def warper(*args,**kwargs):#处理多个参数
         strat_time = time.time()
    res=func(*args
    ,**kwargs)#处理多个参数及返回值
         stop_time = time.time()
    print("程序运行时间:%s" %(stop_time-strat_time))
    return res #处理返回值
     return warper
    @timmer #调用装饰器
    def test(name,age):
    time.sleep(
    2)
    print("我的名字是:%s,我的年龄是%s 运行完毕"%(name,age))
    return "这是test的返回值"

    print(test("sss",16))
    我的名字是:sss,我的年龄是16 运行完毕 程序运行时间:2.000950336456299 这是test的返回值
    
    

    解压序列

    l=[1,2,3,4,5,6,7]

    a,*_,c=1 

    a=1

    c=7

    变量值交换

    f1=1

    f2=2

    f1,f2=f2,f1

    #处理返回值
  • 相关阅读:
    修改python的pip下载源
    MySQL_Sql_打怪升级_进阶篇_进阶12: DDL常见数据类型
    【Xshell】SFTP子系统申请已拒绝,请确保SSH连接的SFTP子系统设置有效
    MySQL_Sql_打怪升级_进阶篇_进阶11: DDL数据定义语言
    MySQL_Sql_打怪升级_进阶篇_进阶10: DML数据操纵语言
    MySQL_Sql_打怪升级_进阶篇_进阶9:联合查询
    MySQL_Sql_打怪升级_进阶篇_ 进阶8:分页查询
    MySQL_Sql_打怪升级_进阶篇_进阶7:子查询
    MySQL_Sql_打怪升级_进阶篇_进阶6:连接查询
    Ubuntu出现E: Failed to fetch
  • 原文地址:https://www.cnblogs.com/sxdpython/p/12657134.html
Copyright © 2011-2022 走看看