网站开发过程中遇到的问题,查看网站的 cms,wordpress目录插件,wordpress网站数据迁移文章目录 前言1.for - else2.一颗星*和两颗星**3.三元表达式4.with - as5.列表推导式6.列表索引的各种骚操作7.lambda函数8.yield 以及生成器和迭代器9.装饰器10.巧用断言assertPython技术资源分享1、Python所有方向的学习路线2、学习软件3、精品书籍4、入门学习视频5、实战案例… 文章目录 前言1.for - else2.一颗星*和两颗星**3.三元表达式4.with - as5.列表推导式6.列表索引的各种骚操作7.lambda函数8.yield 以及生成器和迭代器9.装饰器10.巧用断言assertPython技术资源分享1、Python所有方向的学习路线2、学习软件3、精品书籍4、入门学习视频5、实战案例6、清华编程大佬出品《漫画看学Python》7、Python副业兼职与全职路线 前言
Python 语法的精妙之处就体现在下面10个例子中。 1.for - else for i in [1,2,3,4]:print(i)
else:print(i, 我是else)1
2
3
4
4 我是elseelse 的眼里只有 for只要 for 顺利执行完毕else 就会屁颠儿屁颠儿地跑一遍 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 i2:print(i)break
else:print(i, 我是else)32.一颗星*和两颗星** def multi_sum(*args):s 0for item in args:s itemreturn s multi_sum(3,4,5)
12Python 函数允许同时全部或部分使用固定参数、默认参数、单值一颗星可变参数、键值对两颗星可变参数使用时必须按照前述顺序书写。 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, math99, english90)
姓名xufive年龄50性别男
(175, 75)
{math: 99, english: 90}
3.三元表达式 y 5if y 0:print(y是一个负数)
else:print(y是一个非负数)y是一个非负数其实python 是支持三元表达式的只是稍微怪异了一点类似于我们山东人讲话。比如山东人最喜欢用倒装句打球去吧要是不下雨的话下雨咱就去自习室。翻译成三元表达式就是 打球去吧 if 不下雨 else 去自习室 来看看三元表达式具体的使用 y 5print(y是一个负数 if y 0 else y是一个非负数)
y是一个非负数
python 的三元表达式也可以用来赋值y 5x -1 if y 0 else 1x
14.with - as
with 语句适合一些事先需要准备事后需要处理的任务比如文件操作需要先打开文件操作完成后需要关闭文件。如果不使用with文件操作通常得这样
fp open(rD:\phyger\Column\temp\mpmap.py, r)
try:contents fp.readlines()
finally:fp.close()如果使用 with - as那就优雅多了 with open(rD:\phyger\Column\temp\mpmap.py, r) as fp:contents fp.readlines()5.列表推导式
求列表各元素的平方通常应该这样写当然也有其他写法比如使用map函数 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]
5a[-2]
4a[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] ba
[0, 1, a, b, 2, 3, 4, 5]a[3:6] ba
[0, 1, a, a, b, 4, 5]7.lambda函数
下面是一个求和的匿名函数输入参数有两个x和y函数体就是xy省略了return关键字。 lambda x,y: xy
function lambda at 0x000001B2DE5BD598(lambda x,y: xy)(3,4) # 因为匿名函数没有名字使用的时候要用括号把它包起来匿名函数一般不会单独使用而是配合其他方法为其他方法提供内置的算法或判断条件。比如使用排序函数sorted对多维数组或者字典排序时就可以指定排序规则。 a [{name:B, age:50}, {name:A, age:30}, {name:C, age:40}]sorted(a, keylambda x:x[name]) # 按姓名排序
[{name: A, age: 30}, {name: B, age: 50}, {name: C, age: 40}]sorted(a, keylambda 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 0x000001B2DE434BA8for 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 就可以大显身手了 def get_square(n):for i in range(n):yield(pow(i,2)) a get_square(5)a
generator object get_square at 0x000001B2DE5CACF0for i in a:print(i, end, )0, 1, 4, 9, 16,
如果再次遍历则不会有输出了。
9.装饰器
下面的例子很好地展示了装饰器的优势。 import timedef 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 modulei_want_to_sleep(2)File pyshell#244, line 2, in i_want_to_sleepassert(isinstance(delay, (int,float))), 函数参数必须为整数或浮点数
AssertionError: 函数参数必须为整数或浮点数
【最新Python全套从入门到精通学习资源文末免费领取】
Python技术资源分享
如果你对Python感兴趣学好 Python 不论是就业、副业赚钱、还是提升学习、工作效率都是非常不错的选择但要有一个系统的学习规划。
小编是一名Python开发工程师自己整理了一套 【最新的Python系统学习教程】包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。
如果你是准备学习Python或者正在学习下面这些你应该能用得上
1、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理形成各个领域的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。 2、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了给大家节省了很多时间。 3、精品书籍
书籍的好处就在于权威和体系健全刚开始学习的时候你可以只看视频或者听某个人讲课但等你学完之后你觉得你掌握了这时候建议还是得去看一下书籍看权威技术书籍也是每个程序员必经之路。 4、入门学习视频
我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。 5、实战案例
光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。 6、清华编程大佬出品《漫画看学Python》
用通俗易懂的漫画来教你学习Python让你更容易记住并且不会枯燥乏味。 7、Python副业兼职与全职路线 这份完整版的Python全套学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】 CSDN大礼包《Python入门资料实战源码安装工具】免费领取安全链接放心点击