【Python基础知识】eval()、filter()、float()函数使用说明

发布 : python培训      来源:python干货资料

2020-03-27 16:08:17

Python解释器内置了许多函数,这意味着我们无需定义,始终可以它们。下面按照函数的字母顺序,讨论一些常用的内建函数。

eval()

eval()函数解析传给它的表达式,并在程序中运行Python表达式(代码)。举个例子:

  1. >>> x = 1
  2. >>> eval("x + 1") # 注意:"x + 1"是字符串
  3. 2
  4. >>> eval("4 < 9")
  5. True
  6. >>> eval("&#39;py&#39; * 3")
  7. &#39;pypypy&#39;
  8. >>> eval("10 ** 2")
  9. 100

eval()函数不仅仅能运行简单表达式,还能调用函数,使用方法等等:

  1. >>> eval("abs(-11)") # 计算-11的绝对值
  2. 11
  3. >>> eval(&#39;"hello".upper()&#39;) # 把字符串&#39;hello&#39;全变成大写字母
  4. &#39;HELLO&#39;
  5. >>> import os
  6. >>> eval(&#39;os.getcwd()&#39;) # 获取当前的工作目录
  7. &#39;/home/thepythonguru&#39;

但是需要注意的是eval()仅适用于表达式,尝试传递语句会导致语法错误:

  1. >>> eval(&#39;a = 1&#39;) # 赋值语句
  2. Traceback (most recent call last):
  3. File "", line 1, in
  4. File "", line 1
  5. a = 1
  6. ^
  7. SyntaxError: invalid syntax
  8. >>> eval(&#39;import re&#39;) # 导入语句
  9. Traceback (most recent call last):
  10. File "", line 1, in
  11. File "", line 1
  12. import re
  13. ^
  14. SyntaxError: invalid syntax

此外,使用eval()语句应该十分小心,永远不要将不受信任的源直接传递给eval()。 因为恶意用户很容易对您的系统造成破坏。 例如:

  1. >>> eval(input()) # eval()将执行用户输入的代码

用户输入以下代码就能从系统中删除所有文件:

  1. os.system("RM -RF /")
  2. # 上面输入相当于执行:
  3. >>> eval(&#39;os.system("RM -RF /")&#39;)

filter()

"filter"的意思是“过滤”,filter()函数需要两个参数:一个函数对象和一个可迭代对象。函数对象需要返回一个布尔值,并为可迭代的每个元素调用。 filter()函数仅返回那些通过函数对象返回值为true的元素。解释有一些抽象,看一个例子:

  1. >>> a = [1, 2, 3, 4, 5, 6]
  2. >>> filter(lambda x : x % 2 == 0, a) # 过滤出所有偶数,结果返回一个filter对象
  3. 0x1036dc048>
  4. >>> list(filter(lambda x : x % 2 == 0, a)) # 可以使用list()函数使fileter对象变成列表,方便查看结果
  5. [2, 4, 6]

下面是另外一个例子:

  1. >>> dict_a = [{&#39;name&#39;: &#39;python&#39;, &#39;points&#39;: 10}, {&#39;name&#39;: &#39;java&#39;, &#39;points&#39;: 8}]
  2. >>> filter(lambda x : x[&#39;name&#39;] == &#39;python&#39;, dict_a) # 过滤出列表中键&#39;name&#39;为值&#39;python&#39;的字典
  3. 0x1036de128>
  4. >>> tuple(filter(lambda x : x[&#39;name&#39;] == &#39;python&#39;, dict_a)) # 使用tuple()函数使结果变成字典
  5. ({&#39;name&#39;: &#39;python&#39;, &#39;points&#39;: 10},)

float()

float()的参数是一个数字或者字符串,它返回一个浮点数。如果参数是字符串,则字符串中应该包含一个数字,并可以在数字前加入一个 &#39;-&#39; 符号,代表负数。参数也可以是表示NaN(非数字)或正无穷大的字符串。如果没有任何参数的话,将返回0.0。

  1. >>> float(&#39;+1.23&#39;) # 1.23
  2. 1.23
  3. >>> float(&#39; -12345\n&#39;) # -12345
  4. -12345.0
  5. >>> float(&#39;1e-003&#39;) # 0.001
  6. 0.001
  7. >>> float(&#39;+1E6&#39;) # 10的6次幂
  8. 1000000.0
  9. >>> float(&#39;-Infinity&#39;) # 无穷小
  10. -inf
  11. >>> float(&#39;-inf&#39;) + 100 # 负无穷小加100仍等于负无穷小
  12. -inf
  13. >>> float(&#39;inf&#39;) # 无穷大
  14. inf
  15. >>> float(&#39;NaN&#39;) # NaN,代表非数字
  16. nan

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部