叽叽喳喳,嘻嘻哈哈

导航

某些写法

 

"%(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)

  

 

posted on 2017-06-19 20:04  叽叽喳喳,嘻嘻哈哈  阅读(242)  评论(0编辑  收藏  举报