自定义函数
定义函数型参顺序:位置参数,*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)

浙公网安备 33010602011771号