Python Exception class中的args属性

话说今天青蛙遇到了一个bug,在某个Exception里抛出了TypeError Exception, 青蛙仔细查了半天,才想到Exception有一个内置属性args,刚好跟这个Exception 定义中的args重名。

首先看下这个Exception的定义:

In [4]: class E(Exception):
    def __init__(self, a, b, c):
        Exception.__init__(self)
        self.a = a
        self.args = b
        self.c = c
    def __str__(self):
        return "a = %r, b = %r, c = %r" % (self.a, self.args, self.c)
....:

当这个Exception被触发时,又引发了一个TypeError:

In …
more ...

Python中关于变量作用域的一些demo

其实青蛙不是很想在blog里面说编程方面的东西,毕竟青蛙自己只 是个半调子,怕言多有失。不过这次遇到了一个很常见又很有趣的 问题,记下一笔,权当取乐。

话说上周一个同事在patch里面使用了一种比较hacker的方法[1]:

使用定义list成员的方式把函数的局部变量传递给sub-function并 在sub-function修改其内容。

这种做法被其他同事猛烈的抨击,实际上在python2.x中,因为语言 实现的问题,嵌套的子函数是没法直接写它的上层函数的变量的。

这个问题之前在Team内部没有引起足够的重视,大家习以为常的在 子函数里直接给一个父函数的变量赋值,结果都是错的,这个赋值 操作会直接引发异常。

有人总结了一下python嵌套子函数访问变量的行为[2]:

In Python 2.x, it is not possible to modify a non-local variable;
you have either read-only access to a global or …
more ...

在Twip中转换t.co链接

自从Twitter强制把所有链接都转换为t.co之后,在手机上访问这些地址就成了大问题,开VPN慢,绕了一圈发现是国内地址,不开干脆访问不能。于是青蛙一直酝酿在Twip那里把短链接扩展。

今天有时间,研究了一下,本来打算自己写的,但是本着不重复造轮子的态度,写之前google了一下,这不,这位同学已经写好了: http://hjin.me/code/727/ , 全部修改的代码贴到了这里: http://pastebin.com/f4Gw0DND 青蛙拿过来直接扔进twip,问题解决。

青蛙在这放出一个基于twip r204版本的patch吧,另外还有一个小修改的补丁,修复一些情况下的警告信息。

0001-twip-enable-expand-tco-link.patch

0002-twip-fix-some-warning-msg-in-expand-tco-link-patch.patch

这个修改只能解决t.co的问题,没办法解决其他被关照到的短网址服务, 所以青蛙仍然酝酿着什么时候搞一个把所有短网址都展开的补丁。

不过青蛙看php代码实在是头疼,只好下次有时间再硬着头皮读代码改吧。

more ...

Markdown语法摘要

下面是Markdown语法的简要列表,便于以后查阅。 以下内容主要从 牧码志 整理,感谢leninlee的辛勤劳动。

  • 链接的添加,共有三种形式,Markdown支持相对链接。

    <链接>:这种形式只是简单的标出链接;
    [文字](链接 "标题"):给文字添加链接,其中标题是可选的;
    [文字][标记]:给文字添加链接,链接在下面的一个以[标记]开头的新行(一般是文章末尾)给出。 或者直接以[文字][]这种形式编写,在下面的新行中使用[文字]:链接的形式声明链接。

  • 图片的添加:跟链接比起来,图片只是多了在前面多了一个叹号!

  • 标题格式:Markdown提供了2种方式。

    第一种是在标题前面加上1~6个#表示<h1>~<h6>
    第二种是在标题下面另起一行,输入四个以上的等号=来表示<h1>, 输入四个以上的减号-来表示<h2>

  • 粗体和斜体:用星号"*"或者下划线 …

more ...