Python 专业技巧
学习有用的技巧和概念来编写更智能的脚本并避免 Python 中的严重错误。
get()
与字典一起使用
在 Python 中,字典是具有键值对的数据集合。
通过键直接调用任何值是 Python 中最常见的错误之一。它会导致不良行为。
如果键不存在,脚本将退出。结束!请使用该get()
方法,它已经检查过键是否存在:
team = {
"productor": "Lionsgate",
"actor": "Keanu Reeves",
"director": "Chad Stahelski"
}
actress = team.get("bullets", 2000000)
在上面的例子中,我不需要检查键“bullets”是否存在,脚本也不会停止。我甚至可以指定一个默认值。
有时,在教程中,我们会通过直接调用编写快速而粗糙的示例,但初学者无法知道这是一种不好的做法。
==
不是is
==
与其他语言一样。它检查变量是否具有相等的值。
is
检查两个操作数是否引用同一个对象。每次在脚本中添加变量时,它都会在内存中获得一个新的“槽”。您可以使用以下id()
方法进行检查:
x = "unknown"
y = "elsewhere"
print(id(x))
print(id(y))
您将获得:
140476677427376
140476698294128
所以 :
if (x is y):
print("wtf")
else:
print("x is not y")
显示:
x is not y
然而,Python 有内部优化:
x = 111
y = 111
print(id(x))
print(id(y))
if (x is y):
print("wtf")
else:
print("x is not y")
将显示类似这样的内容:
4457849408
4457849408
wtf
这很正常。Python 对小于 256 的整数使用相同的内存槽。
因此,使用关键词时要格外小心is
。
不要在制表符和空格之间切换
尤其是在 Python3 中不允许这样做。如果你的代码块中只有一个命令行,那么使用空格代替制表符不会产生任何错误。
选择你喜欢的风格,但要保持一致性。否则,你迟早会犯错。
如果这不是你的代码的问题,请考虑重新格式化。大多数情况下,IDE(集成开发环境)都有类似的选项,例如“将制表符转换为空格”。
保留关键字
所有语言都有保留关键字。要获取完整列表,只需在 Python 解释器中运行以下命令:
help("keywords")
你的 IDE 在这里也很有用。大多数情况下,如果它支持 Python(很有可能),保留关键字会有一个特定的颜色。
使用 try/except/else 和 finally
尝试代码并捕获错误总是一个更好的主意,而不是假设一切都会按预期进行。
在 Python 中,你可以使用如下异常:
answer = input()
try:
answer = 111/int(answer)
except:
print("Error, please check your input and use a positive number")
else:
print("The answer is", answer)
finally:
print("That's all folks!")
即使遇到异常,关键字“finally”也始终显示。
使用更短的 if 语句
不要这样写:
if myvar == 9 or myvar ==1 or myvar == 7
您可以执行以下操作:
if myvar in [9,1,7]
它速度更快,并且代码更易读。
遵循指南和标准
当然,您可以编写自己的内容,但指南和代码标准是最简单的方法,特别是对于初学者而言。
在 Python 中,你可以使用PEP 8 样式指南。这是一套包含“该做”和“不该做”的规则。
例如,在 PEP8 样式中,您不能使用制表符来缩进代码。相反,每次缩进都需要使用四个空格。
此外,如果你想做出贡献,那就太好了。
编写面向对象代码(OOP)
OOP 是一种范式,它超越了任何编程/脚本语言。
在 Python 中编写类可能看起来像这样:
class Calculation:
"""An example of Python class"""
def __init__(self, num1, num2):
self.num1 = num1
self.num2 = num2
def add(self):
print(self.num1 + self.num2)
calc = Calculation(36, 37)
calc.add()
导入库
任何模块都可以使用关键字访问其他模块import
。
库很方便;例如,如果您想使用 Python 进行机器学习,您可能会使用Numpy。
但是,不要像下面这样使用导入:
from os import *
mkdir("existenz")
相反,这样做:
# Standard library imports
import os
try:
os.mkdir("existenz")
except:
print("existenz exists")
else:
print("existenz created")
finally:
print("\\o/")
第一个将从 os 包中导入所有对象,这可能会导致命名冲突等意外错误。
此外,您还可以导入第三方和本地包。对于它们,我建议使用别名:
import foo as bar
print(bar)
请注意,可以使用相对路径来导入库,但恕我直言,这不是一个好习惯。Pep8 不鼓励在导入中使用相对路径,而 Python3 也取消了对隐式相对导入的支持。
包起来
希望这些技巧和概念能帮助你写出更好的 Python 代码。其实,这些技巧并不详尽,欢迎在下面的评论区分享你的技巧 ;)
文章来源:https://dev.to/spo0q/python-pro-tips-27cb