美文网首页
python内置函数

python内置函数

作者: lalalasa | 来源:发表于2020-12-21 21:29 被阅读0次

    eval()

    eval(expression, globals=None, locals=None)

    • expresiion string
    • globals optional,dict
    • locals optional, a mapping object
    • 需注意:

      • 在mac或者Linux这类系统上运行
      • import os
      • 这时候要小心eval接收的expression修改或者删除本地文件,可以用globals和locals限制函数和参数的实用
    • 同时不使用globals和locals
      eval(expression)

      >>> eval("1+2")
      3
      
    • 仅使用globals
      eval(expression, globals)

      • globals为空字典

        >>> from math import *
        >>> print(eval('dir()', {}))
        ['__builtins__']
        # failed
        >>> print(eval('sqrt(25)', {}))
        Traceback (most recent call last):
          File "<stdin>", line 1, in <module>
          File "<string>", line 1, in <module>
        NameError: name 'sqrt' is not defined
        # success
        >>> print(eval('__builtins__', {}))
        

        这个时候只有__builtins__是可用的

      • globals为非空字典

        >>> from math import *
        >>> print(eval('dir()', {'square_root': sqrt, 'power': pow}))
        ['__builtins__', 'power', 'square_root']
        >>> print(eval('square_root(9)', names))
        3.0
        

        在globals中指定除了__builtins__外可用的函数,也可以重命名函数,如'square_root': sqrt将sqrt()重命名为square_root(),这时候如果输入print(eval('sqrt(9)', names))则会报错,因为不存在这个名字的函数

      • 同时使用globals和locals

        >>> from math import *
        >>> a = 169
        >>> print(eval('sqrt(a)', {'__builtins__': None}, {'a': a, 'sqrt': sqrt}))
        13.0
        

        globals= {'__builtins__': None}表示__builtins__不可用
        在该例子中,仅a参数和sqrt函数可用

    max()

    max(arg1, arg2, *args[, key])

    • 传入多个值,返回最大的一个
      >>> max(2,6,8)
      8
      

    max(iterable, *[, key, default])

    • 传入可迭代对象,key指定排序函数用的参数

      # demo 1
      >>> d = {"a": 3, "b": 2, "c": 1, "d": 1}
      >>> max(d.keys(), key=d.get)
      "a"
      
      # demo 2
      >>> max([1,2,3,4])
      4 
      
    • default定义了当可迭代对象为空时的返回值

      >>> max([],default=2)
      2
      
    • 若可迭代对象为空,且没有定义default,则会抛出ValueError

      >>> max([])
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      ValueError: max() arg is an empty sequence
      

    exac()

    exec(object, globals, locals)

    相关文章

      网友评论

          本文标题:python内置函数

          本文链接:https://www.haomeiwen.com/subject/tdbrnktx.html