1.for - else

十大装B语法,for-else 绝对算得上囊波湾!不信,请看:

>>> for i in [1,2,3,4]:print(i)
else:print(i, '我是else')1
2
3
4
4 我是else

else 的眼里只有 for,只要 for 顺利执行完毕,else 就会屁颠儿屁颠儿地跑一遍:

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> for i in [1,2,3,4]:if i > 2:print(i)
else:print(i, '我是else')3
4
4 我是else

只有当 for 循环被 break 语句中断之后,才会跳过 else 语句:

>>> for i in [1,2,3,4]:if i>2:print(i)break
else:print(i, '我是else')3

2.一颗星*和两颗星**

>>> def multi_sum(*args):s = 0for item in args:s += itemreturn s>>> multi_sum(3,4,5)
12

Python 函数允许同时全部或部分使用固定参数、默认参数、单值(一颗星)可变参数、键值对(两颗星)可变参数,使用时必须按照前述顺序书写。

>>> def do_something(name, age, gender='男', *args, **kwds):print('姓名:%s,年龄:%d,性别:%s'%(name, age, gender))print(args)print(kwds)>>> do_something('xufive', 50, '男', 175, 75, math=99, english=90)姓名:xufive,年龄:50,性别:男
(175, 75)
{'math': 99, 'english': 90}

3.三元表达式

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> y = 5
>>> if y < 0:print('y是一个负数')
else:print('y是一个非负数')

y是一个非负数

其实,python 是支持三元表达式的,只是稍微怪异了一点,类似于我们山东人讲话。比如,山东人最喜欢用倒装句:打球去吧,要是不下雨的话;下雨,咱就去自习室。翻译成三元表达式就是:
打球去吧 if 不下雨 else 去自习室
来看看三元表达式具体的使用:

>>> y = 5
>>> print('y是一个负数' if y < 0 else 'y是一个非负数')
y是一个非负数
python 的三元表达式也可以用来赋值:
>>> y = 5
>>> x = -1 if y < 0 else 1
>>> x
1

4.with - as

with 语句适合一些事先需要准备,事后需要处理的任务,比如,文件操作,需要先打开文件,操作完成后需要关闭文件。如果不使用with,文件操作通常得这样:

fp = open(r"D:\phyger\Column\temp\mpmap.py", 'r')
try:contents = fp.readlines()
finally:fp.close()

如果使用 with - as,那就优雅多了:

>>> with open(r"D:\phyger\Column\temp\mpmap.py", 'r') as fp:contents = fp.readlines()

5.列表推导式

求列表各元素的平方,通常应该这样写(当然也有其他写法,比如使用map函数):

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> a = [1, 2, 3, 4, 5]
>>> result = list()
>>> for i in a:result.append(i*i)>>> result
[1, 4, 9, 16, 25]

如果使用列表推导式,看起来就舒服多了:

>>> a = [1, 2, 3, 4, 5]
>>> result = [i*i for i in a]
>>> result
[1, 4, 9, 16, 25]

事实上,推导式不仅支持列表,也支持字典、集合、元组等对象。

6.列表索引的各种骚操作

>>> a = [0, 1, 2, 3, 4, 5]
>>> a[2:4]
[2, 3]
>>> a[3:]
[3, 4, 5]
>>> a[1:]
[1, 2, 3, 4, 5]
>>> a[:]
[0, 1, 2, 3, 4, 5]
>>> a[::2]
[0, 2, 4]
>>> a[1::2]
[1, 3, 5]
>>> a[-1]
5
>>> a[-2]
4
>>> a[1:-1]
[1, 2, 3, 4]
>>> a[::-1]
[5, 4, 3, 2, 1, 0]

如果说,这些你都很熟悉,也经常用,那么接下来这个用法,你一定会感觉很神奇:

>>> a = [0, 1, 2, 3, 4, 5]
>>> b = ['a', 'b']
>>> a[2:2] = b
>>> a
[0, 1, 'a', 'b', 2, 3, 4, 5]
>>> a[3:6] = b
>>> a
[0, 1, 'a', 'a', 'b', 4, 5]

7.lambda函数

下面是一个求和的匿名函数,输入参数有两个,x和y,函数体就是x+y,省略了return关键字。

>>> lambda x,y: x+y
<function <lambda> at 0x000001B2DE5BD598>
>>> (lambda x,y: x+y)(3,4) # 因为匿名函数没有名字,使用的时候要用括号把它包起来

匿名函数一般不会单独使用,而是配合其他方法,为其他方法提供内置的算法或判断条件。比如,使用排序函数sorted对多维数组或者字典排序时,就可以指定排序规则。

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> a = [{'name':'B', 'age':50}, {'name':'A', 'age':30}, {'name':'C', 'age':40}]
>>> sorted(a, key=lambda x:x['name']) # 按姓名排序
[{'name': 'A', 'age': 30}, {'name': 'B', 'age': 50}, {'name': 'C', 'age': 40}]
>>> sorted(a, key=lambda x:x['age']) # 按年龄排序
[{'name': 'A', 'age': 30}, {'name': 'C', 'age': 40}, {'name': 'B', 'age': 50}]

再举一个数组元素求平方的例子,这次用map函数:

>>> a = [1,2,3]
>>> for item in map(lambda x:x*x, a):print(item, end=', ')1, 4, 9,

8.yield 以及生成器和迭代器

pyrhon内置了迭代函数 iter,用于生成迭代器,用法如下:

>>> a = [1,2,3]
>>> a_iter = iter(a)
>>> a_iter
<list_iterator object at 0x000001B2DE434BA8>
>>> for i in a_iter:print(i, end=', ')1, 2, 3,

yield 则是用于构造生成器的。比如,我们要写一个函数,返回从0到某正整数的所有整数的平方,传统的代码写法是这样的:

>>> def get_square(n):result = list()for i in range(n):result.append(pow(i,2))return result>>> print(get_square(5))
[0, 1, 4, 9, 16]

但是如果计算1亿以内的所有整数的平方,这个函数的内存开销会非常大,这是 yield 就可以大显身手了:

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> def get_square(n):for i in range(n):yield(pow(i,2))>>> a = get_square(5)
>>> a
<generator object get_square at 0x000001B2DE5CACF0>
>>> for i in a:print(i, end=', ')0, 1, 4, 9, 16,

如果再次遍历,则不会有输出了。

9.装饰器

下面的例子,很好地展示了装饰器的优势。

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> import time
>>> def timer(func):def wrapper(*args,**kwds):t0 = time.time()func(*args,**kwds)t1 = time.time()print('耗时%0.3f'%(t1-t0,))return wrapper>>> @timer
def do_something(delay):print('函数do_something开始')time.sleep(delay)print('函数do_something结束')>>> do_something(3)
函数do_something开始
函数do_something结束
耗时3.077

timer() 是我们定义的装饰器函数,使用@把它附加在任何一个函数(比如do_something)定义之前,就等于把新定义的函数,当成了装饰器函数的输入参数。运行 do_something() 函数,可以理解为执行了timer(do_something) 。

10.巧用断言assert

所谓断言,就是声明表达式的布尔值必须为真的判定,否则将触发 AssertionError 异常。

>>> def i_want_to_sleep(delay):assert(isinstance(delay, (int,float))), '函数参数必须为整数或浮点数'print('开始睡觉')time.sleep(delay)print('睡醒了')>>> i_want_to_sleep(1.1)
开始睡觉
睡醒了
>>> i_want_to_sleep(2)
开始睡觉
睡醒了
>>> i_want_to_sleep('2')
Traceback (most recent call last):File "<pyshell#247>", line 1, in <module>i_want_to_sleep('2')File "<pyshell#244>", line 2, in i_want_to_sleepassert(isinstance(delay, (int,float))), '函数参数必须为整数或浮点数'
AssertionError: 函数参数必须为整数或浮点数

学Python一定要知道的十段经典代码相关推荐

  1. Python十段经典代码

    Python 语法的精妙之处就体现在下面10个例子中. 1.for - else >>> for i in [1,2,3,4]:print(i) else:print(i, '我是e ...

  2. 学python有前途吗-三十岁了,从零开始学python还有前途吗?

    个人觉得. 互联网行业寒冬以至,当前好多大公司裁员缩招,一些上市公司,上市当天跌破发行价. 但是,受到威胁的都是一些低端人才,寒冬过去,春天就会到来.人工智能的时代刚刚崛起.会有大批量的人才需求,而学 ...

  3. 程序员学Python编程或许不知的十大提升工具

    与其他大多数编程语言一样,Python拥有强大的第三方支持,它们提供了各种各样的工具.这些工具在创建应用程序的过程中能够大大增强Python的功能.调试器是一种工具,因为它是一种实用程序,而库不是,库 ...

  4. python开发视频播放器_python_十几行代码实现简单播放器

    python20行代码实现简单播放器 播放器简介 播放器大家都并不陌生,我们听音乐,我们看视频都会用到.那么播放器实现的功能到底有哪些呢?一个播放器一般来讲都完成了如下步骤: 读取文件(包括音频文件和 ...

  5. 《从零开始学Python网络爬虫》罗攀 蒋仟 代码

    第1章 Python零基础语法入门 1.3 函数与控制语句 1.3.1 函数 1.3.2 判断语句 1.3.3 循环语句 1.4 Python数据结构 1.4.1 列表 1.4.2 字典 1.4.3 ...

  6. 三十岁了学python还可以吗-三十岁了还可以学编程吗?只要你想,只要你做,什么时候都不晚...

    文章有点长,希望你可以看完.如果能给迷茫的朋友一点勇气,我不胜荣幸. 做一件事最好的时间是十年前,其次是现在. 如果想学编程却苦于不知道从何开始,也没有系统的学习路径,那就来加入我们一起学习 在这里不 ...

  7. 三十多岁学python来得及吗_三十岁宅男自学Python,以前没有编程经验|后院活动部...

    原标题:三十岁宅男自学Python,以前没有编程经验|后院活动部 小咖是一个三十岁的有志青年,自从几个月前开始在网上自学Python,在没有任何编程经验下进步神速. "第一周我平均每天看一章 ...

  8. opencv python是什么_Python+OpenCV 十几行代码模仿世界名画

    现在很多人都喜欢拍照(自拍).有限的滤镜和装饰玩多了也会腻,所以就有 APP 提供了模仿名画风格的功能,比如 prisma.versa 等,可以把你的照片变成梵高.毕加索.蒙克等大师的风格. 这种功能 ...

  9. Javascript中最常用的61段经典代码

    1. οncοntextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <table border οncοntextmenu ...

最新文章

  1. salt常用命令(一)
  2. 【js与jquery】三级联动菜单的制作
  3. Nginx基本数据结构之ngx_hash_keys_arrays_t
  4. 传热学环肋肋效率matlab程序,传热学 第二章第四节 通过肋片的导热.pdf
  5. 测试环境服务器硬盘塞满问题排查
  6. 小程序 - swiper除了左右切换还有上下滚动超出屏幕的内容
  7. 一张图带你了解Android5.0中的colorPrimary、colorPrimaryDark、colorAccent
  8. NOX的使用之学习篇【三】
  9. 操作系统中的fork()函数对应的进程创建过程
  10. word文字覆盖问题
  11. 【NOIP 模拟赛】Evensgn 剪树枝 树形dp
  12. mongoDB在centos7上的安装
  13. 爬虫IP代理-设置ADSl拨号服务器代理
  14. Linux系统如何测试无线网卡的信号强度,如何用wifi-linux检测AP信号强度
  15. 中国农业大学计算机专业硕士研究生,中国农业大学计算机专业2020考研复试分数线...
  16. Java压缩文件/文件夹
  17. 浏览器 本地html 图片不显示,网页不显示图片怎么解决?
  18. python可以做ui吗_python做ui
  19. 笔记本ghostwin10系统后只有C盘了别的盘的数据怎样找到
  20. 数字化应用:银行客户KYC

热门文章

  1. 人工智能等新技术将加速物联网的普及
  2. elk6.2集群搭建,cerebro集群管理
  3. 《Haskell趣学指南》—— 第2章,第2.3节类型变量
  4. 基于订阅的服务通讯架构体系
  5. 开源 java CMS - FreeCMS2.3会员个人资料
  6. 用master-worker模型比对团队管理
  7. [代码]ural 1655 Somali Pirates
  8. python开发小型数据库_python数据库编程小应用
  9. 【MM配置】Purchasing 采购配置
  10. 【PP生产订单】收货Goods Receipt