当前位置: 首页 > 知识库问答 >
问题:

Python可以静态类型化吗?

濮阳奇逸
2023-03-14

我知道Python主要比fortran和C/C++等语言慢,因为它是解释而不是编译的。

另一个我也读过的原因是它非常慢,因为它是动态类型的,也就是说,您不需要声明变量类型,它会自动声明。这是非常好的,因为它使代码看起来更干净,您基本上不必太担心变量类型。

共有1个答案

何建中
2023-03-14

如果我将您的问题解释为“Python有静态类型的模式吗?”,那么Cython可能最接近于提供该功能。

Cython是Python语法的超集--几乎任何有效的Python代码也是有效的Cython代码。Cython编译器将准Python源代码转换为非人眼C,然后可以将其编译为共享对象并加载为Python模块。

您基本上可以使用您的Python代码,添加尽可能多或尽可能少的静态类型声明。在类型未声明的地方,Cython会添加必要的样板来正确推断它们,代价是运行时性能更差。这基本上允许您在完全动态类型的Python代码和完全静态类型的C代码之间选择连续体中的一点,这取决于您需要多少运行时性能和准备花多少时间进行优化。它还允许您直接调用C函数,使它成为为外部库编写Python绑定的一种非常方便的方法。

为了更好地了解这在实践中是如何工作的,请查看官方教程。

 类似资料:
  • 问题内容: Python中是否可以有静态类变量或方法?为此需要什么语法? 问题答案: 在类定义内声明但在方法内声明的变量是类或静态变量: 正如@ millerdev指出的那样,这将创建一个类级别的i变量,但这不同于任何实例级别的i变量,因此你可以 这与C ++和Java不同,但与C#并没有太大区别,在C#中,无法使用对实例的引用来访问静态成员。

  • 在Oracle的Java教程中,我找到了以下文本: 与类方法和变量一样,静态嵌套类与其外部类关联。和静态类方法一样,静态嵌套类不能直接引用其封闭类中定义的实例变量或方法--它只能通过对象引用来使用它们。 注意:一个静态嵌套类与它的外部类(和其他类)的实例成员交互,就像任何其他顶级类一样。实际上,静态嵌套类在行为上是一个顶级类,为了方便打包,它已经嵌套在另一个顶级类中。 我认为不可能实例化一个静态类

  • 为便于开发,larva采用动态类型,于是首先遇到的一个问题就是,在转化为java的时候,如何处理动态类型带来的问题。乍一看,这个不是很复杂,已经有前车之鉴了,Cython就可以把python代码直接转化成C代码,我的做法和Cython有相似之处,但考虑效率问题,做了一点修改 (虽然第一版本并不实现class语法来自定义类,不过在论述这个问题的时候,假定有自定义类,因为主要矛盾就在自定义类的属性方面

  • 问题内容: 在Oracle的Java 教程中,我找到了以下文本: 与类方法和变量一样,静态嵌套类与其外部类相关联。与静态类方法一样,静态嵌套类不能直接引用其封闭类中定义的实例变量或方法-它只能通过对象引用来使用它们。 注意:静态嵌套类与它的外部类(和其他类)的实例成员进行交互,就像其他任何顶级类一样。实际上,静态嵌套类在行为上是顶级类,为了包装方便,该顶级类已嵌套在另一个顶级类中。 静态嵌套类使用

  • 我问这个只是为了澄清我的想法是否正确。 如果在运行时解释变量的类型,则语言将动态类型化。这意味着您作为程序员可以更快地编写,因为您不必每次都指定类型。示例:Perl 静态/动态绑定-下面的链接清楚地解释了静态绑定和动态绑定的区别 我想问的主要问题从这里开始。我知道静态作用域和动态作用域之间的区别。然而,当我讨论堆栈溢出时,人们说C++和Python是静态作用域的。 给出一个错误。

  • 一个机器或语言是用来计算的,根据计算机模型的定义,其操作的是存储器里的数据,就现在流行的用二进制实现的计算机中(曾出现过三进制计算机),数据本质都是0和1,但机器毕竟是为人服务的,解决的是现实问题,它操作的数据需要有现实的含义,所以基本上所有语言都有类型系统,即便是汇编和机器语言,也有整数和浮点的区别 类型系统是很复杂的理论,值得用一本厚书来写,好点的资料有《类型与程序设计语言》,但我没看懂,因为