闭包、递归和导包

闭包

定义:
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
  1. from 包名 import 方法名
    调用:方法名
    只导入方法名
    作用:减少了内存的损耗
#test2.py
from test1 import fun1
fun1()
>>>this in fun1
  1. from 包名 import *
    导入所有方法
    使用:方法名()
#test2.py
from test1 import *
fun1()
>>>this in fun1

自己创建包

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值