python 可变对象和不可变对象

2014-08-13 by philokey

Python中没有变量,只有对象和名字。万物皆对象。 每个对象都包含一一个标准头,通过头部信息就可以明确知道其具体类型。 头信息由 "引用用计数" 和 "类型指针"组成,前者在对象被引用用时增加,超出作用用域或手工释放后减小,等于 0 时会被虚拟机回收 (某些被缓存的对象计数器永远不会为 0)。用

sys.getrefcount(name)

可以对象查看被引用次数

Python在heap中分配的对象分成两类:可变对象和不可变对象。所谓可变对象是指,对象的内容是可变的,例如list。而不可变的对象则相反,表示其内容不可变。

  • 不可变对象:int,string,float,tuple
  • 可变对象 :list,dictionary

不可变对象

对于不可变对象,尽管对象本身不可变,但名字的对象引用是可变的。

>>> a = 1005
>>> a = 1006 #1005的引用减1, 1006的引用加1,或者是创建的新的对象1006

#不可变对象字符串
>>> str ...
read more

STL笔记

2014-08-10 by philokey

priority_queue自定义比较函数

模板声明带有三个参数

priority_queue<Type, Container, Functional>

Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。 Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list. STL里面默认用的是 vector. 比较方式默认用 operator< , 所以默认为小根堆。

#include < iostream >
#include < queue >
#include < functional >

using namespace std;

class cmp {
public:
    bool operator() (const int& a, const int& b) {
        return a > b;
    }
};

int main() {
    priority_queue ...
read more

博客搭建记录

2014-08-01 by philokey

厌倦了一次又一次去搜相同问题的答案,写个博客把一些东西记录下来吧。 出于黑客精神,决定自己搭建博客。

Wordpress过于庞大,而且我不会PHP,所以选择了基于python的pelican。 由于github有免费的300M空间,所以博客托管再github上。github还有一个好处就是对markdown的支持不错。

不用数据库,全部都以可见文本形式存储,携带迁移,好开心~

2015.11.29 update

谢天谢地有这篇搭建笔记,重新把博客搭起来并迁移到了Python3,真感人。

本地配置Pelican

安装pelican和markdown

pip install pelican
pip install markdown

启动工程

pelican-quickstart

目录树如下

├── content             #存放.mdn文件
├── develop_server.sh   #方便开启测试服务器
├── fabfile.py          #配置文件
├── Makefile            #方便管理博客的Makefile
├── output              #生成的输出文件
├── pelicanconf.py      #主配置文件
└── publishconf.py ...
read more

hello world

2014-08-01 by philokey

Hello World

#include <cstdio>
int main() {
    printf("Hello World\n");
    return 0;
}

测试图片

read more