闭包、递归和导包

    xiaoxiao2022-07-14  151

    闭包

    定义: 1. 一个函数可以定义在另一个函数的内部 2. 这个函数可以访问外部函数的变量及参数 3. 在这个函数的外部函数的外部调用这个函数的时候,就形成了闭包 作用:保存函数的状态信息,使函数的局部变量可以保存下来

    特点

    避免使用全局变量(数据污染) 提供部分数据的实现 更优雅面向对象的实现 eg: def fun1(x): a=10 def fun2(): return x+a return fun2 fun1(3)() >>>13

    注意 闭包的延迟绑定特性,也就是不会立即输出,需要调用在输出,会影响结果的 递归

    4. 递归就是自己调用自己 5. 当我们要解决一个大问题的时候,发现大问题可以拆分多个小问题,小问题解决方法和大问题相同 6. 注意:避免无穷递归 7. 递归的效率非常低 #汉诺塔 def han(x,y,z,n): if n==1: print("%s--->%s"%(x,z)) else: han(x,z,y,n-1) #把n-1个移到y底座上 print("%s--->%s"%(x,z)) #把最大的移到z底座上 han(y,x,z,n-1) #把剩余的n-1个移到z底座上

    导包 8. import 包名 (注意路径问题) 调用:包名.方法名 包名就是.py文件,包名全小写

    #test1.py def fun1(): print('this in fun1') #test2.py import test1 test1.fun1() >>>this in fun1 from 包名 import 方法名 调用:方法名 只导入方法名 作用:减少了内存的损耗 #test2.py from test1 import fun1 fun1() >>>this in fun1 from 包名 import * 导入所有方法 使用:方法名() #test2.py from test1 import * fun1() >>>this in fun1

    自己创建包

    只需要在文件中创建一个__init__文件,导入当前模块的所有文件(.py)文件,然后下次使用的 时候,就可以直接导入包名,使用包名.函数名使用 from 文件 import *
    最新回复(0)