5.装饰器
装饰器是Python非常非常非常重要的知识点,这里只做应用举例,以后我会出一期详细的讲解装饰器
设想一个场景,公司有好多的部门(函数)在同时运作,现在要求你在不改变运行代码的条件下,给每个部门新加一个功能
源代码:
‘’’
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
def partA():
print(“----do A job----”)
def partB():
print(“----do B job----”)
def partC():
print(“----do C job----”)
if name == ‘main’:
partA()
partB()
partC()
out:
----do A job----
----do B job----
----do C job----
传统方法:
def partA():
print(“----do A job----”)
print(“do extra job”)
def partB():
print(“----do B job----”)
print(“do extra job”)
def partC():
print(“----do C job----”)
print(“do extra job”)
if name == ‘main’:
partA()
partB()
partC()
out:
----do A job----
do extra job
----do B job----
do extra job
----do C job----
do extra job
pythonic:
‘’’
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
def doExtraJob(func):
def wrap():
func()
print(“do extra job”)
return wrap
@doExtraJob
def partA():
print(“----do A job----”)
@doExtraJob
def partB():
print(“----do B job----”)
@doExtraJob
def partC():
print(“----do C job----”)
if name == ‘main’:
partA()
partB()
partC()
out:
----do A job----
do extra job
----do B job----
do extra job
----do C job----
do extra job
对比两种方法,使用装饰器的效果就是可以让一个函数再不改变内部代码的情况下增加新的功能.
6.神奇的else语句
大部分人只知道else语句和if语句一起使用,但是你们知道吗else语句也可以和for语句,while语句,try语句一起使用
设想一个场景,你在对一个内部数据未知的列表进行循环时(不论是for还是while),你设置了一个遇到偶数就break的语句,倘若数组里不含偶数就输出奇数列表字样.
传统方法:
‘’’
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
aList = [1, 3, 5, 7, 9]
flag = True
for i in aList:
if i % 2 == 0:
flag = False
break
if flag:
print(“奇数列表”)
pythonic:
aList = [1, 3, 5, 7, 9]
for i in aList:
if i % 2 == 0:
break
else:
print(“奇数列表”)
注意,循环中(for或while)的else语句会在循环正常退出时(即不是由于break语句退出时)触发
对与try,else语句,else语句会在没有异常时被触发,也许你们会有疑问,没有异常直接在try语句里不是解决了吗,但是try语句里的操作会被捕获,有些时候我们并不想这样.
看个例子:
‘’’
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
try:
assert True
except:
print(“出错了”)
else:
print(“没有错”)
out:
没有错
assert为断言当其后面的语句为假是会报出异常,这和try语句一起使用有时候会非常的方便.
7.map函数
map函数会将一个函数映射到一个列表的所有元素上去.这和lambda表达式配合简直完美.
设想一个场景,一个列表里有1-10十个数,现要求你将这个列表里的每一个数的平方存入另一个列表,这并不难
传统方法:
aList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
bList = []
for i in aList:
bList.append(i**2)
pythonic:
aList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
bList = list(map(lambda x:x**2, aList))
千万注意map函数返回的不是列表是个map对象,需要类型转换
8.filter函数
没错从函数的名字就可以看出filter函数的功能是过滤,filter可以过滤一个列表的元素并返回所有符合要求的元素组成的filter对象,和map类似注意类型转换.
设想一个场景,有一个列表,里面存放着一些未知的数字,现在要求你把所有的偶数挑选出来,
传统方法:
‘’’
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
‘’’
aList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
bList = []
for each in aList:
if each % 2 == 0:
bList.append(each)
pythonic:
aList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
bList = list(filter(lambda x: not x % 2, aList))
这里使用not是因为偶数除2的余数为0(Python中0为False),为了让偶数时返回True,用来一个not
9.reduce函数
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。
_convert/9f49b566129f47b8a67243c1008edf79.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)
[外链图片转存中…(img-QXPHZepk-1711788637837)]
最后
🍅 硬核资料:关注即可领取PPT模板、简历模板、行业经典书籍PDF。
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由技术群里的小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、Python、前端等等。