Python
文章平均质量分 65
jasonblog
这个作者很懒,什么都没留下…
展开
-
消去Python中list的重复元素
原文地址:http://www.peterbe.com/plog/uniqifiers-benchmark Fastest way to uniqify a list in PythonSuppose you have a list in python that looks like this: ['a','b','a'] # or like this: [1,2,2,2,3,4,5,6,6,6,6]and you want to remove all duplicates so you get t转载 2010-08-20 14:55:00 · 5007 阅读 · 1 评论 -
[笔记]PyListObject对象
在listobject.h中,有如下定义和注释:typedef struct { PyObject_VAR_HEAD /* Vector of pointers to list elements. list[0] is ob_item[0], etc. */ PyObject **ob_item; /* ob_item contains space for原创 2012-03-10 01:36:58 · 2331 阅读 · 0 评论 -
[笔记]PyDictObject的哈希算法和搜索过程
哈希函数如下:longPyObject_Hash(PyObject *v){ PyTypeObject *tp = v->ob_type; if (tp->tp_hash != NULL) return (*tp->tp_hash)(v); /* To keep to the general practice that inheriting原创 2012-03-10 01:42:54 · 1784 阅读 · 0 评论 -
[笔记]PyDictObject头文件阅读
dictobject.hPyDictObject是一种字典类型,从可哈希的对象映射到另一个对象。然后提到了在Objects目录下,有dictnotes.txt文件,关于字典的使用设计和优化。字典类实际上是维护了一张哈希表,而表项,entry or slot,有3种状态。1. Unused. me_key == me_value == NULL未使用状态,key原创 2012-03-10 01:37:58 · 1820 阅读 · 0 评论 -
[笔记]PyCodeObject初探
在code.h中有PyCodeObject的定义:/* Bytecode object */typedef struct { PyObject_HEAD int co_argcount; /* #arguments, except *args */ int co_nlocals; /* #local variables */原创 2012-03-10 01:44:06 · 2537 阅读 · 0 评论 -
[笔记]Python虚拟机对创建基本内置对象的执行过程
同样的,有demo.py代码如下:i = 1s = "Python"d = {"1":1, "2":2}l = [2, 3]有test.py代码如下:import dissource = open('./demo.py').read()co = compile(source, './demo.py', 'exec')dis.dis(co)输出如下: 1原创 2012-03-10 01:46:40 · 2127 阅读 · 0 评论 -
[笔记]Python虚拟机如何执行“i = 1”
首先写一个demo.py,里面只有一句:i = 1接着写一个test.py,内容如下:import dissource = open('./demo.py').read()co = compile(source, './demo.py', 'exec')dis.dis(co)输出: 1 0 LOAD_CONST 0原创 2012-03-10 01:45:45 · 2574 阅读 · 0 评论 -
[笔记]Python虚拟机的运行时基本知识
首先应该了解程序的运行时刻环境,个人觉得龙书中文版第7章挺通俗易懂的。Python在这方面设计了PyFrameObject这个结构(对应于龙书中的“活动记录”)来维护运行时环境,并采用了“访问链”的思想(龙书中介绍了“访问链”和“显示表”)来解决不同作用域间变量的访问问题。不过在PyFrameObject中维护了3个成员,用来指向最经常使用的3个符号表,内置符号表、全局符号表、局部原创 2012-03-10 01:45:09 · 4850 阅读 · 0 评论 -
[笔记]Python虚拟机对函数的解释
demo.py:i = 1def f(): j = 2f()test.py:import dissource = open('./demo.py').read()co = compile(source, './demo.py', 'exec')print(co.co_name)dis.dis(co)print("\n")fCode = co.co_c原创 2012-03-10 01:47:55 · 2314 阅读 · 0 评论 -
[笔记]Python虚拟机对if语句的解释
demo.py代码如下:a = 1if a > 0: passelif a == 0: passelse: passtest.py代码如下:import dissource = open('./demo.py').read()co = compile(source, './demo.py', 'exec')dis.dis(co)输出结果如原创 2012-03-10 01:47:21 · 2185 阅读 · 0 评论 -
[笔记]Python的字符串对象
PyStringObject定义在stringobject.h中,附有不少注释说明。1. PyStringObject实际上是一组字符,以'\0'结尾,且因为有只是长度的变量,所以也可以包含'\0'作为内容。2. PyStringObject是不可变对象,所以a = "hello"和a = "world"先后执行后,a指向的是不同的对象了。3. PyStringObject保存了has原创 2012-03-10 01:36:12 · 2388 阅读 · 0 评论 -
[笔记]Python的整数对象:PyIntObject
一般没有特指,参考的是Python 2.7.2的源码。在intobject.h的开头就有英文注释,对PyIntObject进行了一下简单介绍。原文如下:/*PyIntObject represents a (long) integer. This is an immutable object;an integer cannot change its value aft原创 2012-03-10 01:34:47 · 5262 阅读 · 1 评论 -
[笔记]Python对象基础
以前写在Evernote上的笔记。Python对象机制最基础的是PyObject和PyVarObject,而后者又仅仅是比前者多了一个变量而已。在object.h中有这两者的定义:typedef struct _object { PyObject_HEAD} PyObject;typedef struct { PyObject_VAR_HEAD} PyV原创 2012-03-10 01:32:18 · 1884 阅读 · 0 评论 -
关于VS2008编译Python2.7
参考的是《Python源码剖析》,基本一样的操作。我选择的是Python-2.7.1.tar.bz2,然后使用VS2008进行编译。比较郁闷的是,现在浏览python.org,时不时都需要小翻一下。 Python 2.7.1目录下有PC和PCbuild两个目录,前者包含VC6、VS7.1和VS8三个目录,相应目录里面有适合不同IDE编译的项目。于是猜测PCbuild应该是包含适合VS2008的项目文件,查看一下该目录下的env.bat源码得到确认:接着用VS2008打开项目文件,默认的st原创 2010-11-29 10:42:00 · 6401 阅读 · 1 评论 -
使用Python处理XML
很久没有写博文了,也很久没有碰Python了。刚好工作需要,小小动手了下。因为是在新机器上,所以就直接装了Python 3,反正以后也是要适应,不如早点。在使用Python处理XML的问题上,首先遇到的是编码问题。Python并不支持gb2312,所以面对encoding="gb原创 2011-07-28 20:20:25 · 10859 阅读 · 0 评论 -
Python的正则一例
悄悄打入公司内部UED的一个Python爱好者小众群,前两天一位牛人发了条消息:小的测试题:re.split('(\W+)', ' test, test, test.') 返回什么结果一开始看,我倒没注意W是大写的,以为是小写的w代表单词字符(含下划线原创 2011-08-01 20:14:39 · 1586 阅读 · 0 评论 -
第一届PyCon China小记
12月3号-4号是第一届PyCon China大会,在上海举行。 作为一个Python爱好者,举办地点又离得挺近,果断去参加,长见识。我接受了组办方的推荐,入住了会场附近的汉庭(他们提供了企业会员卡,比白金会员还便宜,双早)。入场签到时,还拍了照片(抽奖用),拿了SAE邀请码。暖场后,首个环节是播放视频——第一个就是Guido的祝贺视频 :)此次PyCon上一个很大原创 2011-12-05 00:08:50 · 6372 阅读 · 12 评论 -
使用Python脚本处理OC中的中文字符串
由于Xcode对中文支持良好,所以在开发过程中经常直接使用中文字符串。不过苹果推荐多语言化,需要为中文字符串添加个NSLocalizedString宏。#!/usr/bin/python# -*- coding: utf-8 -*-''' Localization The Objective-C Code @"..." --> NSLocalizedStrin原创 2012-03-01 20:19:18 · 3691 阅读 · 0 评论 -
使用Python获取自己的IP
需要引入:import re,urllib2from subprocess import Popen, PIPE 内网IP:re.search('/d+/./d+/./d+/./d+',Popen('ipconfig', stdout=PIPE).stdout.read()).group(0)外网IP:re.search('/d+/./d+/./d+/./d+',urllib2.转载 2010-09-10 10:09:00 · 3612 阅读 · 0 评论 -
Python's Hello,world
[----图 - 1----]图1为跟踪 print("Hello,world!") 语句执行的某堆栈调用片段,此刻,终端刚好输出“Hello,world!”。[----图 - 2----]图2是对图1时刻更详细的说明,表明此时调用的是fileio_write函数。跟到fileio_write函数中去看,就会发现最终的输出语句是:原创 2012-03-10 01:50:11 · 1675 阅读 · 0 评论 -
Python虚拟机的初始化概览
今天想跟下Python虚拟机的启动,看看以调试模式跑起python_d.exe是怎么一个过程。1. d:\Python-2.7.2\Modules\python.c文件是main函数,直接调用Py_Main函数;2. 在Py_Main函数中,初始化函数为Py_Initialize();,而后者直接调用Py_InitializeEx(1);函数;3. 在Py_Initialize原创 2011-09-02 19:18:58 · 3551 阅读 · 0 评论 -
再踩Python的Shallow Copy
最近人工智能很火,Python也不可避免地跟着再火一把。 有天在微博上刚好看到这么一段话:@寒冬winter:我来谈两个新标准:写出一个动态规划(最大子段和)再谈算法,写出模拟退火、遗传和神经网三大算法之一的小demo再谈AI。这不过分吧?由于我自己也是比较注重基础的,所以挺赞同这句话的。虽然现在算法工程师经常自嘲为“调参工程师”,但那也是人家自嘲,好比写工程代码的研发工程师,也可以自嘲为“搬砖工原创 2017-01-25 12:02:15 · 3320 阅读 · 3 评论