python中from A import B和import A.B有什么区别
时间: 2023-10-26 14:07:19 浏览: 30
在Python中,`from A import B`和`import A.B`都是用于导入模块或模块中的函数、类或变量,但它们之间有一些区别。
`from A import B`语句导入模块A中名为B的函数、类或变量,并将其直接引入当前作用域。这意味着您可以直接使用B,而不必在使用时使用限定名称A.B。这种方式更加方便,尤其是当您只需要使用模块中的一小部分时。
`import A.B`语句只是导入模块A中名为B的子模块,而不是将其直接引入当前作用域。这意味着您必须使用完全限定的名称A.B来访问子模块中的函数、类或变量。这种方式更适合用于导入整个模块或子模块的情况。
下面是一个使用这两个语句的简单例子:
```
# 使用 from A import B 语句
from math import sqrt
print(sqrt(4)) # 直接使用 sqrt 函数,输出 2.0
# 使用 import A.B 语句
import math.sqrt
print(math.sqrt(4)) # 使用完全限定的名称,输出 2.0
```
总之,选择使用哪种语句取决于您需要导入的内容以及如何在代码中使用它们。
相关问题
python中from A import *
在 Python 中,`from A import *` 是一种导入模块中所有公开对象的方式。具体来说,这种方式会将模块 A 中所有以单下划线 `_` 开头的对象(通常用于表示模块内部使用的对象)和以双下划线 `__` 开头的对象(通常用于表示特殊对象,如类的构造函数)排除在外,然后将其他对象全部导入到当前的命名空间中。
虽然 `from A import *` 可以方便地导入模块中的所有对象,但这种方式并不推荐使用。原因如下:
1. 可能会覆盖命名空间中的对象:如果模块 A 中定义了一些和当前命名空间中已有对象同名的对象,那么使用 `from A import *` 可能会覆盖掉当前命名空间中的对象,导致程序出错。
2. 可读性差:使用 `from A import *` 可能会导致代码可读性变差,因为不清楚当前命名空间中有哪些对象来自于模块 A。
3. 可能会引入不必要的对象:使用 `from A import *` 可能会引入一些不必要的对象,从而增加程序的内存开销。
因此,通常情况下,建议使用 `import A` 或 `from A import B` 的方式来导入模块或模块中的对象。如果确实需要导入模块中的所有对象,可以使用 `import A as B` 的方式来将模块 A 导入到命名空间中,并给它一个可读性更好的别名,然后使用 `B.object_name` 的方式来引用模块中的对象。
python中from和import区别
Python中,from和import都是用来导入模块的关键字,但它们的使用方式和作用有所不同。
import是最常用的导入模块的方式,它可以导入整个模块或者模块中的某个函数、类等。例如:
import math
print(math.pi)
from是另一种导入模块的方式,它可以只导入模块中的某个函数、类等,而不是整个模块。例如:
from math import pi
print(pi)
使用from导入模块中的某个函数或类时,可以使用as关键字给它们起一个别名,例如:
from math import pi as PI
print(PI)
总之,import是导入整个模块,from是只导入模块中的某个函数、类等。