1. 程式人生 > >python學習第02篇-20181030

python學習第02篇-20181030

今天主要學習了python的各種函式引數傳遞,函式回撥與閉包,yield關鍵字的用法等,筆記與程式碼放在了一起,如下:

print("------函式------")
'''
引數結構:
1.傳統引數傳遞
    無引數傳遞
    固定引數傳遞
2.預設引數傳遞
3.未知個數引數傳遞
4.帶鍵引數傳遞
'''


def fun():
    print("無引數傳遞")


def fun2(x):
    # 固定引數傳遞
    print(x)


def fun3(x, y=100, z='hello'):
    # 預設引數傳遞
    print(x, y, z)


def fun4(name, *args):
    # 未知引數個數傳遞
    print(name)
    for arg in args:
        print(arg)


fun4('hello', '1', '2')


def fun5(**kwargs):
    # 帶鍵引數傳遞
    print(type(kwargs))
    for x in kwargs:
        print(x, kwargs[x])


fun5(x=1, y=2, z=3)

'''
回撥函式又叫函式回撥:
將函式作為引數傳遞到另外的函式中執行。
'''


def fun6(func, args):
    # 函式回撥
    func(args)


def f1(x):
    print(x)


fun6(f1, '這是函式回撥')

'''
閉包:
函式回撥是將函式作為引數傳遞,閉包是將函式作為返回值返回
'''


def say(word):
    # 閉包
    def name(name):
        print(word, name)

    return name


hi = say('你好')
hi('小明')

print("---------yield----------")
'''
yield 關鍵字的作用就是把一個函式變成一個generator(生成器)
帶有yield的函式不再是一個普通函式,python解析器會將其視為一個generator
若將下面的yield i 改為print(i)將得不到迭代(Iterable)的效果
'''


def fun7(n):
    i = 0
    while i < n:
        yield i
        i += 1


for i in fun7(10):
    print(i)