2017-08-07 8 views
3

私はPythonを学んでいますが、今はPythonのimport文について学んでいます。私はいくつかのコードをテストしていましたが、私は珍しいものに出くわしました。ここに私がテストしていたコードがあります。さまざまなモジュールで別の働きをする文としてインポートしますか?

from math import pow as power 
import random as x 

print(pow(2, 3)) 
print(power(2, 3)) 
print(x.randint(0, 5)) 
print(random.randint(0, 5)) 

私はPythonで、あなたはasを使用してモジュールの名前を再割り当てすることができますことを学んだので、私は電源にPOWを再割り当て。私はpow(2, 3)power(2, 3)が同じものを出力することを期待していました。しかし、pow(2, 3)は整数である8を出力し、power(2, 3)8.0を出力します。これはfloatです。何故ですか?

さらに、randomモジュールをインポートし、その名前をxに設定しました。 powとpowerの場合は、古い名前powと新しい名前powerの両方が働いていました。しかし、このランダムモジュールでは、新しい名前xだけが動作し、古い名前randomは機能しません。 print(x.randint(0, 5))が動作しますが、random.randint(0, 5)は機能しません。なぜこれはそうですか?

誰かが私のようなPython初心者に私のコードが私が期待している通りに働いていない理由を説明してもらえますか?私はPythonバージョン3.62を使用しています。

+1

と呼ばれていたものではないとして、それをインポートしたものをモジュールを使用することができる「として」あなたが使用している場合ので、それはPythonで、通常

動作しないランダムが呼び出されません'pow'は組み込み' pow'関数を使用しているからです。 'as'を使うと、その関数をその名前に束縛します。 'math.pow'をインポートしてそれを' pow'という名前にバインドすることはなく、 'math.pow'をインポートして' power'のような別の名前にバインドします。 – Li357

+0

あなたの期待は間違っていました。あなたが 'as'を使うとモジュール/ function/classを別の名前として読み込みます。だから、 'ランダム'は動作しません。 'pow'がする理由は、pythonに' pow'関数が組み込まれているからです。 –

答えて

4

あなたがpowerとして数学からpowをインポートしたときにpow呼び出すためだ、pow呼び出しているが、内蔵機能、ないpow数学モジュールからです。

randomの場合、Pythonには組み込み関数がありませんので、xをインポートするだけです。

POW組み込み関数documentationあなたが実際に作り付けのpow関数を使用しているPOW使用

+0

最も正確な答えは二重にチェックされていますので、pow()の計算をインポートする必要はありません! –

+0

数学モジュールは組み込み関数であり、ランダムは組み込みではないと言っていますか?それでは、組み込みでない場合、どうやってランダムモジュールを使うことができますか?私はこれを正確に理解していない。また 'pow'が整数を返す理由を明確に説明してください。道に迷いました。 – parrot15

+1

@ parrot15 'pow'関数が組み込みです。 * math *モジュールには組み込み関数とは別の 'pow'関数がありますが、インポート時に' math.pow'を* power *に変更すると、 'math.pow'関数は' pow '。あなたは別の名前を使用しているので、組み込みの 'pow'と** math **からのものの2つの異なる関数があります。別々に動作しています。 –

0

が、何の作り付けの機能は、あなただけは、それが元々

関連する問題