Python之函数参数局部全局变量前向引用递归

Posted alexephor

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之函数参数局部全局变量前向引用递归相关的知识,希望对你有一定的参考价值。

函数

函数:实现某种功能(数学形式、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)

上图来说

技术图片

 



以上是关于Python之函数参数局部全局变量前向引用递归的主要内容,如果未能解决你的问题,请参考以下文章

python开发第一篇:目录

第七篇 python基础之函数,递归,内置函数

第七篇 python基础之函数,递归,内置函数

第七篇 python基础之函数,递归,内置函数

第七篇 python基础之函数,递归,内置函数

第十二篇 Python函数之全局变量&局部变量&递归函数