Continuous Learning on Python (2): 函数参数的默认值

首先看一段代码:

def extendDict(key, value, dic={}):
    dic[key] = value
    return dic

dict1 = extendDict("a", 1)
dict2 = extendDict("b", 2 ,{})
dict3 = extendDict('c', 3)

print dict1
print dict2
print dict3

Continue reading “Continuous Learning on Python (2): 函数参数的默认值”

太习惯apt-get不好:记录一下uwsgi安装过程

习惯了ubuntu上的apt-get, 今天在一台新的Ubuntu上安装uwsgi的时候也用了uwsgi, 结果各种不对,比如“socket未指定”,”wsgi-file 不支持”等,后来发现是uwsgi的版本太老,默认repo安装的2.0.7-debian. 但最新的稳定版已经是2.0.12了。官网推荐使用pip安装,于是照着做了一下, 发现始终是2.0.7-debian. 只能先用apt-get purge卸载,并再次用pip安装。

也顺便亲自体会到了apt-get remove和apt-get purge的区别。remove不会删除配置文件,purge会. 所以我的情况是:apt-get remove成功之后,uwsgi命令还是可用并且版本是2.0.7. 必须执行apt-get purge之后,uwsgi 2.0.7才真正卸载。

最后总结下,记住以后装uwsgi要这样:

apt-get install python-dev
apt-get install python-pip
pip install uwsgi

使用SQLAlchemy时遇到”#2006: MySQL server has gone away”

使用Python+MySQL开发的童鞋,无论你用了什么web框架,只要你用了SQLAlchemy这个ORM框架(实际上这是最好的选择),早晚都会遇到一个问题,那就是”#2006: MySQL server has gone away”:

MySQL_server_has_gone_away

很不幸地,很自然地,本人也遇到了,下面听我慢慢道来。先说一下现象,再看一下原因,最后看下解决办法。不喜欢啰嗦的请坐电梯直接到解决方案。

Continue reading “使用SQLAlchemy时遇到”#2006: MySQL server has gone away””

Continuous Learning on Python (1): classmethod and staticmethod

python类里面可以定义三类方法: instance method(实例方法), static method(静态方法)和class method(类方法)。

熟悉java和c#的童鞋都能很轻松的理解什么事instance method和static method,前者顾名思义是属于类的实例,需要通过实例来调用,而后者是通过类名来调用,不绑定具体的实例:

class Foo():
{
    public int InstanceMethod() { return 1; }
    public static int StaticMethod() { return 2; }
}

Continue reading “Continuous Learning on Python (1): classmethod and staticmethod”