初学者应该知道4个隐藏的Python特性

来源:

https://towardsdatascience.com/4-hidden-python-features-that-beginners-should-know-ec9de65ff9f8

翻译:小马

学习是没有止境的,你永远也学不完所有的Python编程知识。在学习过程中会不断地发现Python中有用的新特性,并且可能被需要学习的新特性吓到。

没有一本书或一个网站能够包含Python的所有内容,甚至官方文件也做不到,Python有无限的可能性。

我多年来一直在用Python编写代码,并且发现了一些有趣且独特的Python特性,其他编程语言找不到这类的特性,下面是Python初学者可能会发现的4个隐藏的Python特性。

1. For-else循环

常见的Python条件语句有:while循环,for循环,if-else语句。

那么 for-else语句呢?首先看下面的代码和对应的结果:

def test(nums):
    for i in nums:
        if i == 0: # if the condition is satisfied, it hits break and the else block will not run
            print('There is a 0.')
            break
    else:
        print('There are no 0s.')
       

test([1,2,3,0])
test([1,2,3])

#>
There is a 0.
There are no 0s.

else块中的代码只有在for循环结束了且没有遇到break语句时才会运行。

这样做的目的是什么?假设用户有3次机会输入正确的密码,只有输入正确的密码,break语句才会激活;若连续3次输入错误的密码,那么会执行else块的语句,给出输入错误密码的结果,如锁定用户不能够使用该系统。

2. 比较运算符

如果你需要检查a中的值是否在0和100的范围内,一般的编码方式是首先进行两次的比较,并使用and操作符将它们组合起来,如 0 <= a and a<=100,这是很容易实现的。

若以一种更易于阅读和直观的方式来编写它们:0 <= a <= 100,Python解释器会将它们分开并读取比较操作,含义与 0<=a and a <= 100一致,如下代码:

a = 25
0 <= a <= 100      
0 <= a and a <= 100 

#>
True
True

3. 扩展切片(Extended Slices)

我们可以使用语法 a[start:stop:step]分割列表a,这3个参数都是可选的。分割列表是从start开始,stop结束的部分序列,step为索引增加的步长,且步长可以是整数或负数。

a = list(range(10))
print(a[::2])
print(a[3::-1])

#>
[0, 2, 4, 6, 8]
[3, 2, 1, 0]

若设置a[::-1],相当于start,stop都为默认值,step=-1表示对列表进行翻转。

若设置a[::],相当于start,stop,step都为默认值,输出完整列表。

4. 值交换

如何在Python中交换两个对象的值?就像在其他语言所作的那样(例如C语言),只需创建一个临时对象,如下代码:

# Standard way to swap values of two objects in other languages
temp = a
a = b
b = temp

但这种编写方法可读性较差,且远非优雅。实际上,你可以使用Python中的一行代码就能轻松的交换这些值。

# Standard Python way to swap values
b, a = a, b

为什么可以这样编写?解释器首先计算右边的值并在内存中创建一个元组(a,b),然后计算左侧,将tuple中的两个元素打开并分别赋值给b和a,实际上交换了分类给a和b的对象。

欢迎扫码关注:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值