码迷,mamicode.com
首页 > 其他好文 > 详细

函数的扩展

时间:2018-11-04 15:39:34      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:返回值   bsp   缓存   参数   修改   int   closure   变量   for   

函数名的用途:

函数名可以作为变量赋值(得到的是函数的内存地址)

函数的调用其实就是函数的内存地址,通过加括号调用

函数名可以当作函数的参数传递

函数名可以当作返回值

函数的闭包:优点:多次运行一样的程序可以节省程序运行的时间

应用:缓存  装饰器
闭包的例子:
def func(*args):
    sum_num = 0
    for num in args:
        sum_num += num
    def inner():
        return sum_num
    return inner
  ###print(inner.__closure__)可以用来查询inner 是不是闭包 inner
= func(1,2,3,4) inner()

默认参数的陷阱:

def func(l = 1):
    l += 1
    print(l)
func()  #2
func()   #2
func()  #2 不管调用几次输出的都是2

lst = []
def func1(a,l=lst):
    l.append(a)
    print(l)
func1(1)#[1]
func1(2,[])  # [2]
func1(2)#[1, 2]#列表是一个固定的内存地址,里面的元素都有自己的内存地址,所以在添加时并没有修改lst的内存地址

 

函数的扩展

标签:返回值   bsp   缓存   参数   修改   int   closure   变量   for   

原文地址:https://www.cnblogs.com/changtao/p/9903981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!