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]
网友评论