zoukankan      html  css  js  c++  java
  • python3

    python3 学习笔记
    // r 不转义
    print(r'\t ')
    //'''多行
    print('''afa
    afa
    afaff''')
    10//3 =>3
    内存中统一用unicode编码 当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码
    Python 3版本中,字符串 str 类型 是以Unicode编码的
    ord/chr
    b'ABC'  bytes类型,每个字符只一个字节
    encode.('utf-8/ascii')  //结果bytes
    len('中文') //2
    list
    类型可不同,pop(1) 删除index为1的元素
    append/insert/pop
    tuple
    list(range(5)) //[0,1,2,3,4]
    dict
    key一定要是不可变对象 str 不可变 可作key
    d.get('k')  //不存在返回None
    d.get('k',-1) //不存在返回-1
    'k' in d //用in 判断在不在
    set
    set([1,2,3])
    无序不重复元素集合,看成是dict的key的集合
    add/remove
    多个变量可以同时接收一个tuple,按位置赋给对应的值 返回一个tuple可以省略括号
    默认参数必须指向不变对象
    def add_end(L=None):
        if L is None:
            L = []
        L.append('END')
        return L
    调用时 *nums表示把nums这个list的所有元素作为可变参数传进去
    定义时 *nums nums为有多个传入的值组成的tuple
    定义时 * 后面再用参数为 关键字参数
    for k,v in d.items()
    from collections import Iterable
    isinstance('abc',Iterable)  // 是否可迭代
    for i, value in enumerate(['A', 'B', 'C']): // 像java一样
    >>>generater
    把一个列表生成式的[]改成(),就创建了一个generator
    如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
    可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator
    生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator
    把list、dict、str等Iterable变成Iterator可以使用iter()函数
    Iterator表示的是一个数据流,计算是惰性的,只有在需要返回下一个数据时它才会计算
    返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量
    argv至少有一个元素,因为第一个参数永远是该.py文件的名称

    环境变量PYTHONPATH 会被自动添加到模块搜索路径
    private __xxx
    __name是因为Python解释器对外把__name变量改成了_classname__name
    type/isinstance/dir/getattr/steattr/hasattr
    给实例绑定属性的方法是通过实例变量,或者通过self变量
    不加self的类中定义的变量是 类变量
    千万不要把实例属性和类属性使用相同的名字,因为相同名称的实例属性将屏蔽掉类属性

    from types import MethodType
    s.set_age = MethodType(set_age, s) # 给实例绑定一个方法
    Student.set_score = set_score  #给class绑定方法
    __slots__ = ('name', 'age') # 定义class的时候 用tuple定义允许绑定的属性名称
    __slots__定义的属性仅对当前类实例起作用,对继承的子类是不起作用的
    @property装饰器就是负责把一个方法变成属性调用的
    __len__/__str__/__repr__/__iter__/__next__/__getitem__/__setitem__/__delitem__
    __getattr__ __call__直接调用实例
    metaClass
    class ModelMetaclass(type):
    class Model(dict, metaclass=ModelMetaclass):

    io
    with open('/Users/michael/test.txt', 'w') as f:
        f.write('Hello, world!'
    StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO
    shutil模块提供了copyfile()的函数,你还可以在shutil模块中找到很多实用函数,它们可以看做是os模块的补充   
    序列化,在Python中叫pickling

    print(json.dumps(s, default=lambda obj: obj.__dict__))  #对像转为json
    print(json.loads(json_str, object_hook=dict2student))   #json转对象
    加个?就可以让d+采用非贪婪匹配

  • 相关阅读:
    go-web摘抄1-基础知识
    arduino3-机械臂
    Arduino-2 使用按键开关
    Arduino-1 点亮小灯
    树莓派的语音识别
    gitlab的环境搭建及使用
    python数据处理 2
    idea 无法创建class文件
    Intellij IDEA添加database无法显示表等问题
    Intell idea 添加 jd反编译插件
  • 原文地址:https://www.cnblogs.com/anjuncc/p/5745186.html
Copyright © 2011-2022 走看看