python 函数 装饰器

1、函数传参----传参是赋值操作
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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是一个函数时,注意需要加括号(起到调用函数的作用),不加括号返回函数地址
1
2
3
4
5
6
7
8
9
10
# 不加括号,只有返回作用,没有调用作用
def outer(fn):
    print('outer')
    def inner():
        print('inner')
        return fn
    return inner
@outer      #装饰器  待进一步详细说明   <==>   fun=outer(fun())
def fun():
    print('fun')# outer

 

1
2
3
4
5
6
7
8
9
10
11
def outer(fn):
    print('outer')
    def inner():
        print('inner')
        return fn()   #内层函数仍未被调用
    return inner    #加括号调用内层函数
@outer
def fun():
    print('fun')
 
# outer

 

1
2
3
4
5
6
7
8
9
10
11
12
13
#调用内层函数
def outer(fn):
    print('outer')
    def inner():
        print('inner')
        return fn
    return inner()
@outer
def fun():
    print('fun')
 
# outer
# inner
1
2
3
4
5
6
7
8
9
10
11
12
13
def outer(fn):
    print('outer')
    def inner():
        print('inner')
        return fn()
    return inner()
@outer
def fun():
    print('fun')
 
# outer
# inner
# fun

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 @   Monster1728  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示