0

我是 Python 新手,我发现这很奇怪(而且很神奇)。有人可以解释吗?

a = 2.0
b = 3.1
if b==3.1:
    print "%f"%a
    a = "Hi!"
    print "%s"%a
print "%s"%a


Output:
2.000000
Hi!
Hi!

从到的类型如何a变化?如何在 C/C++ 中完成类似的操作?floatstring

4

2 回答 2

7

Python 是一种动态类型语言,这意味着相同的变量可以引用不同类型的对象。C、C++ 和 Java 等语言是静态类型的,这意味着类型是在编译时确定的。

在支持面向对象编程的静态类型语言中,如 C++,您可以使用继承和多态(基类指针)来引用不同子类类型的多个对象,但它不如您的“鸭子类型”灵活进入 Python。

在 C 和 C++ 中,您还可以使用泛型void*指针指向任何类型的对象,但您会失去编译器提供的类型安全性。

于 2012-12-11T17:27:03.250 回答
3

Python 是动态类型的。没有类型声明,任何名称都可以随时引用任何值。

像 C 和 Java 这样的静态类型语言将类型分配给变量,将错误类型的值分配给名称是错误的。Python 没有这样的限制。

于 2012-12-11T17:25:56.893 回答