[英]Can I use a function from an import module inside a local class? (Python)
我想實現如下所示的代碼,但出現“未定義全局名稱import_module”錯誤。 是否可以使用本地類中導入的模塊中的函數? 如果可能的話,怎么做?
class local_class():
def local_function():
action = raw_input()
if action = 'fow':
import_module.import_function
else:
print 'null'
是的,這完全有可能,但是您需要導入模塊。
class local_class():
def local_function():
action = raw_input()
if action = 'fow':
import import_module
import_module.import_function
else:
print 'null'
是。 但是您必須import
模塊:
class local_class():
def local_function():
action = raw_input()
if action = 'fow':
import import_module
import_module.import_function
else:
print 'null'
假設import_module.py
是sys.path
的有效模塊
您需要將import語句放置在所需范圍內的某個位置:
import import_module
class local_class():
def local_function():
action = raw_input()
if action = 'fow':
import_module.import_function
else:
print 'null'
要么
class local_class():
def local_function():
import import_module
action = raw_input()
if action = 'fow':
import_module.import_function
else:
print 'null'
# import_module.import_function would fail here, import_module is local
# to local_class.local_function
# BUT...
但是請注意,一旦導入,該模塊將由python在內部存儲,因此,即使您無法在另一個作用域中訪問它,如果再次導入該模塊,也將獲得相同的實例。 例如:
>>> def func():
import shutil
# Store a new attribute in the module object
shutil.test = 5
print(shutil.test)
>>> func()
5
>>> shutil.test
Traceback (most recent call last):
File "<pyshell#45>", line 1, in <module>
shutil.test
NameError: name 'shutil' is not defined
>>> import shutil
>>> shutil.test # The attribute exists because we get the same module object
5
>>>
>>> ================================ RESTART ================================
>>> shutil.test
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
shutil.test
NameError: name 'shutil' is not defined
>>> import shutil
>>> shutil.test
Traceback (most recent call last):
File "<pyshell#50>", line 1, in <module>
shutil.test
AttributeError: 'module' object has no attribute 'test'
>>>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.