大家好,本文将围绕python怎么写代码跳到下一行编辑器展开说明,python怎么写代码创建文件夹和保存是一个很多人都想弄明白的事情,想搞清楚python怎么写代码并运行需要先了解以下几个事情。
如何才能写好Python代码?很多小伙伴都会问这样的问题,今天这篇就来告诉大家怎样写好Python代码。
程序设计的好与坏,早在我们青葱岁月时就接触过了,只是那是并不知道这竟如此重要用python代码画雪人。能够立即改善程序设计、写出“好”代码的知识有以下几点:
•面向对象五个基本原则;
•常见的三种架构;
•绘图;
•起一个好名字;
•优化嵌套的 if else 代码;
当然,其他技术知识的丰富程度也决定了程序设计的好坏。例如通过引入消息队列解决双端性能差异问题、通过增加缓存层提高查询效率等。下面我们一起来看看,上面列出的知识点包含哪些内容,这些内容对代码和程序设计的改善有何帮助。
面向对象五个基本原则
本书作者是 2010 级学生,面向对象是作者青葱时期发展火热的编程范式。它的五个基本原则是:
•单一职责原则;
•开放封闭原则;
•依赖倒置原则;
•接口隔离原则;
•合成复用原则;
下面我们将通过对比和场景假设的方式了解五个基本原则对代码质量的影响。
立竿见影的单一职责原则
没错,立竿见影、效果卓越。对于我们这些自学编程无师自通的人来说,能把功能实现就可以了,根本没有时间考虑代码优化和维护成本问题。时光流逝,竟在接触编程很长一段时间后才发现它竟如此重要。
俗话说只要代码写的够烂,提升就足够明显。以一个从文件内容中匹配关键数据并根据匹配结果发出网络请求的案例,看看大部分程序员的写法:
####Python学习交流Q群:906715085###
import re
import requests
FILE = "./information.fet"
def extract(file):
fil = open(file, "r")
content = fil.read()
fil.close()
find_object = re.search(r"url=\d+", content)
find = find_object.group(1)
text = requests.get(find)
return text
if __name__ == "__main__":
text = extract(FILE)
print(text)
需求已经实现,这点毋庸置疑,但是问题来了:
•如果读取文件的时候发生异常了怎么办?
•如果数据源发生变化该如何处理?
•如果网络请求返回的数据不符合最终要求怎么办?
如果你心里的第一个反应是改代码,那你就要注意了。完成一件事中间的某个环节发生变化,改代码是在所难免的,但是如果按照上面这种写法,不仅代码越改越乱,连逻辑也会越来越乱。单一职责原则表达的是让一个函数尽量只做一件事,不要将多件事混杂在一个函数中。
上面的代码如果重新设计,我认为至少应该是这样的:
def get_source():
"""获取数据源"""
return
def extract_(val):
"""匹配关键数据"""
return
def fetch(val):
"""发出网络请求"""
return
def trim(val):
"""修剪数据"""
return
def extract(file):
"""提取目标数据"""
source = get_source()
content = extract_(source)
text = trim(fetch(content))
return text
if __name__ == "__main__":
text = extract(FILE)
print(text)
把原来放在一个函数中实现的多个步骤拆分成为多个更小的函数,每个函数只做一件事。当数据源发生变化时,只需要改动 get_source 相关的代码即可;如果网络请求返回的数据不符合最终要求,我们可以在 trim 函数中对它进行修剪。这样一来,代码应对变化的能力提高了许多,整个流程也变得更清晰易懂。
改动前后的变化如下图所示:
单一职责原则的核心是解耦和增强内聚力,如果一个函数承担的职责过多,等于把这些职责耦合在一起,这种耦合会导致脆弱的设计。当发生变化时,原本的设计会遭受到意想不到的破坏。单一职责原则实际上是把一件事拆分成多个步骤,代码修改造成的影响范围很小。
让代码稳定性飞升的开放封闭原则和依赖倒置原则
开放封闭原则中的开放指的是对扩展开放,封闭指的是对修改封闭。需求总是变化的,业务方这个月让你把数据存储到 MySQL 数据库中,下个月就有可能让你导出到 Excel 表格里,这时候你就得改代码了。这个场景和上面的单一职责原则很相似,同样面临代码改动,单一职责原则示例主要表达的是通过解耦降低改动的影响,这里主要表达的是通过对扩展开放、对修改封闭提高程序应对变化的能力和提高程序稳定性。
稳定这个词如何理解呢?
较少的改动或者不改动即视为稳定,稳定意味着调用这个对象的其它代码拿到的结果是可以确定的,整体是稳定的。
按照一般程序员的写法,数据存储的代码大概是这样的: