Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何阅读和快速编辑python代码 我通常用C++工作,但在后期,必须用Python编程很多。从C++背景来看,当我必须修改现有的代码库时,我发现动态类型非常不方便。我知道我遗漏了一些非常基本的东西,因此我求助于stackoverflow社区来了解最佳实践_Python_Dynamic Typing - Fatal编程技术网

如何阅读和快速编辑python代码 我通常用C++工作,但在后期,必须用Python编程很多。从C++背景来看,当我必须修改现有的代码库时,我发现动态类型非常不方便。我知道我遗漏了一些非常基本的东西,因此我求助于stackoverflow社区来了解最佳实践

如何阅读和快速编辑python代码 我通常用C++工作,但在后期,必须用Python编程很多。从C++背景来看,当我必须修改现有的代码库时,我发现动态类型非常不方便。我知道我遗漏了一些非常基本的东西,因此我求助于stackoverflow社区来了解最佳实践,python,dynamic-typing,Python,Dynamic Typing,想象一下,有一个类有许多方法,我需要编辑一个现有的方法。现在,在C++中,我可以清楚地看到每个参数的数据类型,如果需要的话,可以检查相应类的.h文件,并且可以快速地了解发生的事情。另一方面,在python中,我看到的只是一些变量名。我不确定它是一个列表还是一个字典,或者是一些带有getter和setter的定制数据结构。为了弄清楚这一点,我需要看看这个函数的一些现有用法,或者运行带有断点的代码,看看我得到了什么样的数据结构。我发现这两种方法都非常耗时。有没有更快的方法来解决这个问题?如何快速确定

想象一下,有一个类有许多方法,我需要编辑一个现有的方法。现在,在C++中,我可以清楚地看到每个参数的数据类型,如果需要的话,可以检查相应类的.h文件,并且可以快速地了解发生的事情。另一方面,在python中,我看到的只是一些变量名。我不确定它是一个列表还是一个字典,或者是一些带有getter和setter的定制数据结构。为了弄清楚这一点,我需要看看这个函数的一些现有用法,或者运行带有断点的代码,看看我得到了什么样的数据结构。我发现这两种方法都非常耗时。有没有更快的方法来解决这个问题?如何快速确定特定变量的数据类型


一般的印象是,用Python读/写代码更容易,但由于缺少类型,我觉得读Python代码不是很快。我在这里遗漏了什么?

以下是我遵循的原则:

  • docstring
  • 使用调试(或标志)变量,该变量默认设置为
    False
    ,并按如下方式保留if块。

    if debug:
        print(type(variable))
    

  • 这样,您就可以确定变量的类型了。

    在Python中,您可以使用

    type(variable_name)
    

    它将显示该变量的数据类型。例如int、bool、str等等。

    我也能感受到你的痛苦!我经常在Python和C++之间切换,所以范式转换确实会让我产生偏执狂。 然而,我一直在用以下方法重新调整代码:

    它并没有提高运行时性能,但在阅读成千上万行代码时,它提供了舒适感。此外,您还可以使用此命令运行python程序,以进一步验证您的类型注释:


    阅读该方法的单元测试。它们应该说明用法。好的Python代码不会因为语言不强迫您这样做而忽略记录函数的参数。什么时候知道某个东西是dict还是list真的能告诉您什么?如果它需要将用户名映射到连接对象的dict,并且您将文件名映射到文件对象的dict传递给它,那么这并不比传递一个列表要好。您可以通过函数名、参数名、docstring、注释、API文档和单元测试来判断它想要一个用户名到连接的映射。或者,如果你不能,你将像在Python中一样被C++所压缩。如果你真的想要静态类型检查,你可以运行MyPy,并注释任何不能推断的(或者,如果你不能/不想改变现有的代码,写Type Sead)。最新的IDE将利用这一点动态地进行静态类型检查,并在自动完成中显示更多信息,等等。它仍然只是告诉你C++代码[Dist[STR,file ] < /C> >,但是如果你需要,你可以拥有它。还有一件事:“一些具有它的吸收器和设置器的自定义数据结构”很少存在于Python中,同样的类型也有很多java java文档(和类似Java的C++设计)。此外,在合理的情况下,类型通常遵循标准协议(即使没有实现ABC)和习惯用法。不幸的是,在你了解什么是“pythonic”之前,这对你没有任何好处,但这并不需要很长时间就能理解。两者都是给代码作者的建议,而不是给读者的。我认为,基于这个问题,作者希望正确地阅读代码。是的。如果不改变代码,他怎么知道对象的类型呢?这正是他的问题