zoukankan      html  css  js  c++  java
  • [python]学习Django中的python知识拾遗

    1、使用正则表达式进行URL匹配

    urlpatterns = patterns('',
        # ...
        (r'^time/plus/d+/$', hours_ahead),
        # ...
    )

    (1)使用r代表字符串是原始字符串,表示python不会对立面的反斜杠转义符进行处理,使用正则表达式一般使用原始字符串。

    (2)使用d+表示匹配1个或者多个数字,如果限定只能使用两个数字,则d{1,2}。

    (3)如果要把正则表达式的某个数作为参数,则用小括号包起来,如(r'^time/plus/(d{1,2})/$', hours_ahead)。

    2、使用timedelta来计算时间差

    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)

    timedelta代表一个时间差,如果用两个datetime对象相减也可以获得一个timedelta。除此之外,可以使用hours,minutes,seconds,weeks等参数来自定义时间差。把datetime对象加减一个timedelta就可以获得一个时间点之前或者之后特定时间差的时间点了。

    3、异常处理格式

    try:
       offset = int(offset)
    except ValueError:
      raise Http404()

    使用try,except xxx: raise xxx()的格式进行异常处理。

    4、每一个类可以定义一个__unicode__方法,告知如何使用unicode的方式打印此类,如

    def __unicode__(self):
            return self.name

    5、把列表中所有对象的同一属性存放于一个列表中

    class sss:
        n=0
    
    l=[a,b,c]
    
    >>> r=[i.n for i in l]
    >>> r
    [2, 4, 3]

    6、结果批量生成列表的方式(lamdba表达式、map、reduce)

    map(function,sequence)
    把sequence中的值当参数逐个传给function,返回一个包含函数执行结果的list。
    如果function有两个参数,即map(function,sequence1,sequence2)。
    >>> squr = lambda x:x**2
    >>> map(squr,[1,3,4,5,6,8])
    [1, 9, 16, 25, 36, 64]

    reduce(function,sequence)
    function接收的参数个数只能为2!
    先把sequence中第一个值和第二个值当参数传给function,再把function的返回值和第三个值当参数传给
    function,然后只返回一个结果。

    例子:
    求1到10的累加
    reduce(lambda x,y:x+y,range(1,11))
    返回值是55。

    filter(function,sequence)
    function的返回值只能是True或False!
    把sequence中的值逐个当参数传给function,如果function(x)的返回值是True,就把x加到filter的返回值里面。一般来说filter的返回值是list,特殊情况如sequence是string或tuple,则返回值按照sequence的类型。

    例子:
    找出1到10之间的奇数
    filter(lambda x:x%2!=0,range(1,11))
    返回值

    [1,3,5,7,9]

    zip,同时处理多个列表

    >>> a=[1,2,3]
    >>> b=[5,6,7]
    >>> for x,y in zip(a,b):
        print x+y
        
    6
    8
    10
  • 相关阅读:
    powerdesigner与数据库之间的连接
    D9-Android自定义控件之动画篇1-ObjectAnimator
    01-React搭建react环境及SCSS的配置
    开源计划之--Android绘图库--LogicCanvas
    5-VVI-材料设计之ToolBar
    4-VVI-材料设计之沉浸标题栏和TextInputLayout
    D8-Android自定义控件之DotNum及item复用问题
    O3-开源框架使用之Butterknife 8.8.1及源码浅析
    TIII-Android技术篇之反射
    TVI-Android技术篇之注解Annotation
  • 原文地址:https://www.cnblogs.com/iyjhabc/p/3859847.html
Copyright © 2011-2022 走看看