python 函数 装饰器

1、函数传参----传参是赋值操作
def changdelist(nums):
    nums.append('c')
    return nums
str1=['a','b']
changdelist(str1)

#nums ['a', 'b', 'c']

str1
#['a', 'b', 'c']

# 与不是参数的c变量做对比

def changdelist(nums):
    nums.append('c')
    c=nums
    return nums,c
str1=['a','b']
changdelist(str1)

#(['a', 'b', 'c'], ['a', 'b', 'c'])

c
#NameError: name 'c' is not defined
2、函数 简单装饰器 ---当return是一个函数时,注意需要加括号(起到调用函数的作用),不加括号返回函数地址
# 不加括号,只有返回作用,没有调用作用
def outer(fn):
    print('outer')
    def inner():
        print('inner')
        return fn
    return inner
@outer      #装饰器  待进一步详细说明   <==>   fun=outer(fun())
def fun():
    print('fun')

# outer

 

def outer(fn):
    print('outer')
    def inner():
        print('inner')
        return fn()   #内层函数仍未被调用
    return inner    #加括号调用内层函数
@outer
def fun():
    print('fun')

# outer

 

#调用内层函数
def outer(fn):
    print('outer')
    def inner():
        print('inner')
        return fn
    return inner()
@outer
def fun():
    print('fun')

# outer
# inner
def outer(fn):
    print('outer')
    def inner():
        print('inner')
        return fn()
    return inner()
@outer
def fun():
    print('fun')

# outer
# inner
# fun

  

def outer(fn):
    print('outer')   #1
    def inner():     
        print('inner')  #2
        return fn()  #3
    inner()    #2
    return inner()
   
@outer
def fun():
    print('fun')   #3

# outer   1
# inner   2
# fun     3
# inner   # 返回inner 结果为 inner fun
# fun

  

  

 

 

 
posted @ 2022-02-19 10:52  Monster1728  阅读(46)  评论(0编辑  收藏  举报