10

ご存知のように、Python 2.xでは、2つの整数値を除算すると、結果が.xになりますint。ただし、を使用する場合from __future__ import divisionは、代わりにfloat値を取得します。

>>> 3/2
1
>>> from __future__ import division
>>> 3/2
1.5
>>> 
>>> 
>>> 3//2
1
>>> 4/3
1.3333333333333333
>>> 

したがって、インポート後に整数が必要な場合は、//の代わりにを使用する必要がありますが、整数を再度返す方法を知りたいです。/__future__.division/

以前にインポートしたモジュールをインポート解除または削除する方法はありますか?


IDLEのライブラリまたはモジュールのインポートを解除する方法があります。つまり、Ctrl+F6またはメニューのオプションを使用して再起動します。

4

4 に答える 4

10

pythonはreloadすでにインポートされたモジュール(本番コードでは使用しないでください)を再インポートする必要がありますが、インポートされたモジュールをアンインポートする方法はありません(私が知っていることです)。

もちろん、現在の名前空間でそのモジュールへの参照を削除することもできます。

import module
module.foo()
del module
module.foo() #NameError, can't find `module`

もう1つのポイントは、__future__実際にはモジュールではないということです。これは、パーサーに動作方法を指示するための指示です。そのため、ファイルに入れるときは、最初にファイルに入れる必要があります(他のインポートなどの前に)。__future__インタラクティブセッションのどこからでもインポートできるという事実は、特殊なケースです。

于 2012-09-19T15:18:48.643 に答える
5

__future__モジュールのように見えますが、実際にはそうではありません。これをインポートすると、実際には現在のモジュールのコンパイルオプションに影響します。モジュールが実行される前に効果的に発生するため、「元に戻す」方法はありません。

それが他の「通常の」モジュールである場合、いくつかの方法がありますが、ここでは運が悪いです。変更されたセマンティクスを処理するか、別のモジュールに別のコンパイルが必要なコードを配置します。

于 2012-09-19T15:18:24.447 に答える
2

私もこの必要性に直面しました。

使用しません__future__

フロートの結果が必要な場合は、除数をフロートにします。

>>> 3 / float(2)
1.5
于 2012-09-19T15:39:11.890 に答える
-3

次を使用してアンロードできます。

>>> del(module)
于 2012-09-19T15:49:38.937 に答える