函数
函数:实现某种功能(数学形式、python def函数式编程)
过程:就是函数没有返回值
参数
1、形参 实参 位置参数 关键字参数 默认参数
1 # 形参x,y不分配内存空间 实参2,3在调用的时候才分配空间,调用完毕就释放空间 2 def calc(x, y): 3 res = x ** y 4 return res 5 6 7 c = calc(2, 3) 8 print(c) 9 10 11 def test(x, y, z): 12 print(x) 13 print(y) 14 print(z) 15 16 17 # 位置参数(一一对应,缺一不行,多一不行) 18 test(1, 2, 3) 19 # 关键字参数(位置不固定,缺一不行,多一不行) 20 test(x=1, y=2, z=3) 21 # 混合使用:位置参数必须在关键字参数左边 22 test(1, 2, z=3) 23 # test(1, 2, z=3, y=4) # 特殊情况仍然要报错 24 25 26 # 默认参数 27 def handle(x, y=‘mysql‘): 28 print(x) 29 print(y) 30 31 32 handle(‘hello‘) 33 handle(‘hello‘, ‘sqlite‘)
2、参数组 *args(列表) **kwargs (字典)
1 # 参数组 **字典 *列表 2 3 4 # def test(x, *args): 5 # print(x) 6 # print(args) 7 # print(args[0]) 8 9 10 # test(1, 2, 3, 4, 5, 6) 11 # test(1, *[‘x‘, ‘y‘, ‘z‘]) # (‘x‘, ‘y‘, ‘z‘) 12 # test(1, [‘x‘, ‘y‘, ‘z‘]) # ([‘x‘, ‘y‘, ‘z‘],) 13 14 # def test(x, **kwargs): 15 # print(x) 16 # print(kwargs) 17 # 18 # 19 # test(1, y=2, z=3) # {‘y‘: 2, ‘z‘: 3} 20 21 22 # def test(x, *args, **kwargs): 23 # print(x) 24 # print(args) 25 # print(kwargs) 26 # 27 # 28 # test(1, 2, 3, 4, 5, y=1, z=2) 29 # test(1, *[1, 2, 3], **{‘y‘: 1})
局部变量与全局变量
1、局部变量:子程序中的变量(有缩进)
2、全局变量:没有缩进,在全局都可以使用
1 # 局部与全局变量 2 # name = "火爆哥" 3 # 4 # 5 # def change_name(): 6 # global name # ------>其实是指针指向全局变量name的值 7 # name = "帅的一比" 8 # print(‘change_name‘, name) 9 # 10 # 11 # change_name() 12 # print(name) 13 14 # name = "刚娘" 15 # 16 # 17 # def weihou(): 18 # name = "陈卓" 19 # 20 # def weiweihou(): 21 # nonlocal name # ----->nonlocal指针指向name="陈卓"(上一级) global是指向全局的变量name = "刚娘" 22 # name = "冷静" 23 # weiweihou() 24 # print(name) 25 # 26 # 27 # print(name) # 刚娘 28 # weihou() # 冷静 29 # print(name) # 刚娘
前向引用
1 # def bar(): 2 # print(‘from bar‘) 3 # 4 # 5 # def foo(): 6 # print(‘from foo‘) 7 # bar() 8 # 9 # 10 # foo() 11 12 13 # def foo(): 14 # print(‘from foo‘) 15 # bar() 16 # 17 # 18 # def bar(): 19 # print(‘from bar‘) 20 # 21 # 22 # foo() 23 # 从这里可以说明函数即变量 24 # foo = ‘函数体‘
函数递归(先搞个简单的例子,后期持续更新中)
记住:一层层的进去然后再一层层的返回来(要有点节制,不能无穷无尽,官方说1300多层左右貌似)
递归:函数自己调用自己,且有终止条件即可
1 def clac(n): 2 print(n) 3 if int(n / 2) == 0: 4 return n 5 return clac(int(n / 2)) 6 7 8 res = clac(10) 9 print(res)
上图来说
原文地址:https://www.cnblogs.com/Alexephor/p/11188277.html
时间: 2024-10-12 01:00:03