关闭

再踩Python的Shallow Copy

最近人工智能很火,Python也不可避免地跟着再火一把。 有天在微博上刚好看到这么一段话:@寒冬winter:我来谈两个新标准:写出一个动态规划(最大子段和)再谈算法,写出模拟退火、遗传和神经网三大算法之一的小demo再谈AI。这不过分吧?由于我自己也是比较注重基础的,所以挺赞同这句话的。虽然现在算法工程师经常自嘲为“调参工程师”,但那也是人家自嘲,好比写工程代码的研发工程师,也可以自嘲为“搬砖工...
阅读(933) 评论(3)

Python's Hello,world

[----图 - 1----] 图1为跟踪 print("Hello,world!") 语句执行的某堆栈调用片段,此刻,终端刚好输出“Hello,world!”。 [----图 - 2----] 图2是对图1时刻更详细的说明,表明此时调用的是fileio_write函数。 跟到fileio_write函数中去看,就会发现最终的输出语句是:...
阅读(1420) 评论(0)

[笔记]Python虚拟机对函数的解释

demo.py: i = 1 def f(): j = 2 f() test.py: import dis source = open('./demo.py').read() co = compile(source, './demo.py', 'exec') print(co.co_name) dis.dis(co) print("\n") fCode = co.co_c...
阅读(1982) 评论(0)

[笔记]Python虚拟机对if语句的解释

demo.py代码如下: a = 1 if a > 0: pass elif a == 0: pass else: pass test.py代码如下: import dis source = open('./demo.py').read() co = compile(source, './demo.py', 'exec') dis.dis(co) 输出结果如...
阅读(1811) 评论(0)

[笔记]Python虚拟机对创建基本内置对象的执行过程

同样的,有demo.py代码如下: i = 1 s = "Python" d = {"1":1, "2":2} l = [2, 3] 有test.py代码如下: import dis source = open('./demo.py').read() co = compile(source, './demo.py', 'exec') dis.dis(co) 输出如下: 1...
阅读(1812) 评论(0)

[笔记]Python虚拟机如何执行“i = 1”

首先写一个demo.py,里面只有一句: i = 1 接着写一个test.py,内容如下: import dis source = open('./demo.py').read() co = compile(source, './demo.py', 'exec') dis.dis(co) 输出: 1 0 LOAD_CONST 0...
阅读(1956) 评论(0)

[笔记]Python虚拟机的运行时基本知识

首先应该了解程序的运行时刻环境,个人觉得龙书中文版第7章挺通俗易懂的。 Python在这方面设计了PyFrameObject这个结构(对应于龙书中的“活动记录”)来维护运行时环境,并采用了“访问链”的思想(龙书中介绍了“访问链”和“显示表”)来解决不同作用域间变量的访问问题。 不过在PyFrameObject中维护了3个成员,用来指向最经常使用的3个符号表,内置符号表、全局符号表、局部...
阅读(4398) 评论(0)

[笔记]PyCodeObject初探

在code.h中有PyCodeObject的定义: /* Bytecode object */ typedef struct { PyObject_HEAD int co_argcount; /* #arguments, except *args */ int co_nlocals; /* #local variables */...
阅读(1947) 评论(0)

[笔记]PyDictObject的哈希算法和搜索过程

哈希函数如下: long PyObject_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...
阅读(1399) 评论(0)

[笔记]PyDictObject头文件阅读

dictobject.h PyDictObject是一种字典类型,从可哈希的对象映射到另一个对象。 然后提到了在Objects目录下,有dictnotes.txt文件,关于字典的使用设计和优化。 字典类实际上是维护了一张哈希表,而表项,entry or slot,有3种状态。 1. Unused.  me_key == me_value == NULL 未使用状态,key...
阅读(1458) 评论(0)

[笔记]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...
阅读(1755) 评论(0)

[笔记]Python的字符串对象

PyStringObject定义在stringobject.h中,附有不少注释说明。 1. PyStringObject实际上是一组字符,以'\0'结尾,且因为有只是长度的变量,所以也可以包含'\0'作为内容。 2. PyStringObject是不可变对象,所以a = "hello"和a = "world"先后执行后,a指向的是不同的对象了。 3. PyStringObject保存了has...
阅读(2042) 评论(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...
阅读(3162) 评论(1)

[笔记]Python对象基础

以前写在Evernote上的笔记。 Python对象机制最基础的是PyObject和PyVarObject,而后者又仅仅是比前者多了一个变量而已。 在object.h中有这两者的定义: typedef struct _object { PyObject_HEAD } PyObject; typedef struct { PyObject_VAR_HEAD } PyV...
阅读(1653) 评论(0)

使用Python脚本处理OC中的中文字符串

由于Xcode对中文支持良好,所以在开发过程中经常直接使用中文字符串。 不过苹果推荐多语言化,需要为中文字符串添加个NSLocalizedString宏。 #!/usr/bin/python # -*- coding: utf-8 -*- ''' Localization The Objective-C Code @"..." --> NSLocalizedStrin...
阅读(2909) 评论(0)
22条 共2页1 2 下一页 尾页
    个人资料
    • 访问:1578354次
    • 积分:14866
    • 等级:
    • 排名:第818名
    • 原创:195篇
    • 转载:9篇
    • 译文:2篇
    • 评论:871条
    博客专栏
    文章分类
    最新评论