美文网首页
python遇到的一些坑

python遇到的一些坑

作者: 都江堰古巨基 | 来源:发表于2018-01-23 15:59 被阅读0次

    python中的hasattr、getattr、setattr

    hasattr:判断一个对象里面有没有这个属性,用法:hasattr(object, name) 返回结果为TRUE或是False
    getattr:获得一个对象里面的某个属性,用法:print getattr(Instance , 'name', 'not find') 
    # 如果Instance对象中有属性name则打印self.name的值,否则打印'not find'
    setattr:设置一个对象里面的这个属性,用法:setattr(pub, 'second_name', []) #在pub里面设置一个名为second_name的空列表。
    

    django中的ORM中foreignkey和manytomany的不同:

    foreignkey会返回一个实例,而manytomany返回的是一个QuerySet

    python特殊骚操作之yield(多用于异步):

    yield是python中特有的骚操作,它相当于一个return。但它的独特之处在于它返回了值之后不会重新开始迭代,而是从上次开始迭代的地方开始执行。

    # 实例代码:
    
    def yield_test(n):
        for i in range(n):
            yield call(i)
            print("i=", i)
            # 做一些其它的事情
        print("do something.")
        print("end.")
    
    def call(i):
        return i * 2
    
    # 使用for循环
    for i in yield_test(5):
        print(i, ",")
    

    将原字典dict进行反转得新字典new_dict,由原来的K-V存储形式,变为V-K存储形式:

    old_dict = {"t":"123","w":"345"}
    new_dict = {v : k for k, v in old_dict.items()}
    print new_dict
    
    # 输出:
    {"123":"t","345":"w"}
    

    关于assert

    assert 多用于多个错误的时候精确定位到哪个错误的时候用。
    用法:

    # assert 某个条件,抛错信息
    # 如下:
    assert 2==1,'2不等于1'
    

    需要注意的地方:
    python2中报错不支持中文
    即python2 中只能:

    assert 2==1,'2 is not equal 1'
    

    生成器不可以直接使用,需要遍历后才能使用

    my_gentor = (i for i in range(10))
    print([i for i in my_gentor]) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    my_list = [i for i in range(10)]
    print(my_list)               # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    相关文章

      网友评论

          本文标题:python遇到的一些坑

          本文链接:https://www.haomeiwen.com/subject/efisaxtx.html