我在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 中尝试这样做来获取字符串的长度(以字节为单位)。
>>> 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() 到底测量什么?