美文网首页
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