为什么某些语言(如C++和Python)需要指定对象的命名空间,即使不存在歧义?我知道有这样的后门,比如using namespace x
在C++或from x import *
Python中.但是,当只有一个可访问的命名空间包含给定的标识符且不存在歧义时,我无法理解不希望语言只是"做正确的事"的理由.对我来说,这只是不必要的冗长和违反DRY,因为你被迫指定编译器已经知道的东西.
例如:
import foo # Contains someFunction().
someFunction() # imported from foo. No ambiguity. Works.
Run Code Online (Sandbox Code Playgroud)
比.
import foo # Contains someFunction()
import bar # Contains someFunction() also.
# foo.someFunction or bar.someFunction? Should be an error only because
# ambiguity exists.
someFunction()
Run Code Online (Sandbox Code Playgroud)