使用import*在python程序中, 这是一个坏习惯, 因为这样会污染名称空间, import *语句会将所有函数和类导入你自己的名称空间, 这可能会与你定义的功能或导入的其他库的功能发生冲突。在某些时候, 很难说出特定功能来自哪个库。在导入*实践中, 始终存在覆盖变量/函数等的风险。
以下是有关为什么的一些要点import*不应使用:
- 代码可读性
- 导入的内容始终是一个谜, 无法轻易地从哪个模块中导入某些东西, 导致代码可读性低。
- 污染名称空间, import *导入你自己的名称空间中的所有函数和类, 它们可能与你定义的函数和类或你可能导入的其他库的函数和类发生冲突。
- 隐藏错误的具体可能性
- 诸如pyflakes之类的工具无法用于静态检测源代码中的错误。
所有这些并不意味着使用import*总是不好的, 如果我告诉过你, 在这个世界上没有什么像import *这样的东西, 那你会渴望的。使用import *时, 你唯一要记住的是, 你应始终谨慎使用并保持纪律。
现在, 让我们进入一个示例, 以更实际, 更易于理解的方式查看问题。
考虑包装一种包含一个功能总和(a, b)
# import the module a using import *
from a import *
# define a function sum
def sum (x, y):
return x + y
print ( sum ( 2 , 6 ))
此代码的错误在于, 我们定义的sum函数会覆盖我们导入的模块” a”中的sum函数, 甚至对此我们一无所知。在大型程序的情况下, 很难确定实际上正在调用哪个功能。
正确的方法:
# import the module a as l
import a as l
def sum (x, y):
return x + y
# calls the self-defined sum function
print ( sum ( 2 , 6 ))
# calls the sum function defined in the module a
print (l. sum ( 2 , 6 ))
这种编码方式提高了代码的可读性, 并且使调试变得容易, 发生冲突的几率几乎为零。
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
评论前必须登录!
注册