Skip to main content
 首页 » 编程设计

Python 语法推理(为什么不像 .django 模板语法那样回退)

2025年05月04日8wayfarer

我的空手道教练喜欢说,“格挡就是锁, throw 就是打击。”他的意思是这样的:当我们谈到一种形式的技术时,虽然它看起来像一个 block ,但一点点创造力和检查表明它也可以被看作某种关节锁,或者某种抛出,或者某种打击。

Django 模板语法使用点 (".") 字符的方式也是如此。它首先将其视为字典查找,但它也会按此顺序将其视为类属性、方法或列表索引。假设似乎是,我们正在以某种方式寻找一种知识。无论采用何种方式来存储该知识,我们都会以将其放入模板的方式对其进行处理。

为什么 python 不这样做?如果在某种情况下我可能分配了字典术语 spam['eggs'],但可以肯定地知道 spam 具有属性 eggs,为什么不让我只写 spam.eggs 并将其分类Django 模板的方式?

否则,我必须排除 AttributeError 并添加另外三行代码。

我对插入此设置的理念特别感兴趣。它是否被视为强类型的一部分?

请您参考如下方法:

django 模板和 python 是两种不相关的语言。他们也有不同的目标受众。

在 django 模板中,目标受众是设计师,他们可能不想学习 4 种不同的方法来做大致相同的事情(字典查找)。因此,在 django 模板中有一个语法可以以多种可能的方式执行查找。

python 的受众截然不同。开发人员实际上利用许多不同的方式来做类似的事情,并使每一种方式都具有不同的含义。当一个失败时,它应该失败,因为这就是开发人员要它做的事情。