我是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
的类型如何从float
更改为string
?
如何在C / C ++中完成类似的事情?
答案 0 :(得分:7)
Python是一种dynamically typed语言,这意味着相同的变量可以引用不同类型的对象。 C,C ++和Java等语言是statically typed,这意味着类型是在编译时确定的。
在支持面向对象编程的静态类型语言(如C ++)中,您可以使用继承和多态(基类指针)来引用不同子类类型的多个对象,但它不像“{”那样灵活。 {3}}“你得到了Python。
在C和C ++中,您还可以使用通用void*
指针指向任何类型的对象,但是会丢失编译器提供的duck typing。
答案 1 :(得分:3)
Python是动态类型的。没有类型声明,任何名称都可以随时引用任何值。
静态类型语言(如C和Java)将类型分配给变量,将错误类型的值分配给名称是错误的。 Python没有这样的限制。