我正在阅读Jinja 中的模板,特别是关于变量的内容。我想请您解释一下有关传递给 Jinja 语法对象的访问值的这句话:
执行
为了方便起见,Jinja2中的foo.bar在Python层做了以下事情:
检查foo 上名为 bar 的属性(getattr(foo, 'bar'))
如果没有,检查foo 中是否有项目“bar”(foo.__getitem__('bar'))
如果不存在,则返回一个未定义的对象。
foo['bar'] 的工作原理基本相同,但顺序略有不同:
检查foo 中的项目“bar”。(foo.__getitem__('bar'))
如果没有,请检查foo 上是否有名为 bar 的属性。(getattr(foo, '酒吧'))
如果不存在,则返回一个未定义的对象。
如果对象具有同名的项目和属性,这一点很重要。此外, attr() 过滤器仅查找属性。
项目和属性有什么区别?
PS - 如果相关的话:我从事字典工作。我刚刚读到Jinja可以使用键作为属性(dict.key)来访问值,但是在阅读这部分有关过程顺序的部分后我感到困惑。比较“键值”对使得理解上面的部分更具挑战性。
我已按照说明下载 ffmpeg 并根据Matplotlib-Animation“No MovieWriters Available”添加路径 虽然我可以在 Windows 控制台的命令提示符和 Bash 中输入版本,但心爱的 PyCharm 警告我:
Requested MovieWriter (ffmpeg) not available
Run Code Online (Sandbox Code Playgroud)
当我尝试保存动画时:
ani = anim.FuncAnimation(fig, animate, frames = 14, init_func = init, interval = 500, repeat = False)
plt.show()
ani.save("Inno.mp4", writer=writer)
Run Code Online (Sandbox Code Playgroud)
我必须添加另一条路径吗?请帮助我,我真的厌倦了这个错误。
animation ×1
attributes ×1
ffmpeg ×1
items ×1
jinja2 ×1
matplotlib ×1
python ×1
python-3.x ×1
windows ×1