python有哪些好玩的语法糖,Python 有哪些好玩的语法糖

2020-11-25 16:23:15 字数 6461 阅读 5764

1楼:匿名用户

装饰器就是一个很有用的语法糖啊

2楼:匿名用户

1 无输入参数

2 不能显式return

3 **块中def定义的函数并不作为这个“假”函数的闭包!

3楼:匿名用户

keep looking. don't settle.

python 有哪些好玩的语法糖

4楼:天天不看

当然是函数式那一套黑魔法啦,且听我细细道来。

lambda表达式

也就是匿名函数。

用法:lambda 参数列表 : 返回值

例:+1函数

f=lambda x:x+1

max函数(条件语句的写法如下)

f_max=lambda x,y:x if x>y else y

上述定义的函数与用def定义的函数没有区别,而且左边的f=在某些情况下并不是必要的。

filter,map,reduce

filter函数接受两个参数,第一个是过滤函数,第二个是可遍历的对象,用于选择出所有满足过滤条件的元素,不同版本的filter的返回值稍有区别,我用的是python3.5,filter返回的是经过过滤的可遍历对象。

例:去除小写字母

s=filter(lambda x:not str(x).islower(),"asdasfasfbsdfc")

for ch in s:

print(ch)

map函数接受的参数类型与filter类似,它用于把函数作用于可遍历对象的每一个元素。类似于数学中映射的概念。

例:求y=2x+1(偷偷用了一下range函数生成定义域)

s=map(lambda x:2*x+1,range(6))

for x in s:

print(x)

reduce函数对每个元素作累计操作,它接受的第一个参数必须是有两个参数的函数。

例:求和

from functools import reduce

s=reduce(lambda x,y:x+y,range(1,6))

print(s)

求乘积(第三个可选参数表示累计变量的初值)

from functools import reduce

s=reduce(lambda x,y:x*y,range(1,6),1)

print(s)

柯里化(curry)函数

如果一个函数需要2个参数,而你只传入一个参数,那么你就可以得到一个柯里化的函数,这是函数式编程语言的重要特性之一,遗憾的是,python并不能在语法层面支持柯里化调用,但它在库中提供了接口。

例:*3函数

f_mul=lambda x,y:x*y

from functools import partial

mul3=partial(f_mul,3)

print(mul3(1))

print(mul3(6))

打包与解包

有点类似于函数式中的模式匹配,略牵强。

t=(1,2,3)

x,y,z=t

列表生成式

这个也有点牵强,不知道严格意义上讲属不属于函数式风格。

例:生成奇数序列

l=[2*x+1 for x in range(10)]

for i in l:

print(i)

最后来一个彩蛋(以前某答主提到的用调分函数来美颜的算法,忘了出处了,侵删)

from pil import image

from math import sqrt

im = image.open("a.jpg")

ret= im.convert(mode="rgb")

ret = ret.point(lambda x:sqrt(x)*sqrt(255))

ret.save("b.jpg")

python中几个有趣的语法糖

5楼:匿名用户

当然是函数式那一套黑魔法啦,且听我细细道来。 lambda表达式也就是匿名函数。用法:

lambda 参数列表 : 返回值例: +1函数 f=lambda x:

x+1 max函数(条件语句的写法如下) f_max=lambda x,y:x if x>y else y 上述定义的函数与用def定义的函数没有区别,而且左边的f=在某些情况下并不是必要的。 filter,map,reduce filter函数接受两个参数,第一个是过滤函数,第二个是可遍历的对象,用于选择出所有满足过滤条件的元素,不同版本的filter的返回值稍有区别,我用的是python3.

5,filter返回的是经过过滤的可遍历对象。例:去除小写字母 s=filter(lambda x:

not str(x).islower(),"asdasfasfbsdfc") for ch in s: print(ch) map函数接受的参数类型与filter类似,它用于把函数作用于可遍历对象的每一个元素。

类似于数学中映射的概念。例:求y=2x+1(偷偷用了一下range函数生成定义域) s=map(lambda x:

2*x+1,range(6)) for x in s: print(x) reduce函数对每个元素作累计操作,它接受的第一个参数必须是有两个参数的函数。例:

求和 from functools import reduce s=reduce(lambda x,y:x+y,range(1,6)) print(s) 求乘积(第三个可选参数表示累计变量的初值) from functools import reduce s=reduce(lambda x,y:x*y,range(1,6),1) print(s) 柯里化(curry)函数如果一个函数需要2个参数,而你只传入一个参数,那么你就可以得到一个柯里化的函数,这是函数式编程语言的重要特性之一,遗憾的是,python并不能在语法层面支持柯里化调用,但它在库中提供了接口。

例: *3函数 f_mul=lambda x,y:x*y from functools import partial mul3=partial(f_mul,3) print(mul3(1)) print(mul3(6)) 打包与解包有点类似于函数式中的模式匹配,略牵强。

t=(1,2,3) x,y,z=t 列表生成式这个也有点牵强,不知道严格意义上讲属不属于函数式风格。例:生成奇数序列 l=[2*x+1 for x in range(10)] for i in l:

print(i) 最后来一个彩蛋(以前某答主提到的用调分函数来美颜的算法,忘了出处了,侵删) from pil import image from math import sqrt im = image.open("a.jpg") ret= im.

convert(mode="rgb") ret = ret.point(lambda x:sqrt(x)*sqrt(255)) ret.

save("b.jpg")

关于 python 的语法糖 30

6楼:匿名用户

with的用法:

classa:

def__enter__(self):

print'inenter'

def__exit__(self,e_t,e_v,t_b):

print'inexit'

witha()asa:

print'inwith'

运行输出:

in enter

in with

in exit

也就是说在print 'in with'前自动执行了a()构造的实例的__enter__方法

with块中的程序执行完后,自动执行了a()构造的实例的__exit__方法

这里as a可以省略,因为with块中没有用到a

直接翻译的话就是

context.__enter__()

print(url_for('index'))

context.__exit__(参数1,参数2,参数3)

这里可以理解为 为print(url_for('index'))创造一个环境,执行完后清理环境

什么是语法糖?

7楼:匿名用户

语法糖(syntactic sugar)

也译为糖衣语法

是由英国计算机科学家彼得·约翰·兰达(peter j. landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。

通常来说使用语法糖能够增加程序的可读性,从而减少程序**出错的机会。

举个例子:

在c语言里用a[i]表示*(a+i),用a[i][j]表示*(*(a+i*数组a第二维的长度)+j),由此可见语法糖不是“现代语言”独有,这种写法简洁明了,容易被人理解。

8楼:七颜

就是把库做到语言的程度

python 有什么缺点

9楼:匿名用户

这种东西的缺点不在本身.而在于使用环境

我们都进入视窗时代n年了,平时点点鼠标就能操作,简单明了.而用python这类东西以及用python做出来的很多东西,你会发现大量的使用命令行,这是反智的!

你在使用这些东西的时候会发现,很多东西都需要自己配置环境,相当的浪费时间.

10楼:匿名用户

python的整个系统,我其实有非常多的不满。但是用任何一门语

11楼:匿名用户

1、python即便有一千个不好,但有高效率编程一个优点就足够了。性能确实不如c,也不如java,但当年java做web开发也是从性能差的servlet开始的,而且还没那么多配套的三方库。

2、python的跨平台移植也不是什么问题。首先目前的跨平台几乎只剩下windows和linux了,都是基于c语言的,移植有多大困难?如果说python的版本差异太大,上下兼容性,那就用docker或者env来解决,也不是什么太大问题。

3、底层基于高性能的c来实现,上层则提供高效率的python编程,其实是对程序员很大的福利了。开发同样一个业务逻辑,python比java简单太多太多。

12楼:匿名用户

最大缺点 就是 运行速度比较慢

13楼:黑马程序员**

优点

python的定位是“优雅”、“明确”、“简单”,所以python程序看上去总是简单易懂,初学者学python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

高级语言————当你用python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节

可移植性————由于它的开源本质,python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有python程序无需修改就几乎可以在市场上所有的系统平台上运行

可扩展性————如果你需要你的一段关键**运行得更快或者希望某些算法不公开,你可以把你的部分程序用c或c++编写,然后在你的python程序中使用它们。

可嵌入性————你可以把python嵌入你的c/c++程序,从而向你的程序用户提供脚本功能。

缺点:

速度慢,python 的运行速度相比c语言确实慢很多,跟java相比也要慢一些,因此这也是很多所谓的大牛不屑于使用python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用c运一个程序花了0.1s,用python是0.01s,这样c语言直接比python快了10s,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.

15-0.4s左右,哈哈。其实在大多数情况下python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用c去实现的。

**不能加密,因为python是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源**必须是加密的,那你一开始就不应该用python来去实现。

线程不能利用多cpu问题,这是python被人诟病最多的一个缺点,gil即全局解释器锁(global interpreter lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,python的线程是操作系统的原生线程。在linux上为pthread,在windows上为win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。

即使在多核cpu平台上,由于gil的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细**。

2019年python入门到精通(19天全)

配套资料:https://pan.baidu.***/s/1uzxlixhkrppccqf2vgyoha 提取码:ueva

临沂有哪些好玩的景点,临沂好玩的景点有哪些?

1楼 du知道君 1 临沂盛能游乐园 2 临沂动植物园 3 王羲之故居 4 银雀山汉墓竹简博物馆 5 临沂博物馆 6 沂蒙湖 橡胶坝 7 沂水地下萤光湖 8 莒南天佛风景名胜区 9 115师师部旧址 省 诞生地 10 孟良崮战役遗址景区 11 蒙山平邑龟蒙景区 12 莒南马鬐山景区 13 费县石林梨...

广州有什么公园好玩的,广州有哪些公园好玩

1楼 一点欧尼是女神 白云山 越秀公园 流花湖 荔湾湖,看风景为主 文化公园主要就是行街去公园直落。长隆比较好玩。 2楼 匿名用户 白云山 越秀公园等都挺不错的。 3楼 公园有什么好玩的,如果说白云山公园算公园的话,也可以试试。 4楼 匿名用户 越秀公园不错啊,去的人也蛮多的 广州有哪些公园好玩 5...

汉语中的语法手段具体有哪些,汉语中常用的四种语法手段

1楼 知为力 语法手段是表达语法意义的形式标志或物质手段的类型,是从语法形式中概括出来的。常见的语法手段有 1 选词 进入结构的词首先要在语法的词类中选择。如 读书 之所以是述宾结构,是从 读 和 书 的词类确定的。 2 词序 例如汉语主语在前,谓语在后 日语的宾语在后,主语在前。 3 虚词 例如联...