私はPython 2.7を使用していますが、オブジェクトがPython 3+と互換性のあるベースストリングのサブクラスであるかどうかをチェックするコードを作成しようとしています。私はアプローチsuggested hereを追跡しようとした、その過程で私がすれば、私は例外処理でこの奇妙な動作は何ですか?
を理解していない動作を見つけました:
def foo():
try: basestring
except NameError:
print "a"
foo()
何も起こりません。
def foo():
try: basestring
except NameError:
print "a"
basestring=str
foo()
が続いて「」印刷されています。私は少しだけを除いて内部でそのコードを変更する場合
。
例外ブロックに何かを追加すると、例外のトリガにどのように影響するか分かりません。
私は、関数外で同じコードがチェック:
try:
basestring
except NameError:
print("a")
basestring=str
を何もが、その場合には印刷されません取得します。
"**関数にローカルな名前は、関数定義時に決定されます** **" これはまさに私が逃したものです!ありがとうございました! – alvarosg