提升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编码能力概念内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python的条件控制 if 语句详解

    Python的条件控制 if 语句详解

    Python的 if 语句用来「控制代码」的执行,「判断条件成立」时执行一段代码,判断条件「不成立」时执行另一段代码,本文就给大家详细讲讲Python的条件控制 if 语句,需要的朋友可以参考下
    2023-08-08
  • np.newaxis()函数的具体使用

    np.newaxis()函数的具体使用

    本文主要介绍了np.newaxis()函数的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python如何实现复制目录到指定目录

    python如何实现复制目录到指定目录

    这篇文章主要为大家介绍了python如何实现复制目录到指定目录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • django rest framework 自定义返回方式

    django rest framework 自定义返回方式

    这篇文章主要介绍了django rest framework 自定义返回方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-07-07
  • 分析Python中解析构建数据知识

    分析Python中解析构建数据知识

    本篇文章给大家讲述一下Python中解析构建数据知识的相关内容,有需要的朋友跟着学习下。
    2018-01-01
  • 详解Django+uwsgi+Nginx上线最佳实战

    详解Django+uwsgi+Nginx上线最佳实战

    这篇文章主要介绍了Django+uwsgi+Nginx上线最佳实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • Python socket连接中的粘包、精确传输问题实例分析

    Python socket连接中的粘包、精确传输问题实例分析

    这篇文章主要介绍了Python socket连接中的粘包、精确传输问题,结合实例形式分析了Python socket连接中的粘包、精确传输相关问题原因、解决方案与操作注意事项,需要的朋友可以参考下
    2020-03-03
  • python配置虚拟环境步骤

    python配置虚拟环境步骤

    大家好,本篇文章主要讲的是python配置虚拟环境步骤,感兴趣的同学赶快来看一看,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 对Python使用mfcc的两种方式详解

    对Python使用mfcc的两种方式详解

    今天小编就为大家分享一篇对Python使用mfcc的两种方式详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python求矩阵的范数和行列式

    Python求矩阵的范数和行列式

    这篇文章主要介绍了Python求矩阵的范数和行列式,文章中有详细的代码实例,感兴趣的同学可以参考阅读
    2023-04-04

最新评论