现在Python越来越受程序员欢迎了,程序员用Python可以做哪些有趣的事情呢?
下面w3cschool就给小伙伴们介绍一下Python编程的5件趣事:
0.for-else用法
循环正常结束则执行else语句。一般用于循环找符合条件的元素,如果找到则break调出循环,不会触发else;如果没有找到(完整运行循环)则print not found
1.or的用法
python中x or y表示如果x为真就是x的值,否则为y的值
我们会经常看到类似这样的用法(比如函数的一个value参数没有设置默认值,这样使用就允许它不赋值)
1. value = value or {}
2. # 相当于
3. value = value if value else {}
2.and的用法
python中x and y表示如果x是假,结果就是x的值,否则就是y的值
x and y and z多个and连接时,如果全是真结果就是最后一个的值;如果中间有假的值,结果就是第一个假的值
举一个例子
1. def not_empty(a):
2. return a and a.strip()
3. not_empty(' a ')
4. # 值为 'a'
5. not_empty(None)
6. # 不会报错(如果 return a.strip() 就会报错)
7. # 在处理None的问题上相当于
8. def not_empty(a):
9. if a is None:
10. return None
11. else:
12. return a.strip()
细细品味and和or的差别,他们逻辑类似,但是实现的功能是不可以相互替代的
or 是结果如果不满意有个善后工作
and是要做一件事之前先检验一下,不能做就不让它做。
3.单行if-else
1. a = 1
2. b = 3 if a == 1 else 2
3. print('it is one' if a == 1 else 'no')
4.迭代器传入函数中不用加括号
1. # 一般是这样
2. a = (i for i in range(10))
3. sum(a)
4. # 我们可以这样
5. sum((i for i in range(10)))
6. # 但我们还可以这样
7. sum(i for i in range(10))
8. # 类似的有
9. ' '.join(str(i) for i in range(10))
python有趣的解包用法
python中的解包可以这样理解:一个list是一个整体,想把list中每个元素当成一个个个体剥离出来,这个过程就是解包,我们来看下面这些例子。
1.将list中每个元素赋值给一个变量
1. >>> name, age, date = ['Bob', 20, '2018-1-1']
2. >>> name
3. 'Bob'
4. >>> age
5. 20
6. >>> date
7. '2018-1-1'
2.可迭代对象都可以这样做
1. # 列表
2. >>> a,b,c = ['a', 'b', 'c']
3. >>> a
4. 'a'
5. >>> a,b,c = enumerate(['a', 'b', 'c'])
6. >>> a
7. (0, 'a')
8. # 元组
9. >>> a,b,c = ('a', 'b', 'c')
10. >>> a
11. 'a'
12. # 字典
13. >>> a,b,c = {'a':1, 'b':2, 'c':3}
14. >>> a
15. 'a'
16. >>> a,b,c = {'a':1, 'b':2, 'c':3}.items()
17. >>> a
18. ('a', 1)
19. # 字符串
20. >>> a,b,c = 'abc'
21. >>> a
22. 'a'
23. # 生成器
24. >>> a,b,c = (x + 1 for x in range(3))
25. >>> a
26. 1
如果可迭代对象包含的元素和前面待赋值变量数量不一致,则会报错。但是可以通过*来表示多个元素
3.星号的使用
比如我们要计算平均分,去除最高分和最低分,除了用切片,还可以用解包的方式获得中间的数值
1. >>> first, *new, last = [94, 85, 73, 46]
2. >>> new
3. [85, 73]
用*来表示多个数值
你用python做过什么有趣的事情?