美文网首页
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