5 个我甚至不知道的 Python 特性
5 个我甚至不知道的 Python 特性
一、功能属性
您可以以与类和对象类似的方式为函数设置特征。
在第 10 行和第 11 行中,分别设置了属性“可选返回”和“很棒”。后来,在第 19 行和第 20 行,我们对这些属性进行了外部调用。代码的输出将是:
最终答案是 219
显示计算 --> 13
我的功能很棒吗--> 是的,我的功能很棒
当您不想在每次运行函数时使用 return 语句显式返回变量但仍希望能够恢复作为中间体发送的变量时,这很有用。另外,请注意,可以从函数声明的内部或外部设置属性。
2. for-else循环
Python 中的 for 循环可以添加一个 else 子句。只有在执行过程中在循环体中没有遇到 break 语句时才会激活 else 子句。
请记住,else 是在 for 而不是 if 的级别插入的。其中没有任何元素的长度小于 3。因此,将永远不会使用 break 语句。结果,在 for 循环完成后,将激活 else 子句,打印上面显示的输出。
有人可能会争辩说,这可以通过注意是否在不同的变量中找到了 break 语句来实现。此外,它可能使您之后的读者更容易理解代码。得到相同结果的等效方法如下:
3. 'int' 的分隔符
现在,这是我个人的一个 最喜欢的整数
像 10000000 和 100000000 (它们真的是不同的数字吗?)在视觉上很难区分。 Python 将在这种情况下将逗号视为许多整数的元组,因此我们无法像在英语中那样使用它们。
Python 对此有一个非常实用的解决方案:我们可以使用下划线作为分隔符,让代码更具可读性。因此, 1_000_000
将被视为单个 int。
4. eval() 和 exec()
Python 具有动态读取字符串并将其视为一行代码的能力。这 评估()
和 执行()
函数(分别用于评估表达式和执行语句)用于执行此操作。
在第 3 行, 评估()
函数将输入字符串读取为 Python 表达式,对其进行评估,并将结果分配给变量“b”。
6号线 执行()
函数将输入字符串作为 Python 语句读取并执行。
您还可以将动态构造的字符串传递给这些函数。例如,您可以创建 1000 个名为 x_0、x_1、...、x_999 的变量,而无需在代码中手动编写这些变量声明。这似乎是一个完全没有意义的功能,但事实并非如此。
在更广泛的编程环境中,不仅仅是 Python,eval/exec 的使用非常强大,因为它允许您编写动态代码,使用运行时可用的信息来解决甚至无法在编译时表达的问题。 […] exec 实际上是嵌入在 Python 中的 Python 解释器,所以如果你有一个特别难解决的问题,你可以解决它的一种方法是编写一个程序来编写一个程序来解决它,然后使用 exec运行第二个程序。
你可以阅读更多 这个美丽的解释 史蒂文·达普拉诺
5.省略号
椭圆或“...”是 Python 内置常量,类似于 None、True 或 False 等内置常量。它可以以多种方式使用,包括但不限于:
5.1 不成文代码的占位符
与 pass 一样,省略号可以在代码未完全编写但语法准确性需要通配符时用作通配符。
5.2 “无”的替代方案。
如果要指示空输入或返回值,通常选择无。但是,在某些情况下 None 是预期的输入或函数返回值之一。在这种情况下,椭圆充当占位符。
这 nth_odd()
函数计算给定 n 的第 n 个奇数。这 original_num()
函数从第 n 个奇数计算原始数 n。
这里, 没有任何
不能使用,因为它是预期的输入之一 original_num()
功能。它们用作 m 参数的默认占位符。代码的输出如下所示:
这个函数需要一些输入
提供给 nth_odd() 函数的非整数输入
9是第5个奇数
16不是奇数
5.3 NumPy 中的数组切片
NumPy 使用 Ellipsis 对数组进行切片。以下代码显示了拆分 NumPy 数组的两种等效方法。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明