Python 专业技巧

2025-06-07

Python 专业技巧

学习有用的技巧和概念来编写更智能的脚本并避免 Python 中的严重错误。

get()与字典一起使用

在 Python 中,字典是具有键值对的数据集合。

通过键直接调用任何值是 Python 中最常见的错误之一。它会导致不良行为。

如果键不存在,脚本将退出。结束!请使用该get()方法,它已经检查过键是否存在:

team = {
   "productor": "Lionsgate",
   "actor": "Keanu Reeves",
   "director": "Chad Stahelski" 
}

actress = team.get("bullets", 2000000)
Enter fullscreen mode Exit fullscreen mode

在上面的例子中,我不需要检查键“bullets”是否存在,脚本也不会停止。我甚至可以指定一个默认值。

有时,在教程中,我们会通过直接调用编写快速而粗糙的示例,但初学者无法知道这是一种不好的做法。

==不是is

==与其他语言一样。它检查变量是否具有相等的值。

is检查两个操作数是否引用同一个对象。每次在脚本中添加变量时,它都会在内存中获得一个新的“槽”。您可以使用以下id()方法进行检查:

x = "unknown"
y = "elsewhere"
print(id(x))
print(id(y))
Enter fullscreen mode Exit fullscreen mode

您将获得:

140476677427376
140476698294128
Enter fullscreen mode Exit fullscreen mode

所以 :

if (x is y):
    print("wtf")
else:
    print("x is not y")
Enter fullscreen mode Exit fullscreen mode

显示:

 x is not y
Enter fullscreen mode Exit fullscreen mode

然而,Python 有内部优化:

x = 111
y = 111
print(id(x))
print(id(y))

if (x is y):
    print("wtf")
else:
    print("x is not y")
Enter fullscreen mode Exit fullscreen mode

将显示类似这样的内容:

4457849408
4457849408
wtf
Enter fullscreen mode Exit fullscreen mode

这很正常。Python 对小于 256 的整数使用相同的内存槽。

因此,使用关键词时要格外小心is

不要在制表符和空格之间切换

尤其是在 Python3 中不允许这样做。如果你的代码块中只有一个命令行,那么使用空格代替制表符不会产生任何错误。

选择你喜欢的风格,但要保持一致性。否则,你迟早会犯错。

如果这不是你的代码的问题,请考虑重新格式化。大多数情况下,IDE(集成开发环境)都有类似的选项,例如“将制表符转换为空格”。

保留关键字

所有语言都有保留关键字。要获取完整列表,只需在 Python 解释器中运行以下命令:

help("keywords") 
Enter fullscreen mode Exit fullscreen mode

你的 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!")
Enter fullscreen mode Exit fullscreen mode

即使遇到异常,关键字“finally”也始终显示。

使用更短的 if 语句

不要这样写:

if myvar == 9 or myvar ==1 or myvar == 7
Enter fullscreen mode Exit fullscreen mode

您可以执行以下操作:

if myvar in [9,1,7]
Enter fullscreen mode Exit fullscreen mode

它速度更快,并且代码更易读。

遵循指南和标准

当然,您可以编写自己的内容,但指南和代码标准是最简单的方法,特别是对于初学者而言。

在 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()
Enter fullscreen mode Exit fullscreen mode

导入库

任何模块都可以使用关键字访问其他模块import

库很方便;例如,如果您想使用 Python 进行机器学习,您可能会使用Numpy

但是,不要像下面这样使用导入:

from os import *

mkdir("existenz")
Enter fullscreen mode Exit fullscreen mode

相反,这样做:

# Standard library imports
import os

try:
    os.mkdir("existenz")
except:
    print("existenz exists")
else:
    print("existenz created")
finally:
    print("\\o/")
Enter fullscreen mode Exit fullscreen mode

第一个将从 os 包中导入所有对象,这可能会导致命名冲突等意外错误。

此外,您还可以导入第三方和本地包。对于它们,我建议使用别名:

import foo as bar

print(bar)
Enter fullscreen mode Exit fullscreen mode

请注意,可以使用相对路径来导入库,但恕我直言,这不是一个好习惯。Pep8 不鼓励在导入中使用相对路径,而 Python3 也取消了对隐式相对导入的支持。

包起来

希望这些技巧和概念能帮助你写出更好的 Python 代码。其实,这些技巧并不详尽,欢迎在下面的评论区分享你的技巧 ;)

文章来源:https://dev.to/spo0q/python-pro-tips-27cb
PREV
为什么 PHP 8 会很棒
NEXT
揭穿关于 HTTPS 的迷思