前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 实用小技巧(1)

Python 实用小技巧(1)

作者头像
数据STUDIO
发布2021-06-24 10:04:38
3930
发布2021-06-24 10:04:38
举报
文章被收录于专栏:数据STUDIO

1、执行字符串表示的代码

将字符串编译成python能识别或可执行的代码,也可以将文字读成字符串再编译。

代码语言:javascript
复制
>>> s = "print('Life is short. I use Python.')"
>>> r = compile(s,"<string>", "exec")
>>> print(r)
<code object <module> at 0x00000272A9721B70, file "<string>", line 1>
>>> exec(r)
Life is short. I use Python.

compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 将源代码编译成可以由exec()或eval()执行的代码对象。 源代码(source)可以表示``Python`模块、语句或表达式。 文件名(filename)将用于运行时错误消息。 模块(mode)的模式必须是'exec' 用于编译模块;'single'用于编译(交互式)语句,或'eval'来编译表达式。

exec(source, globals=None, locals=None, /) 在全局变量和局部变量上下文中执行给定的源。

代码语言:javascript
复制
>>> s = "input('请输入您的密码:')"
>>> r = compile(s,"<string>", "single")
>>> print(r)
<code object <module> at 0x00000272A97CF6F0, file "<string>", line 1>
>>> exec(r)
请输入您的密码:
代码语言:javascript
复制
>>> s = "input([i for i in range(10)])"
>>> r = compile(s,"<string>", "exec")
>>> print(r)
<code object <module> at 0x00000272A96DED20, file "<string>", line 1>
>>> exec(r)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2、计算字符串表示的表达式

将字符串 str 当成有效的表达式来求值并返回计算结果取出字符串中内容

代码语言:javascript
复制
>>> s = "10 + 40 + 50"
>>> eval(s)
100

evalexec区别: 1、execeval语句的主要区别是,exec把字符串转化成一个python代码执行,而eval从一个表达式里返回值。 2、exec没有返回值,eval有返回值

代码示例:

代码语言:javascript
复制
>>> eval("2+3")
5
>>> exec("a=2+3")
>>> a
5
>>> eval("2+3")
5
>>> exec("print(1)")
1

3、lambda匿名函数

代码语言:javascript
复制
lambda argument_list:expersion

argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的。

代码语言:javascript
复制
a,b
a=1,b=2
*args
**kwargs
a,b=1,*args
None
....

expression是一个关于参数的表达式,表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。

代码语言:javascript
复制
1
None
a+b
sum(a)
1 if a >10 else 0
[i for i in range(10)]
...

用法

(1)直接赋给一个变量,然后再像一般函数那样调用
代码语言:javascript
复制
>>> s = lambda x,y,z: x*y*z
>>> s(1,2,3)
6

也可以在函数后面直接传递实参。

代码语言:javascript
复制
>>> (lambda x: x**2)(3)
9
(2)字符串联合,有默认值,也可以用x=(lambda...)这种格式
代码语言:javascript
复制
>>> s=(lambda x='Aoo',y='Boo',z='Coo': x+y+z)
>>> print(s('Eoo'))
>>> print(s(y='Eoo'))
EooBooCoo
AooEooCoo
(3)将lambda函数作为参数传递给其他函数

比如说结合map、filter、sorted、reduce等一些Python内置函数使用。

4、过滤器

在函数中设定过滤条件,迭代元素,保留返回值为True 的元素:

代码语言:javascript
复制
>>> f = filter(lambda x: x>10,[i for i in range(1,50,3)]
>>> print(f)
<filter at 0x272a971cd08>
>>> list(f)
>>> [11, 45, 13]

filter(function or None, iterable) --> filter object 返回一个迭代器,为那些函数或项为真的可迭代项。如果函数为None,则返回为真的项。

5、map函数

map() 会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

代码语言:javascript
复制
map(function, iterable, ...)

function -- 函数 iterable -- 一个或多个序列

代码语言:javascript
复制
>>> squares = map(lambda x:x**2,range(5))
>>> print(lsit(squares))
[0,1,4,9,16]

-- 数据STUDIO --

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据STUDIO 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、执行字符串表示的代码
  • 2、计算字符串表示的表达式
  • 3、lambda匿名函数
    • 用法
      • (1)直接赋给一个变量,然后再像一般函数那样调用
      • (2)字符串联合,有默认值,也可以用x=(lambda...)这种格式
      • (3)将lambda函数作为参数传递给其他函数
  • 4、过滤器
  • 5、map函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档