提升Python编码能力的3个重要概念

 更新时间:2022年02月16日 10:24:05   作者:赵卓不凡  
这篇文章主要给大家分享的是提升Python编码能力的3个重要概念,围绕提升Python编码的相关自资料上下文管理器、类型提示、浅拷贝和深拷贝等内容展开文章,需要的小伙伴可以参考一下

1. 引言

Python 是由Guido Van Rossum 于 1991 年创建的一种编程语言。在过去的几年里,越来越多的公司开始使用 Python 进行项目开发,主要是因为它语法简单,有很多方便使用的第三方库。本文主要对Python中一些概念进行抽象总结,理解并使用它们可以极大地提升大家的编码能力。

2. 上下文管理器

上下文管理器允许我们以最佳方式分配和释放上下文的资源。对于某些资源的管理上,如果处理不当,可能会产生一些非常奇怪的现象,让人摸不着头脑。上下文管理器可以确保资源在使用完毕后正常释放。
一般来说,我们主要通过使用 with 关键字来使用它。使用上下文管理器最常见的情形是操作文件。对文件执行操作后,需要将其正确关闭,上下文管理器可以通过跳过具体细节来轻松地为我们完成相应的操作,

举例如下:

with open('myfile.xtx', 'r') as f:
    content = f.read()

观察上述代码,我们并没有显示调用 f.close() 方法。上下文管理器会自动为我们处理文件关闭的操作。

3. 类型提示

类型提示可以帮助我们能够编写干净、可解释性强的代码。应用它的方式是“注明”参数的类型和函数的返回值。例如,我们要验证用户的文本输入始终是整数。为此,我们编写了一个函数,该函数根据我们的验证返回 True False

def validate_integer(user_input):
    ...

既然我们知道 了这个函数的作用,那么通过查看定义就很容易理解了。但是,如果没有上面的描述,只看上述函数的声明,想要弄懂它并不是那么容易。 user_input 参数的类型是什么?它从何而来?它已经是一个整数了吗?通过将代码重构为以下形式,我们可以通过声明来回答这些问题:

def validate_integer(user_input: str) -> bool:
    ...

我们观察上述函数的声明,就非常容易解释了,即使是第一次读到这段代码的人。

4. 浅拷贝和深拷贝

对于新入门的研发人员来说,这是一个经常弄错的概念。我们来看个例子,假设我们创建了一个列表 a,然后将此列表分配给一个新变量b:

>>> a = [1, 2, 3]
>>> b = a

接着,我们尝试在列表b中插入一个新值,然后打印两个列表:

>>> b.append(4)
>>> print(b)
[1, 2, 3, 4]
>>> print(a)
[1, 2, 3, 4]

很多人会觉得奇怪,因为新值已插入到两个列表中!发生这种情况主要是因为在 Python中分配列表时,除非另有说明,否则不会复制列表。上述列表b只是列表a的引用,属于浅拷贝。

上述样例的图示解释如下:

上述图例意味着两个变量中的操作将反映到同一个列表中。如果我们确实相应生成列表a的副本,此时我们需要用到深拷贝,即使用.copy()方法进行相关操作:

>>> a = [1, 2, 3]
>>> b = a.copy()
>>> b.append(4)
>>> print(b)
[1, 2, 3, 4]
>>> print(a)
[1, 2, 3]

5. 总结

本文重点讲述了一些可以提升Python开发人员编码能力的概念和个人见解,希望大家可以从中学到相关技巧。当然,像任何编程语言一样,还是建议大家多动手,做的熟能生巧。

到此这篇关于提升Python编码能力的3个重要概念的文章就介绍到这了,更多相关提升Python编码能力概念内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 用TensorFlow实现多类支持向量机的示例代码

    用TensorFlow实现多类支持向量机的示例代码

    这篇文章主要介绍了用TensorFlow实现多类支持向量机的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • ruff check文件目录检测--exclude参数设置路径详解

    ruff check文件目录检测--exclude参数设置路径详解

    这篇文章主要为大家介绍了ruff check文件目录检测exclude参数如何设置多少路径详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Matplotlib实战之面积图绘制详解

    Matplotlib实战之面积图绘制详解

    面积图,或称区域图,是一种随有序变量的变化,反映数值变化的统计图表,这篇文章主要介绍了如何利用Matplotlib实现面积图的绘制,需要的可以参考下
    2023-08-08
  • 利用django如何解析用户上传的excel文件

    利用django如何解析用户上传的excel文件

    这篇文章主要给大家介绍了关于利用django如何解析用户上传的excel文件的相关资料,这是最近在工作中遇到的一个问题,觉着有必要分享出给大家,需要的朋友可以参考借鉴,下面来一起看看详细的介绍吧。
    2017-07-07
  • 浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估

    浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估

    这篇文章主要介绍了Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估,本文通过一段代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-10-10
  • Python实现本地csv文件合并

    Python实现本地csv文件合并

    大家好,本篇文章主要讲的是Python实现本地csv文件合并,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • django restframework序列化字段校验规则

    django restframework序列化字段校验规则

    本文主要介绍了django restframework序列化字段校验规则,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Python实现检测文件MD5值的方法示例

    Python实现检测文件MD5值的方法示例

    这篇文章主要介绍了Python实现检测文件MD5值的方法,涉及Python针对大文件的读取、判断、运算、加密等相关操作技巧,需要的朋友可以参考下
    2018-04-04
  • Python学习之文件的读取详解

    Python学习之文件的读取详解

    这篇文章主要为大家介绍了Python中如何将文件中的内容读取出去来的方法,文中通过示例进行了详细讲解,感兴趣的小伙伴快跟随小编一起学习一下
    2022-03-03
  • Python输出带颜色的字符串实例

    Python输出带颜色的字符串实例

    下面小编就为大家带来一篇Python输出带颜色的字符串实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10

最新评论