代码|为了更好的代码:12个Python小窍门( 二 )


本文插图

这在对序列(例如列表或元组)解构/解包时也同样适用 , 并且是将序列的元素更巧妙地分配给各个变量 , 因为不需要使用循环或单独索引序列中的每个元素 。
8.参数解包
当需要对列表或元组中的参数进行解包以进行需要单独位置参数的函数调用时 , Splat或Scatter运算符* 有时能发挥作用 。
例如 , 内置的range()函数需要单独的开始和停止参数 。 编写函数调用时 , 可以使用* 运算符将参数从列表或元组中解包:
让我们定义一个简单的列表:x = [1,2,3,4,5] 。
解包运算符的一个常见示例是使用 print:
print(*x) // Result: 1 2 3 4 5
这只是打印出列表中的每个元素 , 这些元素以空格分隔 , 因为解包运算符接受了列表中的所有元素 , 并将它们作为参数传递 , 因此上面代码转换成print(1,2,3,4,5) 。
这个Python技巧在函数中经常使用 , 以将方法调用接收到的所有参数‘打包’到单个变量中 。 例如:

代码|为了更好的代码:12个Python小窍门
本文插图

上面的函数func可以接受无限数量的参数(args[0]和args[1]将分别提供第一个和第二个参数) 。
以类似的方式 , 字典可以使用**运算符传递关键字参数 。 来定义一个名为 person的Python字典:
person = {"name": "Paul", "age":23, "location": "London"}
你可以使用**运算符将字典传递给函数 。 传入字典将把keys分解为函数关键字参数 , 然后将该值作为为该参数传递的实际值 。 例如:
代码|为了更好的代码:12个Python小窍门
本文插图

9.创建Enum
Enum是Python中用于创建枚举的类 , 枚举是附加到唯一常量值的一组符号名 。
为了创建Enum , 必须创建一个类 , 该类是所需Enum的名称 。 剩下要做的就是列出变量并将其设置为所需的值:
代码|为了更好的代码:12个Python小窍门
本文插图

以访问枚举成员Paul为例 , 只需执行Person.Paul , 它将返回0 。 在Python中 , 可以通过以下方式简化上述示例:将变量彼此相邻列出并将它们设置为等于range函数:
代码|为了更好的代码:12个Python小窍门
本文插图

10.Enumerate
通常在遍历列表时 , 不仅要访问列表中所有的索引 , 还要访问实际元素 。 来定义一个字符列表:
x = ["a", "b", "c"]

与其以标准方式遍历它 , 不如访问元素和索引:
代码|为了更好的代码:12个Python小窍门
本文插图

使用Enumerate:
Enumerate是Python的内置函数 , 它使我们可以循环一个可迭代对象而且有一个自动计数器 。 实际上它将列表中的每个元素与相应的索引配对 , 大多数新手 , 甚至一些高级程序员都不了解它 。
代码|为了更好的代码:12个Python小窍门
本文插图

可将变量 i和v更改为喜欢的变量名称 。 例如 , for index, count in enumerate(x). 。
11.Help函数
Python help函数用于查找模块、函数、类、关键字等的帮助文档 。 只需在help函数中传递一个对象即可检索该对象的帮助文档:
代码|为了更好的代码:12个Python小窍门
本文插图

12.Dir函数
dir()是Python3中一个强大的内置函数 , 它可返回任何对象(即函数、模块、字符串、列表、字典等)的属性和方法的列表 。 在几乎没有关于模块的信息时 , 这非常有用 , 有助于更快地学习新模块 。 例如:


推荐阅读