小编Z-J*_*ang的帖子

用defaultdict不理解这个lambda表达式

我在pythontips看到了这个例子.当defaultdict接受参数"tree"并返回"tree"时,我不明白第二行.

import collections
tree = lambda: collections.defaultdict(tree)
some_dict = tree()
some_dict['color']['favor'] = "yellow"
# Works fine
Run Code Online (Sandbox Code Playgroud)

运行此代码后,我检查了some_dict的类型

defaultdict(< function < lambda > at 0x7f19ae634048 >, 
            {'color': defaultdict(
                  < function < lambda > at 0x7f19ae634048 >, {'favor': 'yellow'})})
Run Code Online (Sandbox Code Playgroud)

python lambda python-3.x defaultdict

6
推荐指数
1
解决办法
202
查看次数

python3.5中不同编码的字符串长度

我在 python 中尝试这样做来获取字符串的长度(以字节为单位)。

>>> s = 'a'
>>> s.encode('utf-8')
b'a'
>>> s.encode('utf-16')
b'\xff\xfea\x00'
>>> s.encode('utf-32')
b'\xff\xfe\x00\x00a\x00\x00\x00'
>>> len(s.encode('utf-8'))
1
>>> len(s.encode('utf-16'))
4
>>> len(s.encode('utf-32'))
8
Run Code Online (Sandbox Code Playgroud)

utf-8使用一个字节来存储一个ascii字符,正如预期的那样,但是为什么utf-16使用4个字节呢?len() 到底测量什么?

python unicode byte-order-mark utf-8 utf-16

4
推荐指数
1
解决办法
2613
查看次数