Python语法的铁路图

Python语法的铁路图,python,Python,我正在寻找一种更好地掌握Python语法的方法。 我的经验是,学习语法可能会有帮助 Python文档以文本形式包含语法: https://docs.python.org/3/reference/grammar.html 但对于刚开始从事软件工程的人来说,这并不容易理解 谁有好的初学者资料 有一个我可能可以使用的语法,但我无法找到Python语法的EBNF语法,该语法将被该生成器接受。 链接到这样的语法也会很有帮助。要将位于的Python语法(例如)转换为EBNF,您基本上需要做三件事: 将所有

我正在寻找一种更好地掌握Python语法的方法。 我的经验是,学习语法可能会有帮助

Python文档以文本形式包含语法:

https://docs.python.org/3/reference/grammar.html
但对于刚开始从事软件工程的人来说,这并不容易理解

谁有好的初学者资料

有一个我可能可以使用的语法,但我无法找到Python语法的EBNF语法,该语法将被该生成器接受。
链接到这样的语法也会很有帮助。

要将位于的Python语法(例如)转换为EBNF,您基本上需要做三件事:

  • 将所有
    #…
    注释替换为
    /*…*/
    (或删除它们)
  • 使用
    ::=
    而不是
    来定义生产规则
  • 使用
    (…)?
    指示可选元素,而不是
    […]
  • 例如,代替

    # The function statement
    funcdef: 'def' NAME parameters ['->' test] ':' suite
    
    你会用

    /* The function statement */
    funcdef ::= 'def' NAME parameters ('->' test)? ':' suite
    

    这看起来像是XY问题。您不应该试图通过学习Python的形式结构作为形式语法来理解Python的语法。如果你想查一些专业,一定要看语法。但除此之外,您可能可以通过使用该语言更好地学习,甚至可以通过学习语句的语法或语言背后的思想来学习。将语言的语法定义为形式语法是一件非常抽象的事情。这就是它的本质。学习Python绝对不需要EBNF图。出于兴趣,我快速尝试了一下——它与铁路图生成器一起工作。(但可能不是一个完美的翻译。)@Stuart我也尝试过同样的事情。看起来不错,不过您想用
    (arglist)
    而不是
    (arglist)*
    替换
    (arglist)
    。一般来说,您只需要更改以下三件事:1)生产规则的
    :=
    ,可选元素的
    […]
    (…)?
    ,以及3)注释的
    #…
    /*/
    。@Carsten在某种程度上同意。OP表示,他们希望更好地掌握Python语法,而不仅仅是Python,因此这是一个合法的问题(尽管是离题的,要求提供资源链接)。@chepner谢谢,是的,这里又是一个有趣的链接,已经做了一些: