Burada python2.7 diddling ediyorum:Bir işlevde bir modül kullanıldığında RE-içe aktarma neden bir istisna atar?
istisna atarimport time
def foo():
print time.time() # EXCEPTION THROWN HERE
import time
...:
UnboundLocalError: local variable 'time' referenced before assignment
Ben tekrar import kaldırırsanız:
import time
def foo():
print time.time() # WORKS AS EXPECTED
#import time
.. her şey gerektiği gibi çalışır.
import time
def foo():
global time
print time.time() # WORKS AS EXPECTED
import time
... garip: DEĞİL içerme açısından - Bu fonksiyonun an yürütme başlar gelen, daha sonra almak ilgili bir şey, yerel değişken tablo etkiler işlevi çağrıldığında, bu çok açık .
Bu, bir mühendis, büyük bir yöntemin en üstünde time.time() öğesine bir çağrı eklediğinden, ancak işlevin ortasında (uzun süre gitmiş bir mühendis tarafından içe aktarıldığını görmediğinden) ortaya çıktı. .) Sorunun nasıl çözüleceğine dair rehberlik istemiyorum - bu durum açıkça belli ki (ve bunu yapan kişiyi avlamak için gerekli olan uyuşukluğu da beraberinde getirecektir.)
mekanizma, neden bu şekilde yapılır, ve sistemin hangi bölümlerinin hepsini görebildiğini kontrol edebilirim.
Gerçekten hiç de garip değil, her şey kapsam içine düşüyor, davranış herhangi bir değişken kullanılarak tam olarak aynı olurdu. –