随着Python最佳实践在网络上广泛传播,每个人分享的观点可能都有所不同。互联网让专业知识变得更加民主化,任何人都可以分享自己的见解,包括我本人。我将重点介绍一些被广大开发者普遍认可并视为基础性的Python最佳实践。
封面图片由Mikhail Nilov提供。
我们正处于大型语言模型(LLMs)的时代,这已不再只是科幻小说中的概念。在deasadiqbal.mediumcom上,有许多关于Python开发的实用指南和资源。
为了提供快速参考,以下是一些关于Pandas和Git命令的快速参考表。我也整理出了面试中最常问的50多个SQL问题,帮助你进行面试准备。
在分享Python最佳实践时,我想给出以下提示:
提示一:函数应明确指定参数和返回类型。
在定义函数时,你应该清晰地指定参数的类型以及函数返回的结果的数据类型。这样做有助于你和团队中的其他开发人员了解函数的预期行为,而无需通过打印语句来逐步调试。例如:
好的做法:
```python
def greet(name: str) -> None:
"""向用户通过名字问好。"""
print(f"Hello, {name}!")
def calculate_area(length: int, width: int) -> int:
"""计算矩形的面积。"""
area = length width
return area
```
不良的做法:
```python
def do_something():
print("这个函数做了一些事情,但不清楚具体是什么!")
调用函数
do_something("这是一个错误!") 这可能会导致错误
```
提示二:函数应保持一致的抽象层次。
当我们谈论函数的抽象层次时,我们指的是一个函数应该执行一个单一且明确的任务。这个函数在整个过程中应保持一致的抽象层次。换句话说,函数应该专注于特定的细节或复杂度水平,并且其所有操作都应在同一层次上进行。例如:
好的做法:
```python
def calculate_average(numbers):
total = sum(numbers)
count = len(numbers)
average = total / count
return average
```
不良的做法:涉及多个层次和复杂操作的函数,可能导致代码难以理解和维护。在实际编程中应避免这种情况。
关于Address类与国家首都的问题,原始的OCP(Open-Closed Principle)违背问题,可以通过使用字典来解决,新版本的代码已经很好地实现了这一点。
接下来,针对你给出的提示,我对代码进行了相应的改进:
提示 5:尽量避免添加注释
确实,过多的注释可能导致读者关注别人的想法,而非代码实际在做什么。我会尽量通过命名规范和代码结构来传达意图,而不是依赖注释。例如,对于Address类中的get_capital方法,其意图已经非常明确,无需额外注释。
提示 6:避免魔法数字
我会避免直接在代码中使用硬编码的数字。例如,将50定义为常量NUM_OF_ORDERS,然后在代码中使用这个常量。这样做的好处是,如果以后需要更改这个数字,只需在一个地方修改即可。
提示 7:避免深层嵌套
嵌套层次的减少会使代码更易于阅读和理解。我已经将嵌套的if语句改为字典查找方式,使代码更为简洁清晰。
提示 8:避免硬编码路径
对于文件路径或URL等硬编码信息,我会使用环境变量或配置文件来存储这些信息。这样做的好处是,如果以后需要更改这些路径或URL,只需修改配置文件或环境变量即可,无需修改代码。
```python
class Address:
def __init__(self, country):
self.country = country
def get_capital(self):
capitals = {
'canada': "Ottawa",
'america': "Washington D.C",
'united Kingdom': "London"
}
return capitals.get(self.country, "Capital not found") 使用字典的get方法返回首都或默认信息
address = Address('united Kingdom') 创建Address对象并传入国家名
print(address.get_capital()) 输出对应国家的首都或默认信息
```
关于文件路径的获取
在编程中,获取文件路径是一个常见的操作。好的做法是使用`os.getenv("FILE_PATH")`来获取文件路径,这样可以根据环境变量动态获取路径,更加灵活和可靠。而硬编码路径(如`file_path = "/path/to/file.txt"`)则可能会限制程序的通用性。
关于类设计的原则:保持小巧
类就像一个个装着功能的盒子,其设计应遵循单一职责原则。一个类应该只负责一项特定的任务,就像函数一样,虽然它们的大小可能由代码行数决定,但更重要的是它们的功能和职责。当类名模糊不清或涵盖太多职责时,可能是我们赋予它过多的责任。我们应当保持类的简洁和专注,使其更容易理解和维护。
编程小贴士:避免复杂的三元表达式
在编写代码时,我们应尽量避免使用过于复杂的三元表达式。虽然它们可以简洁地表达某些逻辑,但复杂的表达式可能会降低代码的可读性。优先考虑可读性,使代码更易于理解和维护。例如,使用多个`if-else`语句(如:“如果number是偶数...”,“如果number可以被3整除...”)比使用复杂的三元表达式更加清晰和直观。
感谢阅读!希望这些建议和技巧能够帮助您在编程路上更加顺畅。? |