自定义函数

定义函数型参顺序:位置参数,*args,默认参数,**kwargs

 打印函数名:func.__name__

python函数定义方法:

1 def test(x):         # def:定义函数的关键字 ;test是函数名 ;()里是形参
2     "这一行是注释,说明这个函数是干嘛的"
3     x += 1           # 代码块
4     return x         # return定义返回值
5 
6 y = test(3)          # 调用函数并赋值,因为有return,所以y是函数运行结果返回的值
7 print(y)

 延伸:

 1 def test(x, *args, **kwargs):
 2     print(x)
 3     print(args)
 4     print(kwargs)
 5 
 6 test('这是x', 2, 3, '你好', '这是args', a = '宝露', name = 'cbl')
 7 
 8 # 或者
 9 
10 test('这是x', *[2, 3, '你好', '这是args'], **{'a': '宝露', 'name': 'cbl'})

 

递归函数:

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

特性:

1.必须有一个明确的结束条件(return)

2.每次进入更深一层递归时,问题规模相比上次递归有所减少

3.递归效率不高,递归层次过多会导致栈溢出

 例:

1 # __author:"Cheng"
2 # date:2018/6/30
3 def calc(n):
4     print(n)
5     if int(n / 2) == 0:
6         return n              # 当满足上面的if条件时,函数终止执行
7     return calc(int(n / 2))
8 calc(10)                      # 调用函数calc,实参为10

 

lambda()

匿名函数:

 1 num_1 = [1, 4, 23, 32, 22, 12]
 2 def map_test(func, array):
 3     ret = []
 4     for i in num_1:
 5         res = func(i)
 6         ret.append(res)
 7     return ret
 8 
 9 a = map_test(lambda x: x+1, num_1)
10 print(a)

 

闭包:

 1 # 闭包: 嵌套函数,内部函数调用外部函数的变量
 2 def outer():
 3     a = 1
 4     def inner():
 5         print(a)
 6         # print(inner.__closure__)   # 有cell的就是闭包函数,不是的话返回None
 7     return inner                     # 闭包函数调用形式
 8 
 9 inn = outer()    # 通过return,调用闭包函数,达到调用的目的
10 inn()            # 只要引用该函数,上面的a=1永远不会消失
11 
12 # 闭包案例
13 from urllib.request import urlopen
14 
15 def index():
16     url = "http://www.sina.com.cn/"
17     def get():
18         return urlopen(url).read()
19     return get
20 
21 sina = index()
22 content = sina()
23 print(content)

 

posted @ 2018-06-28 12:13  宝露  阅读(106)  评论(0)    收藏  举报