一起来看看五条Python中的隐含特性
作者:赵卓不凡 发布时间:2023-06-30 12:46:43
1. 引言
最近闲暇之余,我会去阅读一些Python文档,有时候会注意到一些有趣的Python特性,这些特性不禁让人惊呼:“哇,Python原来还可以这么写”。
闲话少说,我们直接开始吧。 :)
2. 函数属性
和设置类和对象的属性类似,我们在Python中也可以为函数设置属性。样例代码如下:
def func(x):
intermediate_var = x**2 + x + 1
if intermediate_var % 2:
y = intermediate_var ** 3
else:
y = intermediate_var **3 + 1
# setting attributes here
func.optional_return = intermediate_var
func.is_awesome = 'Yes, my function is awesome.'
return y
y = func(3)
print('Final answer is', y)
# Accessing function attributes
print('Show calculations -->', func.optional_return)
print('Is my function awesome? -->', func.is_awesome)
观察上述代码,我们在第9行设置函数属性‘optional_return’在第10行设置属性’is_awesome’.同时,在最后两行的调用语句里我们访问了这两个函数属性的值。
上述代码的运行结果如下:
Final answer is 2197
Show calculations --> 13
Is my function awesome? --> Yes, my function is awesome.
当我们希望选择检查一些函数中的中间变量,但不想每次调用函数时使用 return 语句显式返回它时,上述函数属性的写法将会排上用场。
3. For-else循环
在 Python 中,我们可以在 for 循环中添加 else 语句。只有在执行期间在循环体中没有遇到 break 语句时才会触发 else 语句。样例代码如下:
my_list = ['some', 'list', 'containing', 'five', 'elements']
min_len = 3
for element in my_list:
if len(element) < min_len:
print(f'Caught an element shorter than {min_len} letters')
break
else:
print(f'All elements at least {min_len} letters long'
上述代码输出如下:
All elements at least 3 letters long
观察上述代码,else 在 for 级别缩进,而不是在 if 级别缩进。在这里,没有任何元素的长度小于 3。因此,将永远不会遇到 break 语句。因此,else 子句将被触发(在执行 for 循环之后)并打印上面显示的输出。
4. int型分隔符
一般来说,从视觉效果上看人眼很难分辨出数字10000000 和100000000 ,在Python中我们不能像英语那样直接使用逗号分隔符来将数字隔开,这是因为Python会将逗号分隔开的数字解释为多个整数的元组。
但是,Python也有一种方便的方式来处理这种情形:我们可以使用下划线当做分隔符来提升数字的可读性,此时数字1_000_000将被解释成整形数字并增加了可读性。
代码样例如下:
a = 3250
b = 67_543_423_778
print(type(a))
print(type(b))
print(type(a)==type(b))
运行结果如下:
<class 'int'>
<class 'int'>
True
5. eval() and exec()
Python 具有动态读取字符串并将其视为一段 Python 代码的能力。这主要是通过使用 eval() 和 exec() 函数来实现的(“eval”用于评估表达式,“exec”用于执行语句)。
代码举例如下:
a = 3
b = eval('a + 2')
print('b =', b)
exec('c = a ** 2')
print('c is', c)
运行结果如下:
b = 5
c is 9
上述代码中,eval() 函数将输入字符串作为 Python 表达式读取,对其求值,并将结果分配给变量“b”。同时,exec() 函数将输入字符串作为 Python 语句读取并执行。
6. 省略号
省略号或“…”是 Python 的内置常量,类似于 None、True、False 等内置常量。它可以以不同的方式使用,包括但不限于:
6.1 占位符
和 pass 类似,省略号可以在代码没有写完整的时候用作占位符,举例如下:
def some_function():
...
def another_function():
pass
6.2 numpy数组中用于切片
NumPy中使用省略号可以对数组进行切片。以下代码显示了对 NumPy 数组进行切片的两种等效方法:
import numpy as np
a = np.arange(16).reshape(2,2,2,2)
print(a[..., 0].flatten())
print(a[:, :, :, 0].flatten())
结果如下:
[ 0 2 4 6 8 10 12 14]
[ 0 2 4 6 8 10 12 14]
7.总结
Python 不仅是一门有用的语言,而且是一门非常有趣的语言。我们都忙于生活工作,但为了更好地了解语言本身的一些特性并没有什么坏处。在本文中,重点介绍了5个Python中隐含的特性,并给出了相关代码的讲解。
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!
来源:https://blog.csdn.net/sgzqc/article/details/122691748


猜你喜欢
- numpy的sum函数可接受的参数是:sum(a, axis=None, dtype=None, out=None, keepdims=np
- 本文实例为大家分享了python多进程实现文件下载传输功能的具体代码,供大家参考,具体内容如下需求:实现文件夹拷贝功能(包括文件内的文件),
- 这是lgzx公司的一道面试题,要求给js的String添加一个方法,去除字符串两旁的空白字符(包括空格、制表符、换页符等)。 String.
- /* *使用方法: * var d = new Drag({id:'dragPannel',maxLeft:500,maxT
- 在IE 浏览器中使用 jquery的fadeIn() 效果 英文字符字体加粗的解决方法分享。<div id='tes
- pygal.style的LightColorizedStyle参数 问题在《Python编程:从入门到实践》中的使用API的案例,
- 图例如下https://github.com/Dongvdong/python_Smartvoice上电后,只要周围声音超过 2000,开始
- 参考:1.Basemap绘制中国地图2.Basemap生成的图中绘制轨迹使用CMA热带气旋最佳路径数据集,对我国周边的台风进行绘制impor
- 流动网页设计有很多好处,但也只有在正确使用的时候。合适的技巧会使页面在大屏幕、小屏幕抑、PDA小屏幕上都能得到良好的呈现。但是,糟糕的代码结
- 我就废话不多说了,直接上代码吧!【code】import numpy as npthreshold=2a=np.array([[1,2,3]
- 一、类型1.变量没有类型,数据有类型例:num = 1 ---->num是没有类型的,1是int类型二、格式化输出2.na
- python对PPT演示文档读写,是通过第三方库python-pptx实现的,python-pptx是用于创建和更新 PowerPoint(
- 如何优雅地解析命令行选项随着我们编程经验的增长,对命令行的熟悉程度日渐加深,想来很多人会渐渐地体会到使用命令行带来的高效率。自然而然地,我们
- Memento备忘录模式 备忘录模式一个最好想象的例子:undo! 它对对象的一个状态进行了'快照', 在你需要的时候恢复原
- (5)SELECT (5-2) DISTINCT(5-3)TOP(<top_specification>)(5-1) <s
- 查看数据库状态:service mysqld status 启动数据库:service mysqld start&
- 但是如果是让你接手一个二等残废的网站,并让你在上面改版,而且不能推翻式改版,只能逐步替换旧的程序,那么你会非常痛苦,例如我遇到的问题: 问题
- 我就废话不多说了,大家还是直接看代码吧!import requests, jsonr = requests.get('http://
- 跟小组里一自称小方方的卖萌90小青年聊天,IT男的坏习惯,聊着聊着就扯到技术上去了,小方方突然问 1、声明一个数值类型的变量我看到三种,区别
- 1. 使用readline模块逐行读取流数据1.1. 创建Interface对象在readline模块中,通过Interface对象的使用来