freeCodeCamp/guide/chinese/python/from-x-import-y/index.md

1.9 KiB
Raw Blame History

title localeTitle
Python from X Import Y 来自X Import Y的Python

如果您已经阅读了import statements wiki那么您已经看到我在其中一个示例中使用了此语句。今天我们将尝试了解它的作用

所以拿起同样的例子:

>>> from math import ceil, sqrt 
 >>> # here it would be 
 >>> sqrt(36) 
 <<< 6 

:rocket: 运行代码

或者我们可以使用这个:

>>> import math 
 >>> # here it would be 
 >>> math.sqrt(36) 
 <<< 6 

:rocket: 运行代码

然后我们的代码看起来像math.sqrt(x)而不是sqrt(x) 。发生这种情况是因为当我们使用import x ,创建名称空间x本身就是为了避免名称冲突。您必须以x.<name>访问模块的每个对象。但是当我们使用from x import y我们同意将y添加到主全局命名空间。因此,在使用它时,我们必须确保在程序中没有具有相同名称的对象。

如果名为y的对象已存在,则永远不要使用from x import y

例如,在os模块中有一个方法open 。但我们甚至有一个名为open的内置函数。所以,这里我们应该避免使用from os import open

我们甚至可以使用form x import * ,这会将该模块的所有方法,类导入到程序的全局命名空间中。这是一个糟糕的编程习惯。请避免它。

一般来说,你应该避免from x import y因为它可能会导致大规模程序出现问题。例如你永远不知道同事程序员是否想要创建一个恰好是现有函数之一的新函数。您也不知道Python是否会更改要导入函数的库。虽然如前所述这些问题不会像单独项目那样经常存在但这是不好的编程实践应该避免。