美文网首页
python内置关键字

python内置关键字

作者: gpfworld | 来源:发表于2019-07-16 22:32 被阅读0次

    eval

    eval(expression, globals=None, locals=None) --- 官方文档中的解释是,将字符串str当成有效的表达式来求值并返回计算结果。globals和locals参数是可选的,如果提供了globals参数,那么它必须是dictionary类型;如果提供了locals参数,那么它可以是任意的map对象。

    https://www.cnblogs.com/dadadechengzi/p/6149930.html

    enumerate

    enumerate 可以把各种迭代器包装为生成器,以便稍后产生输出值。生成器每次产生一对输出值,其中,前者表示循环下标,后者表示从迭代器中获取到底额下一个序列元素。
    enumerate(sequence, [start=0])

    seq = ['one', 'two', 'three']
    >>> for i, element in enumerate(seq):
    ...     print i, element
    
    0 one
    1 two
    2 three</pre>
    
    

    zip,生成器,生成元祖

    >>>a = [1,2,3]
    >>> b = [4,5,6]
    >>> zipped = zip(a,b)     # 打包为元组的列表
    [(1, 4), (2, 5), (3, 6)]</pre>
    

    *用法:

    1、表示乘号

    2、表示倍数,例如:

    def T(msg,time=1):
        print((msg+' ')*time)
    
    T('hi',3)
    
    打印结果(打印3次):
    
    hi hi hi 
    

    3、调用函数时使用*和 **
    假设有函数
    def test(a, b, c)

    test(args): 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。比如上面这个代码,如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3) 。

    test(kwargs): 的作用则是把字典 kwargs 变成关键字参数传递。比如上面这个代码,如果 kwargs 等于 {‘a’:1,’b’:2,’c’:3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。

    4、定义函数参数时使用*

    def test(*args):
      定义函数参数时 * 的含义又要有所不同,在这里 *args 表示把传进来的位置参数都装在元组 args 里面。比如说上面这个函数,调用 test(1, 2, 3) 的话, args 的值就是 (1, 2, 3) 。:

    def test(**kwargs):
      类似的, ** 就是针对关键字参数和字典的了。 调用 test(a=1,b=2,c=3) 的话, kwargs 的值就是 {‘a’:1,’b’:2,’c’:3} 了。

    生成器:

    同样是生成列表,我们可以直接全部生成,也可以构造一个迭代器。等用到时再进行构造。延迟计算。

    要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:

    >>> L = [x * x for x in range(10)]
    >>> L
    [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    >>> g = (x * x for x in range(10))
    >>> g
    <generator object <genexpr> at 0x1022ef630>
    

    使用yield 生成生成器

    def fib(max):
        n, a, b = 0, 0, 1
        while n < max:
            yield b
            a, b = b, a + b
            n = n + 1
        return 'done'</pre>
    
    

    迭代器:

    我们已经知道,可以直接作用于for循环的数据类型有以下几种:

    一类是集合数据类型,如listtupledictsetstr等;

    一类是generator,包括生成器和带yield的generator function。

    这些可以直接作用于for循环的对象统称为可迭代对象:Iterable

    相关文章

      网友评论

          本文标题:python内置关键字

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