python隐藏属性,python怎么隐藏代码
本文主要和大家分享Python中隐藏的五个实用技巧。文中的样例代码讲解的很详细,对我们学习Python有帮助。有兴趣的朋友可以学习一下。
00-1010 1 .对象2。解压迭代对象3。展开的艺术4。下划线_变量5。多用途else循环的异常处理
目录
是的,你说得对,是“.”
在Python中.根据官方说法,代表名为Ellipsis.的对象,这是一个特殊值,通常可以用作空函数的占位符或用于Numpy中的切片操作.
比如:
defmy_awesome_function():
.
相当于:
defmy_awesome_function():
省略
当然,您也可以使用pass或strings作为占位符:
defmy_awesome_function():
及格
defmy_awesome_function():
一个空的,但也很棒的函数
它们的最终效果是一样的。
接下来,我们来谈谈.对象如何在Numpy中表现它们的功能?创建一个3x3x3的矩阵数组,然后获取所有最内层矩阵的第二列:
importnumpyasnp
array=np.arange(27)。整形(3,3,3)
排列
数组([[[0,1,2],
[3,4,5],
[6,7,8]],
[[9,10,11],
[12,13,14],
[15,16,17]],
[[18,19,20],
[21,22,23],
[24,25,26]]])
为了得到最顶层矩阵的第二列,传统的方法可能如下:
数组[:1]
数组([[1,4,7],
[10,13,16],
[19,22,25]])
如果您可以使用.对象,它看起来像这样:
数组[.1]
数组([[1,4,7],
[10,13,16],
[19,22,25]])
但是,请注意.对象只能用于Numpy,不能用于Python内置数组。
1. ... 对象
解压缩迭代对象是一个非常方便的特性:
a,*b,c=range(1,11)
a
一个
c
10
b
[2,3,4,5,6,7,8,9]
或者:
a,b,c=范围(3)
a
0
b
一个
c
2
类似地,不要像这样写代码:
lst=[1]
a=lst[0]
a
一个
(a,)=lst
a
一个
您还可以执行更优雅的赋值操作,比如解压缩迭代对象:
gt;> lst = [1]
>>> [a] = lst
>>> a
1
虽然这看起来有点蠢,但就我个人来看,比前一种写法更优雅一些。
3.展开的艺术
数组展开有各种千奇百怪的姿势,比如说:
>>> l = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]>>> flattened = [elem for sublist in l for elem in sublist]
>>> flattened
[1, 2, 3, 4, 5, 6, 7, 8, 9]
如果你对reduce和lambda有一定了解,建议使用更优雅的方式:
>>> from functools import reduce>>> reduce(lambda x,y: x+y, l)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
reduce和lambda组合起来,就能针对 l 数组内的每个子数组做拼接操作。
当然,还有更神奇的方式:
>>> sum(l, [])[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> # 其实相当于 [] + [1, 2, 3] + [4, 5, 6] + [7, 8, 9]
没错,这样对二维数组做sum操作,就能使二维数组内的每个元素做加法拼接起来。
同样的道理,如果你对三位数组做sum操作,就能使其变为二维数组,此时再对二维数组做sum操作,就能展开为一维数组。
虽然这个技巧很出色,但我并不推荐使用,因为可读性太差了。
4.下划线_变量
每当你在Python解释器,IPython或Django Console中运行表达式时,Python都会将输出的值绑定到 _ 变量中:
>>> nums = [1, 3, 7]>>> sum(nums)
11
>>> _
11
>>>
由于它是一个变量,你可以随时覆盖它,或像普通变量一样操作它:
>>> 9 + _20
>>> a = _
>>> a
20
5.多种用途的else
很多人都不知道,else 可以被用于许多地方,除了典型的 if else, 我们还可以在循环和异常处理里用到它。
循环
如果需要判断循环里是否处理了某个逻辑,通常情况下会这么做:
found = Falsea = 0
while a < 10:
if a == 12:
found = True
a += 1
if not found:
print("a was never found")
如果引入else,我们可以少用一个变量:
a = 0while a < 10:
if a == 12:
break
a += 1
else:
print("a was never found")
异常处理
我们可以在 try ... except ... 中使用 else 编写未捕获到异常时的逻辑:
In [13]: try:...: {}[lala]
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Key is missing
这样,如果程序没有异常,则会走else分支:
In [14]: try:...: {lala: bla}[lala]
...: except KeyError:
...: print("Key is missing")
...: else:
...: print("Else here")
...:
Else here
如果你经常做异常处理,你就会知道这个技巧相当方便。
到此这篇关于Python中隐藏的五种实用技巧分享的文章就介绍到这了,更多相关Python实用技巧内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。