python 函数参数与generator

def fn(*args):
    g = (x for x in args)
    print('g = ', g)

    print(next(g))
    print(next(g))
    print(next(g))

fn(12, 1, 3)

输出结果是

g =  . at 0x000001F606ED0990>1213

由此可见

1.使用 tuple 包装 for循环的副产物x,可以生成一个 generator

2.generator 类似于java的iterator

3.generator的优点在于,没有把所有item都放到内存中,而是使用next方法取的时候才去取值

def fn(a, b, *args, **di):
    print('a = ', a)
    print('b = ', b)
    for x in args:
        print('x = ', x)
    for k, v in di.items():
        print('k = ', k, ' v = ', v)

fn(10, *(12, 14), name='messi', age=12)
输出结果是
    a =  10
    b =  12
    x =  14
    k =  name  v =  messi
    k =  age  v =  12


由此可见,必须参数和可变参数在传递给方法时参数统一处理了,先满足必须参数再满足可变参数


你可能感兴趣的:(笔记)