Discuss / Python / 暂时总结了四种方法

暂时总结了四种方法

Topic source

凡响skyline

#1 Created at ... [Delete] [Delete and Lock User]
""" 实现计数器统计函数调用次数 """

def createCounter():
    """ 方法1:list的原理类似C语言的数组和指针,不受作用域影响
    直接改变值对应的地址。也就是说不是改变值的引用,而是永久改变值本身 """
    L=[0]
    def counter():
        L[0]+=1
        return L[0]
    return counter

def createCounter():
    """ 方法2:使用global扩大变量作用域 """
    global n
    n=0
    def counter():
        global n
        n+=1
        return n
    return counter

def createCounter():
    """ 方法3:使用nonlocal声明内层函数变量,使其能修改外层函数的变量 """
    n=0
    def counter():
        nonlocal n
        n+=1
        return n
    return counter

def createCounter():
    """ 方法4:使用生成器在外层函数创建生成器对象,在内层函数调用next() """
    def count_generator():
        n=0
        while True:
            n+=1
            yield n
    # 调用生成器函数创建生成器对象一定要在外层函数进行
    temp=count_generator()

    def get_num():
        return next(temp)
    return get_num

近英

#2 Created at ... [Delete] [Delete and Lock User]

第一种方法把return L[0] 改成return L为什么就错了呢

汪祥2012

#3 Created at ... [Delete] [Delete and Lock User]

牛批啊,因为L代表的是列表,L[0]代表的是列表中的第一个元素


  • 1

Reply