Python中的eval()、filter()、float()函数有什么用?

发布网友 发布时间:2022-03-29 10:56

我来回答

1个回答

热心网友 时间:2022-03-29 12:25

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

eval()

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

    >>> x = 1 

    >>> eval("x + 1")  # 注意:"x + 1"是字符串 

    >>> eval("4 < 9") 

    True 

    >>> eval("'py' * 3") 

    'pypypy' 

    >>> eval("10 ** 2") 

    100 

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

    >>> eval("abs(-11)")        # 计算-11的绝对值 

    11 

    >>> eval('"hello".upper()')   # 把字符串'hello'全变成大写字母 

    'HELLO' 

    >>> import os                 

    >>> eval('os.getcwd()')       # 获取当前的工作目录 

    '/home/thepythonguru' 

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

    >>> eval('a = 1')                    # 赋值语句 

    Traceback (most recent call last): 

    File "", line 1, in  

    File "", line 1 

    a = 1 

    SyntaxError: invalid syntax 

    >>> eval('import re')             # 导入语句 

    Traceback (most recent call last): 

    File "", line 1, in  

    File "", line 1 

    import re 

    SyntaxError: invalid syntax 

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

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

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

    os.system("RM -RF /") 

    # 上面输入相当于执行: 

    >>> eval('os.system("RM -RF /")')    

    filter()

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

    >>> a = [1, 2, 3, 4, 5, 6] 

    >>> filter(lambda x : x % 2 == 0, a)        # 过滤出所有偶数,结果返回一个filter对象 

    <filter object at 0x1036dc048> 

    >>> list(filter(lambda x : x % 2 == 0, a))  # 可以使用list()函数使fileter对象变成列表,方便查看结果 

    [2, 4, 6] 

    下面是另外一个例子:

    >>> dict_a = [{'name': 'python', 'points': 10}, {'name': 'java', 'points': 8}] 

    >>> filter(lambda x : x['name'] == 'python', dict_a)  # 过滤出列表中键'name'为值'python'的字典 

    <filter object at 0x1036de128> 

    >>> tuple(filter(lambda x : x['name'] == 'python', dict_a))  # 使用tuple()函数使结果变成字典 

    ({'name': 'python', 'points': 10},) 

    float()

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

    >>> float('+1.23')         # 1.23 

    1.23 

    >>> float('   -12345\n')   # -12345 

    -12345.0 

    >>> float('1e-003')        # 0.001 

    0.001 

    >>> float('+1E6')          # 10的6次幂 

    1000000.0 

    >>> float('-Infinity')     # 无穷小 

    -inf 

    >>> float('-inf') + 100     # 负无穷小加100仍等于负无穷小 

    -inf 

    >>> float('inf')           # 无穷大 

    inf 

    >>> float('NaN')           # NaN,代表非数字  

    nan 

关于Python的基础问题可以看下这个网页的视频教程,网页链接,。

声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com