zoukankan      html  css  js  c++  java
  • 装饰器和偏函数

    1. 装饰器

    概念:是一个闭包,把一个函数当做参数返回一个替代班的函数,本质上就是一个返回函数的函数。

    def func1():
        print('the bryce is handsome')
    
    def outer(func):
        def inner():
            print('******')
            func()
        return inner
    
    #f是func1的加强版本
    f=outer(func1)
    f()
    

    稍微复杂一点的装饰器:

    
    
    
    
    def outer(func):
        def inner(age):
            if age<0:
                age=0
            func(age)
    
        return inner
    
    # 使用@符号将装饰器应用到函数
    
    @outer #相当于s=outer(say) 
    def say(age):
        print("bryce is %d years old "%(age))
    s=outer(say)
    s(-10)

    * 通用装饰器*

    
    def outer(func):
        def inner(*args,**kwargs):
            #添加修改的功能
            func(*args,**kwargs)
        return inner
    
    
    @outer
    def say(name,age):
        print("my name is %s,i am %d years old "%(name,age))
    
    

    2. 偏函数

    把一个参数固定住,形成一个新的函数

    import functools
    
    int3=functools.partial(int,base=2)
    print(int3("1010"))
    
    
    #偏函数
    def int2(str,base=2):
        return int(str,base)
    
    print(int2("1010"))

    3. 变量的作用域

    局部作用域
    全局作用域
    內建作用域

    4. 异常处理

     try.....except.....else
    

    格式:

    try:
        语句t
    except 错误码 as e:
        语句1
    except 错误码 as e:
        语句2
    ......
    except 错误码 as e:
        语句n
    
    else:
        语句e
    (finally:)
        ***

    断言:

    def function(num,div):
        assert(div!=0),"div不能为0"
        return num/div
    
    print(function(10,0))

    5. 文件读写

    读文件

    (1)打开文件
    open(path,flag[,encoding,errors])
    path:要打开文件的路径
    flag:打开方式

    r 以只读的方式打开文件,文件的描述符放在文件的开头
    rb 以二进制格式打开一个文件用于只读,文件的描述符在文件的开头
    r+ 打开一个文件用于读写,文件的描述符放在文件的开头
    w 打开一个文件只用于写入,如果该文件已经存在则覆盖,若不存在,则创建新文件
    wb 打开一个文件只用于写入二进制,如果该文件已经存在则覆盖,若不存在,则创建新文件
    w+ 打开一个文件用于读写,如果该文件已经存在则覆盖,若不存在,则创建新文件
    a 打开文件用于追加
    a+

    encoding:编码方式
    errors:错误处理

    (2)读文件内容
    读取文件的全部内容

    
    path=r"C:Users92924Desktopfile.txt"
    f=open(path,"r",encoding="utf-8",errors="ignore")
    
    str=f.read()
    print(str)
    
    

    读取指定字符数

    
    path=r"C:Users92924Desktopfile.txt"
    f=open(path,"r",encoding="utf-8",errors="ignore")
    
    str=f.read(10)
    print(str)
    
    

    读取整行

    
    path=r"C:Users92924Desktopfile.txt"
    f=open(path,"r",encoding="utf-8",errors="ignore")
    
    str=f.readline()
    print(str)
    
    

    读取所有行,并返回列表

    
    path=r"C:Users92924Desktopfile.txt"
    f=open(path,"r",encoding="utf-8",errors="ignore")
    
    str=f.readlines()
    print(str)
    
    

    (3)关闭文件

    f.close()
    

    完整简洁写法:

    
    path=r"C:Users92924Desktopfile.txt"
    with open(path,'r',encoding='utf-8')as f:
        print(f.read())
    

    写文件

    (1)将信息写入缓冲区

    f.write("Bryce is a good man")
    

    (2)刷新缓冲区
    直接将缓冲区的数据立刻写入文件,而不是被动等待自动的刷新。
    (缓冲区满的时候会自动刷新)
    f.flush()

    完整写文件:

    with open(path,'a') as f:
        f.write("good man")
    

    编码与解码

    编码:encode()
    解码:decode()

  • 相关阅读:
    ubuntu lock
    ubuntu 源
    ubuntu server版 ssh配置有时没有sshd_config文件或者空文件的情况
    pip3 install tensorflow==2.2
    tensorflow安装提示load 失败
    wXgame上某游戏封包分析
    lazarus 使用微软detour库 delphi
    dll函数导出
    Error: Duplicate resource: Type = 24, Name = 1, Lang ID = 0000
    Tests run: 3, Failures: 0, Errors: 3, Skipped: 0, Time elapsed: 0.065 s <<< FAILURE!
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387008.html
Copyright © 2011-2022 走看看