StephenChan's Tech Space 潜心修炼

4Jun/100

URL映射

url映射是目前流行的框架都提供的基本功能,参考了django的url映射的源码,用python实现url映射的主要逻辑还是比较简单的。主要是由两个部分组成:

  • 将处理函数的命名空间解析成模块,使用__import__,导入模块,获取处理函数的引用(见get_callable());
  • 匹配访问路径,提取参数,使用正则表达式进行匹配。
# add url_base as namespace to handlers in url_patterns
def include(url_base, url_patterns):
    for index, src_pattern in enumerate(url_patterns):
        pattern = list(src_pattern)
        pattern[1] = "%s.%s" % (url_base, pattern[1])
        url_patterns[index] = tuple(pattern)
    return url_patterns

# get module name and func name
def get_mod_func(handler):
    try:
        dot = handler.rindex(".")
    except ValueError:
        return handler, ''
    return handler[:dot], handler[dot+1:]
Filed under: Python Continue reading
3Jun/100

Python的logging模块

初次使用logging模块觉得有点诡异,涉及到Logger、Handler、Level等概念,看代码最实际了:

import logging
import sys 

logger = logging.getLogger("endlesscode")
formatter = logging.Formatter('%(name)-12s %(asctime)s %(levelname)-8s %(message)s', '%a, %d %b %Y %H:%M:%S',)
file_handler = logging.FileHandler("test.log")
file_handler.setFormatter(formatter)
stream_handler = logging.StreamHandler(sys.stderr)
logger.addHandler(file_handler)
logger.addHandler(stream_handler)
#logger.setLevel(logging.ERROR)

logger.error("fuckgfw")

logger.removeHandler(stream_handler)
logger.error("fuckgov")

文档上已经说明得很清楚了,有几个比较特别的地方:

Filed under: Python Continue reading
6Feb/100

zz 毕业5年决定你的命运

正如"打工皇帝"唐骏说:"我觉得有两种人不要跟别人争利益和价值回报。第一种人就是刚刚进入企业的人,头5年千万不要说你能不能多给我一点儿工资,最重要的是能在企业里学到什么,对发展是不是有利……"
人总是从平坦中获得的教益少,从磨难中获得的教益多;从平坦中获得的教益浅,从磨难中获得的教益深。一个人在年轻时经历磨难,如能正确视之,冲出黑暗,那就是一个值得敬慕的人。最要紧的是先练好内功,毕业后这5年就是练内功的最佳时期,练好内功,才有可能在未来攀得更高。

Filed under: Python Continue reading