Python学习笔记【week02day5】偏函数,变量作用域,回调函数,闭包

偏函数,变量作用域,回调函数,闭包

偏函数

功能
将已有函数的某些参数写成固定值,并返回一个新的函数,这个函数就是叫偏函数。
目的: 简便调用,将通用的参数写死,没必要输入过多固定的参数
语法

import functools
func2 = functool.partial(func1,固定参数)

练习:需求:求任意数与77的最大公约数,与最下公倍数
使用偏函数实现

def func1(m,n):
	ji = m*n
	r = None
	while r != 0:
    	r = m%n
    	m = n
    	n = r
	return m,ji/m
	
#偏函数
fun2 = functools.partial(func1,77)
print(fun2(11))
11,77

变量作用域

说明:就是变量起作用的范围。程序中变量并不是在任意的地方都能访问,访问范围取决于它在赋值的位置【定义的位置】

  1. 局部作用域:在函数中定义的变量,每当函数被调用的时候它都会产生一个新的作用域,这个新的作用域我们称之为局部作用域,在局部作用域中定义的变量,我们称之为局部变量
    (局部变量起作用的范围就是当前所在的这个函数。)

  2. 嵌套作用域:又称函数作用域(函数中有函数,局部作用域的一种)

  3. 全局作用域:在模块中定义的变量,并且在函数体之外定义的变量,他们产生的作用域叫做全局作用域,这个变量我们称之为全局变量。
    全局变量作用的范围是当前的整个.py文件。

  4. 内置作用域:
    系统内部定义的变量产生的作用域,叫做内置作用域。
    起作用的范围,所有的.py文件。

搜索变量的优先级
局部作用域 > 嵌套作用域 > 全局作用域 > 内置作用域,
当这几个作用域中都不存在的时候则报错。

如果需要在局部作用域中使用全局变量,需要使用关键字global
e.g.

num1 = 10

def func():
	global num1
 	num1 = 30
	print(num1)

注意:在python中,只有模块以及函数【def,lambda】这些才会引入新的作用域,
if/else,while/for,try/except这些语句块不会引入新的作用域

回调函数

百度百科上对回调函数的解释

“回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应”

将函数作为参数传递到另外一个函数中,这个被传递进去,后来又被调用的函数,我们称之为回调函数。

  • 偏函数就是回调函数的一种

	def wake1(time):
		print("在%s点,使用揪耳朵的方式叫醒。。。"%time)

	def  wake2(time):
		print("在%s点,使用泼冷水的方式叫醒..."%time)

	def wake_server(func,time):
		return func(time)

	wake_server(wake1,"下午一点五十")

返回函数

函数不仅可以作为函数参数传入,还可以作为函数返回结果

闭包

在外函数的内部定义了一个内函数,内函数使用了外函数的临时变量,
外函数的返回值是内函数的引用【内函数的函数名】,这时候就构成了一个闭包。

装饰器是闭包的一种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值