首页   注册   登录

copie

V2EX 第 316412 号会员,加入于 2018-05-15 00:05:40 +08:00
今日活跃度排名 8231
回复: id(1) 和 id(2) 返回的内存地址为什么相差 32?
Python  •  copie  •  2018-06-18 04:14:41 AM  •  最后回复来自 inframe
4
基于 Python 实现的 Python 解释器
Python  •  copie  •  2018-06-15 09:42:06 AM  •  最后回复来自 leavic
11
copie 最近回复了
10 小时 44 分钟前
回复了 onice 创建的主题 Python Python 开发大家用的什么开发工具呀?
vscode + ipdb
2018-08-08 14:07:01 +08:00
回复了 ICKelin 创建的主题 分享创造 一个内网穿透服务
@northernlights #11 你这样说的有问题的,即使普及了 IPV6, ISP 也不会给你公网 IP, NAT 依然存在.
Python 的思想不应该是能运行 Python 解释器会想一切办法运行,不能运行就抛出异常。在代码里面放太多的类型检查会导致代码异味。
为什么没有人说 websocket
join 是首先遍历 list 中的每一个字符串确定 maxchar 通过 maxchar 和所有字符串的长度和 sz 通过 PyUnicode(sz,maxchar) 创建新的字符串对象 然后通过每一个字符串的长度和偏移将 list 字符串快速拷贝到新串中。
format 其实是先通过 FORMAT_VALUE 将其他类型转换为 str 类型并且把 str 压入栈。然后进行 join

join 和 format 两个都落实到 _PyUnicode_JoinArray()这个函数上去了。

比如 f"{100},200,{300}"等同与''.join(['100',',200,','300'])

说到效率问题因为 join 只能连接字符串而且 FORMAT_VALUE 这个字节码他的具体计算会落实到 Python 实现所以转化的效率不高。

也就是说 join 和 format 的效率区别在于 format 需要将其他类型转化成为 str 而且这个转化过程还是 Python 实现的而 join 只针对与 str.
2018-07-23 07:18:06 +08:00
回复了 firejoke 创建的主题 Python 被一个及其简单的 a,b = b,a 问倒了,在线感性求助!!!
要计算一个变量的 id 的时候一定要确保这个变量不是被计算出来的。
简单来说就是这个变量一定是有人引用的。只有这样才可以算出来真正的 id。
c = (a,b)
d = (b,a)
这里 id(c) 就 不等于 id(d) 了。
会出现 id((a,b)) 等于 id((b,a)) 是因为引用计数为 0+内存被回收+缓存池 导致的
2018-06-27 12:39:39 +08:00
回复了 hoxis 创建的主题 Python Python 语法糖之「列表推导式」
@lance6716 #14 其实我的版本是 py3.6.5

In [1]: import dis

In [2]: dis.dis("[a for a in [1,23,3]]")
1 0 LOAD_CONST 0 (<code object <listcomp> at 0x7f39be9236f0, file "<dis>", line 1>)
2 LOAD_CONST 1 ('<listcomp>')
4 MAKE_FUNCTION 0
6 LOAD_CONST 5 ((1, 23, 3))
8 GET_ITER
10 CALL_FUNCTION 1
12 RETURN_VALUE

In [3]:
这个应该是你看到的样子。
我们看到 CALL_FUNCTION 运行的就是前面 MAKE_FUNCTION 产生的结果。
然而产生的这个函数的字节码是下面这个样子的所以我说的没有问题。
In [10]: dis.dis(x)
1 0 BUILD_LIST 0
2 LOAD_FAST 0 (.0)
>> 4 FOR_ITER 8 (to 14)
6 STORE_FAST 1 (x)
8 LOAD_FAST 1 (x)
10 LIST_APPEND 2
12 JUMP_ABSOLUTE 4
>> 14 RETURN_VALUE
2018-06-27 11:56:53 +08:00
回复了 hoxis 创建的主题 Python Python 语法糖之「列表推导式」
@lance6716 列表表达式确实使用的是 FOR_ITER 生成器表达式使用的字节码和生成器差不多的。
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1968 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 16ms · UTC 15:44 · PVG 23:44 · LAX 08:44 · JFK 11:44
♥ Do have faith in what you're doing.