2012-01-23 9 views
0

可能なすべての型の変数をどのように知ることができますか? 、次の例を考えてみましょう可能なすべての種類の変数python

n = int(raw_input()) 

if n<50: 
     a = 5 
elif n<100: 
     a = 6.8 
else: 
     a = 'abc' 

print type(a) 

しかし、これは、nの値に応じて、「INT」または「フロート」または「str」はいずれかのような出力が得られます...

我々はすべて持っていることはできません可変の可能な型?

{int型、float型、STR}変数の型は、実行パスに依存するため

+4

最初。あなたはより良い英語のスペルチェッカーを取得する必要があります。あなたの質問は読みにくいです。第2に、Pythonは無限の型を持っています(新しい型は 'class'で定義できるので)。あなたがあなたのコードを読んで学ぶことができないことについて、あなたは何を勉強していますか? –

+1

母国語以外の方には、略語、タイプミス、余計な句読点のため、この質問の読解に問題があります。これらを書くことができますか(例えば 'Bt'、' abv')?ありがとう! – phihag

+0

Pythonは、動的なダック型プログラミング言語です。一般に、これは、動作が型よりも重要であることを意味します。変数が_any_ typeであることも意味します。しかし、この場合、 'a'を生成するコードを書いたので、' a'の型を知ることができます。どのような値(したがってどのタイプのもの)が取られたのかを判断するための言語機能の静的分析はありません。あなたはそれを追跡しなければなりません。 – twooster

答えて

5

あなたは、実行時にこれを決定することはできません。たとえば、上記の出力のようなものを与える必要があります。私が知る限り、これを行うことができる静的解析ツールはありません。

5

Pythonインタプリタに知られているすべての型を列挙する必要があります。私はそれが可能だろうと思うが、それは非常に多くの種類があるので、本質的に意味がありません。

Pythonは動的に型付けされた言語なので、Cのような静的型付き言語と同じ意味の変数はありません。スニペットでは、aは単なるオブジェクトにバインドされた名前です。そのオブジェクトは、Pythonインタプリタに知られている任意の型のオブジェクトである可能性があります。

動的に型指定された言語でプログラミングし、のような質問をするときの考え方には基本的な違いがあります。は避けてください。代わりに、という形式の質問をするのが望ましいです。このオブジェクトはどのような操作をサポートしていますか?このプログラミング手法は、duck typingとして知られています。

2

私はここの一番下の行は、Pythonの変数にはまったく型がないと考えるべきだと思います。変数は、割り当てられたオブジェクトを参照する単なるタグです。タイプを実際に保持しているのはオブジェクトそのものです。

これに加えて、任意のオブジェクトを変数に割り当てることができる場合、変数によって参照されるオブジェクトの可能なタイプの量は、言語で作成できる可能なタイプの量と同じです。ハードウェアのcontrainsに応じてほぼ無制限の数にする必要があります。

0

可能なすべてのタイプの変数を持つことはできませんか?

いいえ、Pythonの変数には型がないためです。 です。

type(a)と書くと、aという名前の変数の型はチェックされません。 aが参照するもののタイプをチェックしています(他の名前も同様に発生する可能性があります)。

関連する問題