在Java中,我可以通过引用其完全限定名称来调用类或方法而无需导入它:
public class Example {
void example() {
//Use BigDecimal without importing it
new java.math.BigDecimal(1);
}
}
类似的语法显然不能使用Python:
class Example:
def example(self):
# Fails
print(os.getcwd())
良好的做法和PEP建议除了,我可以在Python中做同样的事情吗?
答案 0 :(得分:2)
没有。如果要在Python中使用模块,则必须将其名称显式导入范围。而且,正如@AlexHall所提到的,在导入时间之前,不存在类/函数/模块。没有import
- 没有办法访问它。但是在我看来,这会产生更好,更明确的代码。这会强制您在导入模块名称时显式。
答案 1 :(得分:2)
函数在其定义运行之前不存在,这意味着它运行的模块,意味着导入模块(除非它是您直接运行的脚本)。
我能想到的最接近的是print(__import__('os').getcwd())
。
答案 2 :(得分:1)
我不确定您是否可以完全相同,但您只能导入该功能:
from foo.bar import baz as baz_fn
baz_fn()
其中foo.bar
是包含该函数的模块的完全限定名称,baz
是您要导入的函数的名称。它会将其导入为名称baz_fn
。