五个关键Python概念,让你迅速成为编程高手

发表时间: 2023-10-22 03:31

1.列表和字典

这是新开发人员的常见误解。假设您创建一个列表“x”,然后向列表分配一个新变量:

x = [9,8,7] y = x

现在,尝试在列表中附加一个新值y,然后打印两个列表:

y.append(6) print(y) # 打印 [9,8,7,6] print(x) # 打印 [9,8,7,6]

你一定想知道为什么新值已附加到两个列表中!发生这种情况是因为在Python中分配列表时,除非没有说明,否则不会复制列表。相反,会创建这个列表的新引用,即;y 只是对列表的引用。

这意味着两个变量中的操作将反映在同一个列表中。要复制列表,您需要使用以下.copy()方法:

x = [9,8,7] y = x.copy() y.append(6) print(y) # 打印 [9,8,7,6] print(x) # 打印 [9,8,7]

2.上下文管理

上下文管理器是 python 中的一个很棒的工具,有助于资源管理。它们允许您在需要时分配和释放资源。上下文管理器确保资源的所有方面都得到正确的处理。上下文管理器最常用和最常用深受认可的示例是with语句。with主要用于打开和关闭文件。

file = open(‘data.txt’,’w’)try:  file.write(“Follow Me”)except:  file.close()

在上下文管理器的帮助下,您可以完成以写入模式打开文件的任务,并且如果只出现一行问题,还可以关闭该文件。使用的主要优点是它确保我们的文件最终会被关闭with

with open ('data.txt','w') as f:   f.write(“我来”)

请注意,我们从未调用过该f.close()方法。上下文管理器会自动为我们处理它,并且即使引发异常,它也可以尝试这样做。可以使用上下文管理器的例子有很多即aiohttp.ClientSession可以),当然,您创建自己的上下文管理器。

3. Generator

生成器是一个返回可迭代对象的函数。它至少包含一个yield声明。yield是Python中的一个关键字,用于从函数返回值而不破坏其当前状态或对局部变量的引用。带参数的关键字函数yield称为生成器。生成器只在需要时生成一次项目。它们的内存效率非常高,并且占用的内存空间也很少。

示例(使用生成器的斐波那契数列)

def fib(limit):  a,b = 0,1  while a < limit:      yield a      a, b = b, a + bfor x in fib(10):   print (x)

yield 和 return 之间的区别在于 return 终止函数,但yield 只是暂停函数的执行并每次返回对应的值。

4.类型提示

类型提示使您能够编写干净且不言自明的代码。应用它的方式是“暗示”参数的类型和函数的返回值。例如,我们想要验证用户输入的文本始终是整数。为了实现这一点,我们编写得到了一个返回TrueFalse基于我们的验证的函数:

def validate_func(input): ...

现在知道了这个函数但是的作用,通过查看定义就很容易理解了。,如果没有上面的描述,事情就不会那么容易了。参数的类型是什么input?它从何而来?它已经是一个整数了吗?如果不是怎么办?该函数是否返回任何内容,或者只是引发异常?这些问题可以通过将代码重构为以下内容来回答:

def validate_func(input: str) -> bool: ...

现在,即使是第一次阅读此函数的人也更容易解释该函数。

5.日志记录

日志记录是完成捕获代码执行流程的过程。日志记录有助于轻松调试代码。它通常在文件中,以便我们以后可以检索它们。在Python中,我们有一个库logging可以帮助我们将日志写入文件。日志记录有五个级别:

  1. 调试:用于通过详细信息诊断问题。
  2. 信息:确认成功。
  3. 警告:发生意外情况时。
  4. 错误:由于比警告更严重的问题。
  5. Critical(严重):发生严重错误后程序无法自行运行。