、我々はローカルに定義された関数、我々はいくつかの他のモジュールからインポートされた別のものを持っている場合。どちらが実行されますか?
あなたのものが前のものに置き換わり、私はIDEがあなたにそれに関する警告を与えると信じています。最初print(globals())
が印刷されます
from math import floor
print(globals())
def floor(x):
print 'hello, ' + x
print(globals())
:
{'floor': <built-in function floor>, '__builtins__': <module '__builtin__' (built-in)>, '__file__': 'test.py', '__package__': None, '__name__': '__main__', '__doc__': None}
を
あなたはそれを呼び出しての時点で現在のモジュールで使用可能なすべてのグローバルシンボルを参照する組み込み関数globalsを使用することができます
しかし、2番目のものが印刷されます:
{'floor': <function floor at 0x104649cf8>, '__builtins__': <module '__builtin__' (built-in)>, '__file__': 'test.py', '__package__': None, '__name__': '__main__', '__doc__': None}
記号floor
が後のものに置き換えられているのがわかります。
また、私はcythonで関数を書いてそれをインポートしたいと思っています。また、同時に、ユーザーにcythonがインストールされていない場合は、ローカルで定義された関数を保持します。これはどのように達成できますか?
あなたはそれを達成するために以下の方法を使用することができます。
try:
from your_module import func_maybe_not_exist
except ImportError:
def func_maybe_not_exist():
print "local implementation"
if __name__ == '__main__':
func_maybe_not_exist()
それを試してみて、参照してください。 – TigerhawkT3
@PrakharPratyushあなたはあなたの質問に多少の努力をする必要があります。 See [ask]。 –
downvoteボタンのホバーテキストが始まります。「この質問には研究努力はありません...」 –