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変化しfloatていstringますか? C/C++ で同様のことを行うにはどうすればよいですか?

4

2 に答える 2

7

Python は動的型付け言語です。つまり、同じ変数が異なる型のオブジェクトを参照できます。C、C++、Java などの言語は静的に型付けされています。つまり、型はコンパイル時に決定されます。

C++ のようなオブジェクト指向プログラミングをサポートする静的型付け言語では、継承とポリモーフィズム (基底クラス ポインター) を使用して、異なるサブクラス型の複数のオブジェクトを参照できますが、「ダック タイピング」ほど柔軟ではありません。パイソンに入る。

C および C++ では、ジェネリックvoid*ポインターを使用して任意の型のオブジェクトを指すこともできますが、コンパイラによって提供される型の安全性は失われます。

于 2012-12-11T17:27:03.250 に答える
3

Python は動的に型付けされます。型宣言はなく、任意の名前でいつでも任意の値を参照できます。

C や Java などの静的に型付けされた言語は型を変数に割り当てますが、間違った型の値を名前に割り当てるとエラーになります。Python にはそのような制限はありません。

于 2012-12-11T17:25:56.893 に答える