Python之路,第十二篇:Python入门与基础12

python3 函数3

 装饰器 decorator   ***

概念:装饰器是一个函数,主要作用是用来包装另一个函数或类;

包装的目的:是在不改变原函数名的情况下,改变被包装函数(对象)的行为。

装饰器函数: def   装饰器函数名(参数):

                                    函数块

                                  return   函数

例子:

def    deco(fn):

        print("装饰器函数被调用,并返回原函数")

       return  fn

带装饰器函数语法:

@装饰器函数名    [(装饰器函数传参)]   <换行>

def   函数名(参数列表):

         语句块

注:[ ] 代表可省略 

 1 def deco(fn):
 2     print("装饰器被调用,原函数被返回")
 3     print(fn)
 4     return fn
 5     #return  lambda :print("hello,world")
 6 
 7 @deco
 8 def myfac():
 9     print("myfac被调用")
10 
11 #myfac = deco(myfac)
12 myfac()
13 myfac()
14 #
15 def deco(fn):
16     print("装饰器被调用,原函数被返回")
17     print(fn)
18     #return fn
19     return  lambda :print("hello,world")
20 
21 @deco
22 def myfac():
23     print("myfac被调用")
24 
25 #myfac = deco(myfac)
26 myfac()
27 myfac()
28 #
29 #装饰器被调用,原函数被返回
30 #<function myfac at 0x00000000006766A8>
31 #myfac被调用
32 #myfac被调用
33 #装饰器被调用,原函数被返回
34 #<function myfac at 0x00000000005ACB70>
35 #hello,world
36 #hello,world
View Code

 函数的文档字符串:

语法:def   函数名(参数列表):

                   "函数文档字符串"

                    语句块

                    .....

说明:文档字符串通常用来说明函数的功能和用法;

用>>>help(函数名) 可以查看文档字符串

例子:

 1 def mymax(a, b):
 2     """mymax 函数用于获取两个变量的最大值
 3     a 形参
 4     b 也是形参
 5     """
 6     pass
 7 
 8 help(mymax)
 9 #help(mymax)
10 #Help on function mymax:
11 #mymax(a, b)
12 #    mymax 函数用于获取两个变量的最大值
13 #    a 形参
14 #    b 也是形参
View Code

 

已学过的函数的语法:

[@装饰器]

def   函数名([位置参数],[*元组参数],    [命名关键字参数],[**字典参数]):

        ["文档字符串"]

        语句块

[ ] 代表内部的内容可省略

函数的属性:

__name__属性

作用:用来记录函数名;

说明:以双下划线开头,以双下划线结尾的标识符通常代表python的特殊属性等。

 1 def abc():
 2     pass
 3 
 4 a = abc
 5 print(a.__name__)  #abc
 6 print(abc.__name__)   #abc
 7 
 8 #
 9 def xxx(fn):
10     if fn.__name__ == 'abc':
11         pass
12     elif fn.__name__ == "max":
13         pass
14     
View Code

 

 

__doc__ 属性

作用:用于记录文档字符

例子:

1 def cba():
2     "我是文档字符串"
3     pass
View Code
1 def cba():
2     "我是文档字符串"
3     pass
4 
5 
6 #help(cba)
7 #Help on function cba:
8 #cba()
9 #    我是文档字符串
View Code

 

 

补充内容:

布尔测试:

bool(x)  #True / False

为False的情况为: None 、 False 、0、 0.0、 0+0j、 [ ] 、 ' ' 、()、{ } 、set()、 frozenset()

 

 

 

 

 

 

 

 

 

    

 

posted on 2018-05-12 22:42  微子天明  阅读(255)  评论(0编辑  收藏  举报

导航