为什么识别不到图片呢?
没截取的上一部分是从图鉴开发文档复制来的,没有修改
这些方法的性能较差,但是它们将提供正确的行为。它们的性能将不及copy
和update
或新的解包方式
,因为它们在更高的抽象级别上遍历每个键值对,但它们确实遵循优先级的顺序(后者决定了优先级)
{k: v for d in dicts for k, v in d.items()} # iteritems in Python 2.7
或在python 2.6
中(也许在引入生成器表达式时早在2.4
中):
dict((k, v) for d in dicts for k, v in d.items())
itertools.chain
迭代器的骚操作
:
import itertools
z = dict(itertools.chain(x.iteritems(), y.iteritems()))
ChainMap
的骚操作
:
>>> from collections import ChainMap
>>> x = {'a':1, 'b': 2}
>>> y = {'b':10, 'c': 11}
>>> z = ChainMap({}, y, x)
>>> for k, v in z.items():
print(k, '-->', v)
a --> 1
b --> 10
c --> 11
####我们做做时间分析
我将仅对已知行为正确的用法进行性能分析。
import timeit
在Ubuntu 18
上完成以下操作
在Python 2.7
(系统Python
)中:
>>> min(timeit.repeat(lambda: merge_two_dicts(x, y)))
0.5726828575134277
>>> min(timeit.repeat(lambda: {k: v for d in (x, y) for k, v in d.items()} ))
1.163769006729126
>>> min(timeit.repeat(lambda: dict(itertools.chain(x.iteritems(), y.iteritems()))))
1.1614501476287842
>>> min(timeit.repeat(lambda: dict((k, v) for d in (x, y) for k, v in d.items())))
2.2345519065856934
在Python 3.5
中:
>>> min(timeit.repeat(lambda: {**x, **y}))
0.4094954460160807
>>> min(timeit.repeat(lambda: merge_two_dicts(x, y)))
0.7881555100320838
>>> min(timeit.repeat(lambda: {k: v for d in (x, y) for k, v in d.items()} ))
1.4525277839857154
>>> min(timeit.repeat(lambda: dict(itertools.chain(x.items(), y.items()))))
2.3143140770262107
>>> min(timeit.repeat(lambda: dict((k, v) for d in (x, y) for k, v in d.items())))
3.2069112799945287
根据错误提示,问题出在图片不能为空,可能是在调用base64_api函数时,img参数没有传入正确的值。建议检查一下img_path变量是否正确指向了图片文件路径,并且在调用base64_api函数时,将img参数设置为img_Data而不是img-path。