初学者应该知道的4个Python隐藏功能?

发表于:2020-3-03 09:42

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:读芯术

  学无止境。
  没有任何一本书或网站能包含所有需要了解的Python内容,甚至官方文件也不能,Python的可能性可以说是无限的。
  Python的编程也永远也学不完,你可能会不断发现Python中有用的新功能,而且需要学习的内容太多了。
  多年来我一直在用Python编写代码,也发现了一些有趣的、非常独特的Python功能,这些都是在其他编程语言中找不到的。
  下面是Python初学者可能会觉得有用的4个隐藏Python功能。
  一起来看看吧~
  1.比较运算符链接
  要检查a中的值是否在0到100的范围内,需要进行两次比较,并使用and组合起来:0 <= a and a <= 100。这很容易。
  但是可以以一种更易于阅读的直观的方式来将这些比较链接起来:0 <= a <= 100。解释器将它们分开,并读取比较操作,如0 <= a and a <= 100。
   a = 25
  0 <= a <= 100       # True
  0 <= a and a <= 100 # True
  # The two expressions above are equivalent in Python
  链接还可以更长,比如0 < a < 10 < b < 100。
  2.值的交换
  如何在Python中交换两个对象的值?简单!只需创建一个临时对象temp,就像在其他语言中所做的那样。
   # Standard way to swap values oftwo objects in other languages
  temp = a
  a = b
  b = temp
  但这不是很易读,也不好看。实际上,使用Python中的一行代码就可以轻松地交换这些值。
   # Standard Python way to swapvalues
  b, a = a, b
  为什么会这样?解释器首先计算右边的值,并在内存中创建一个元组(a,b),然后在左侧,将元组中的两个元素取出并分别赋给b和a。它实际上交换了分配给a和b的对象。
  3.For-else循环
  你熟悉Python中的条件语句吗?
  while循环,ok了。
  for循环也不难。
  if else语句也学会了。
  那for else语句呢?
   deftest(nums):
  for i  in  nums:
  if i  ==0:  # if the condition is satisfied, it hits  break and the else block will not run
  print('There is a 0.')
  break
  else:
  print('There are no 0s.')
  test([1,2,3,0])  # There is a 0.
  test([1,2,3])   #  There are no 0s.
  代码来自GitHub,viewrawfor-else.py
  else块中的代码只有在for循环没有遇到break语句且正常退出时才会运行。
  那么这个for-else循环有什么用呢?可能用户已经三次尝试在一个for _ in range(3)循环中输入正确的密码,只有正确的密码才会激活break语句。连续3次猜错密码的结果就进入else块,例如锁定系统。
  4.扩展切片
  可以使用语法a[start:stop:step]对列表a切片,并使用一个可选的第三参数。读取从起始点开始,到结束点结束的部分序列,步长为step。步长必须是整数,也可以是负数。
   a = list(range(10))
  print(a[::2])   # [0, 2, 4, 6, 8]
  print(a[3::-1]) # [3, 2, 1, 0]
  通过将step参数设置为-1,可以简单地用[::-1]来反转列表。如果未指定step,则默认为1,这意味着没有元素跳过或列表反转。
  掌握这4个隐藏Python功能,摆脱“菜鸟称号”吧。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号