那些被忽视的Python核心功能...( 二 )


文章插图
图片
在此过程中,原始数字列表不受影响,并且你还将拥有一个new_list_numbers 变量,它包括相同列表的副本 。

那些被忽视的Python核心功能...

文章插图
图片
五、 功能五:any and anyany和all都是python中的内置函数,它们对可迭代对象(如,列表、元组或集合)进行操作,并根据可迭代对象中的元素以Boolean运算的形式返回,语句如下:
那些被忽视的Python核心功能...

文章插图
图片
你可以将any和all函数与列表推导式结合使用,列表推导式返回一个可迭代对象并将其作为参数传递给all函数:
那些被忽视的Python核心功能...

文章插图
图片
或任意函数:
那些被忽视的Python核心功能...

文章插图
图片
下表列出可迭代对象中用any和all函数赋值的输出差异:
那些被忽视的Python核心功能...

文章插图
图片
六、功能六:交换变量用Python,你可以将参数打包((=)号右边)和解包((=)号左边)结合起来,并利用此功能交换变量:
那些被忽视的Python核心功能...

文章插图
图片
七、功能七:str vs repr在字符串处理方面,Python中的str()和repr()有所不同 。str()将值转化为前端样式文本,repr()是后端底层代码 。
·str()函数:将值转化为适于人阅读的形式,面向用户,返回值具有可读性、可理解性较强 。
·repr()函数:将对象转化为供解释器读取的形式,面向开发人员,返回值表示python解释器内部的含义 。
下图是一个很好的例子:
那些被忽视的Python核心功能...

文章插图
图片
【那些被忽视的Python核心功能...】如你所见,repr()简单将时间排列为字符串后输出;如果你想确定当前变量是否包含字符串或时间对象,无法借此识别 。
str()提供了变量持有的实际对象信息,这些信息在调试过程中非常有价值 。
八、功能八:扩展的迭代解包迭代解包可应用到任何可迭代对象上,唯一的硬性要求是:被迭代对象中的元素数量必须与接受这些元素的元组空档数一致,也可以使用星号 * 表示忽略多余的元素 。
这种方式的优点在于:更好赋值、更好获取迭代对象中的某个值(一般的迭代对象分为:元组,列表,字典,字符串等) 。
如果你想获得序列的第一个和最后一个值,需要输入如下代码:
那些被忽视的Python核心功能...

文章插图
图片
更换输入和输出语句后同样可行...
那些被忽视的Python核心功能...

文章插图
图片
其它组合也同样适用...
九、功能九:多个上下文管理器通常,我们习惯一次性使用一个上下文管理器,比如,当你打开一个程序文件,需要输入如下代码:
那些被忽视的Python核心功能...

文章插图
图片
但是,在Python中,用一行语句就能打开多个文件 。如果你想将行写入其它文件,用Python语句就很容易实现,例如:
那些被忽视的Python核心功能...

文章插图
图片
十、功能十:调试程序为达到调试目的,我们可以在文件中输出大量变量或可以简单使用Python调试器(pdb),它可以帮我们设置断点:
那些被忽视的Python核心功能...

文章插图
图片
程序将在断点处停止,你可以在该断点处获取任何变量以检查其值或该特定断点是否存在 。当程序遇到断点时,可使用如下几个命令:
  • n或next:执行下一行 。
  • s或step:进入功能调用 。
  • c或continue:继续执行,直到下一个断点 。
  • l或list:显示当前代码的上下文 。
  • p <expression>或pp <expression>:打印表达式的值 。
  • b <line>或break <line>:在指定的行上设置新断点 。
  • h或help:在使用pdb时提供帮助 。
  • q或quit:退出调试器并终止程序 。
十一、功能十一:collections模块中的Countercollections模块中的Counter类提供了一种便捷的方法,可以对可迭代对象中的元素进行计数:


推荐阅读