某些写法
"%(name)s" % {"name":"school"} "school" #命名式
"student"%{"name":"school"} "student" # 注意:不报错
"student" % "school" #报错
"%s" % "teacher" "teacher" #常用写法
"%(num).2f" % {"num":2.1234} 2.12 # 命名式
"%.2f" % {"num":2.1234} #报错 # 注意:报错了。。。。
"%.2f" % 2.12345 2.12 #常用写法
发现自 scrapy-redis 源码 的用法
if self.redis_key is None:
self.redis_key = settings.get(
'REDIS_START_URLS_KEY', defaults.START_URLS_KEY,
)
self.redis_key = self.redis_key % {'name': self.name}
scrapy 源码:
class Request(object_ref):
def __init__(self, url, callback=None, method='GET', headers=None, body=None,
cookies=None, meta=None, encoding='utf-8', priority=0,
dont_filter=False, errback=None):
assert callback or not errback, "Cannot use errback without a callback"
self.callback = callback
self.errback = errback
self.cookies = cookies or {}
self.headers = Headers(headers or {}, encoding=encoding)
self._meta = dict(meta) if meta else None
其中部分写法:
a = None or {} # a = {}
a = 0 or {} # a = {}
a = 1 if 2>3 else 2 # a = 2
a = 1 or {} # a = 1
assert 0, '0 is false' #注释
Traceback (most recent call last):
File "rss.py", line 19, in <module>
assert 0 ,"0 is false"
AssertionError: 0 is false
class C(object):
def __init__(self):
self._url = {}
@property
def url(self):
return self._url
c = C()
print c.url # {}
c.url['h'] = '1' #为什么可以这么用呢?因为c.url 会把self._url 这个变量返回,它是一个字典,相应的就可以按字典方式处理。同理,如果self._url = [] 那么c.url 就是一个列表,它就有列表的各种方法
print c.url #{'h':'1'}
print type(c.url) # <type 'dict'>
class C(object):
@property
def url(self):
print self.__class__ # <class '__main__.C'> C 类自身
cls = self.__class__
return cls() # C 类对象
print C # <class '__main__.C'>
c = C()
print c # <__main__.C object at 0x7f163a075f90>
print c.url # <__main__.C object at 0x7f1638732810>
通过 key 分组的时候,不得不每次检查 key 是否已经存在于字典中。
data = [('foo', 10), ('bar', 20), ('foo', 39), ('bar', 49)]
groups = {}
for (key, value) in data:
if key in groups:
groups[key].append(value)
else:
groups[key] = [value]
pythonic
# 第一种方式
groups = {}
for (key, value) in data:
groups.setdefault(key, []).append(value)
#setdefault 方法,字典存在该键,那么就返回该键对应的值,如过字典不存在该键,那么就在字典中创建这组键值对,后面的append() 的是链式操作。
# 第二种方式
from collections import defaultdict
groups = defaultdict(list) # 使用的是collections模块
for (key, value) in data:
groups[key].append(value)
浙公网安备 33010602011771号