V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  aijam  ›  全部回复第 12 页 / 共 19 页
回复总数  377
1 ... 4  5  6  7  8  9  10  11  12  13 ... 19  
2019-02-06 11:24:05 +08:00
回复了 largecat 创建的主题 程序员 关于 Python 强制缩进的梗
反对任何支持用 tab 缩进的语言,我不是说特定的某个语言,我是说在座的各种语言都是垃圾。
@15589826370 没抬杠,只是建议你货币单位要写全,这是跨国生意的基本礼仪。
2019-02-01 15:31:56 +08:00
回复了 hellojane 创建的主题 职场话题 楼主在日本东京工作居住一年了,大家有什么要问的吗?
有没有遇到过痴汉?
2019-02-01 11:24:42 +08:00
回复了 Microi 创建的主题 问与答 三月初去日本的话,景色过得去吗?
三月初一些地方樱花已经开始开了
2019-02-01 10:40:55 +08:00
回复了 Chhxin 创建的主题 问与答 马上回去过年了,怎么装逼呢?
没 JB 点事儿就来发帖这种行为本身就体现了 lz 是逼王啊,甘拜下风!
2019-02-01 10:32:57 +08:00
回复了 papertiger 创建的主题 问与答 哪些情况下说话中文夹英文会让人讨厌?哪些时候不会?
@palesaint 好 6 的英文,有种看 GRE 阅读的错觉 w
@15589826370 我指的是你写的"薪资 2w~5w",是日元 /人民币 /美元?是每月 /每年?
一看薪资不带单位的招聘帖就觉得不靠谱
2019-02-01 02:06:54 +08:00
回复了 papertiger 创建的主题 问与答 哪些情况下说话中文夹英文会让人讨厌?哪些时候不会?
@sdijeenx 嗯,还有 trivial/nontrivial 这种本国人自己搞不清翻译的。
2019-02-01 01:29:57 +08:00
回复了 papertiger 创建的主题 问与答 哪些情况下说话中文夹英文会让人讨厌?哪些时候不会?
相比之下更难受专业词汇用中文的。
比如 hash 说散列,bias 说偏置,stack/heap 说堆栈,一个很出名的叫什么来着?哦对,句柄。
2019-01-31 14:54:43 +08:00
回复了 goinghugh 创建的主题 程序员 请教一个算法问题,关于合并数据的操作
2019-01-25 12:39:05 +08:00
回复了 aoscici2000 创建的主题 Python Python 中关于 async/await 的疑问
解释线程 /异步 /非阻塞 /event loop 的文章网上一大堆,你看了也不会真的懂。
先熟悉熟悉这个包:
https://docs.python.org/3/library/selectors.html#module-selectors
https://docs.python.org/3/library/select.html#module-select
他们说的再多虚头巴脑都扯淡,核心内容就是 selector。
2019-01-22 05:06:29 +08:00
回复了 lcj2class 创建的主题 程序员 请教一道算法题
2019-01-20 10:08:35 +08:00
回复了 spy0578 创建的主题 Python Python 有什么链式调用的实现思路么
2019-01-20 08:44:19 +08:00
回复了 TonyLiu2ca 创建的主题 程序员 有些时候,程序员们的努力会被工程的不经意给毁掉
嗯,最好和组装电脑一样,插口全带防呆设计。
所有函数输入也必须经过 validator 检查,防止呆逼同事。
2019-01-20 02:56:10 +08:00
回复了 frylkrttj 创建的主题 奇思妙想 感觉“就差一个程序员了”其实不是个笑话
感觉还是欠调教
2019-01-19 10:42:18 +08:00
回复了 whoami9894 创建的主题 Python 为什么要在__slots__中添加__dict__属性?
当然这里有个不严谨的地方:例子里{'x': 1, 'y': 2}并不一定会比空的 dict 占用更多内存,这和初始时 attribute 的个数,dict 底层实现的初始大小 /load factor 等有关。
2019-01-19 10:31:15 +08:00
回复了 whoami9894 创建的主题 Python 为什么要在__slots__中添加__dict__属性?
TLDR:
使用__slots__是为了节约内存使用,但是带来的两个副作用:
1. 没了__dict__,无法动态加属性。
2. 没了__weakref__,无法使用弱引用。
为了克服这两个副作用需要把它们重新加回去。

=================================================
1. 普通的 class 会在 instance 初始化的时候把 attribute 放到__dict__里,也就是说内部维护了一个多余的 dict。
>>> class A():
... def __init__(self):
... self.x = 1
... self.y = 2
...
>>> a = A()
>>> a.__dict__
{'x': 1, 'y': 2}

2. 为了避免在__dict__里浪费内存,有了__slots__。
>>> class B():
... __slots__ = ('x', 'y')
... def __init__(self):
... self.x = 1
... self.y = 2
...
>>> b = B()
>>> b.__dict__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'B' object has no attribute '__dict__'
可以看出__dict__消失了。

3. __dict__的存在目的是为了能在 instance 里动态加入新的属性,新的属性会加到__dict__里。
>>> a.z = 3
>>> a.__dict__
{'x': 1, 'y': 2, 'z': 3}

但用了__slots__后就无法动态加属性了。
>>> b.z = 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'B' object has no attribute 'z'

4. 为了依然能动态加属性,我们在__slots__里重新加入__dict__。
>>> class C():
... __slots__ = ('x', 'y', '__dict__')
... def __init__(self):
... self.x = 1
... self.y = 2
...
>>> c = C()
>>> c.__dict__
{}
我们注意到,初始化时__dict__初始是空的,依然比 a 要节约内存。
这时候动态加属性也没问题了。
>>> c.z = 3
>>> c.__dict__
{'z': 3}

5. 具体验证下__slots__到底做了什么。
>>> set(dir(b)) - set(dir(a))
{'__slots__'}
>>> set(dir(a)) - set(dir(b))
{'__dict__', '__weakref__'}
可以看出 b 加了__slots__后,相较 a 少了__dict__以及__weakref__。
同理,为了使用弱引用,需要把__weakref__加回去。

但有一点我还存有疑问:当初设计__slots__时为什么要去掉__weakref__?
1 ... 4  5  6  7  8  9  10  11  12  13 ... 19  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5163 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 36ms · UTC 01:19 · PVG 09:19 · LAX 17:19 · JFK 20:19
Developed with CodeLauncher
♥ Do have faith in what you're doing.