代码之家  ›  专栏  ›  技术社区  ›  Simon

是否可以在Python中重新定义关键字?

  •  2
  • Simon  · 技术社区  · 8 年前

    我遇到了一个问题,我必须jsonify我的API设置返回的所有内容。当我编写一个装饰器并将其应用于每一种方法时,我突然想到:

    我做了一些搜索,但找不到关于这个话题的任何东西。然而,既然“一切都是一个物体”,也许这是可能的?

    明显的覆盖 return 是一个坏主意,但在更一般的意义上,我的问题是:

    你能改变Python中保留字和关键字的行为吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Zero Piraeus    8 年前

    ,不能在Python中重新定义保留字。他们的意思是 ,因此根据定义,它不能更改。

    我能找到的最接近 declaration 官方文件中的这一事实在《语言参考》(emphasis mine)的词汇分析一章中有所体现:

    2.3.1条。关键词

    以下标识符用作语言的保留字或关键字,以及 . 它们的拼写必须与此处所写的完全一致:

    False      await      else       import     pass
    None       break      except     in         raise
    True       class      finally    is         return
    and        continue   for        lambda     try
    as         def        from       nonlocal   while
    assert     del        global     not        with
    async      elif       if         or         yield
    

    由于关键字不能用作普通标识符,因此不能将它们分配给 def 陈述等。

    重要的是要明白,这是关键字的基本性质,它实际上禁止改变它们的含义,尽管赋值等不会起作用是这种性质的结果,而不是原因。