我们今天来给大家讲讲函数的特殊用法,看看函数有哪些特殊的用法,大家是不是已经开始好奇了,函数就是简单的函数呗,咋还有特殊呢?搬好小板凳了吗?马上开始啦~
PART
1
变量也可以指向函数
函数调用---abs() 求绝对值
我们通过以上看出,abs就是函数名,也就是函数本身。现在我们来打印一下,看看结果来验证一下。
现在我们将函数的结果赋值给一个变量:
然后我们就可以将一个变量指向一个函数了。
通过以上我们得出的结论是: 1.函数本身也可以赋值给变量,换句话说,变量也可以指向一个函数 2.如果一个变量指向了一个函数,那么,则可以通过这个变量去调用这个函数【调用函数本身和使用变量调用结果一模一样】
最后我们再来应用一下:
def test():
print("hello")
#正常调用
test()
t = test
#变量调用
t()
PART
2
函数名是变量
函数名其实就是指向函数的变量
#abs() abs看成变量,它指向一个可以计算绝对值的函数
#错误演示:
#abs = 10
#print(abs(-10)) #TypeError
PART
3
传入函数
变量可以指向函数,函数的参数能够接受变量
def test(num):
pass
n = 100
test(n)
一个函数接收另一个函数作为参数,这种函数被称为高阶函数
def add(x,y,f): #f = abs
#f则可以被当成函数来进行调用
return f(x) + f(y)
print(add(-10,20,abs)) #30
我们现在来剖析一下这个过程,看看高阶函数怎么运算的,看看推导的过程
"""
推导过程
x = -10
y = 20
f = abs
f(x) + f(y) ----->abs(-10) + abs(20) ----->30
"""
我们再来实践运用一下,再来举个栗子:
def hello():
print("hello")
def check(f):
f()
check(hello) #-------> hello
相信大家已经看懂一个函数接收另一个函数作为参数的传入函数了,如上所示,我们将hello这个函数传入到了check这个函数的里面,然后通过调用check这个函数来继续调用hello函数执行函数。
第二趴:偏函数
又到了普及知识的时候了,大家快来接着收割了!所谓的偏函数就是当一个函数有很多参数时,调用者就需要提供多个参数。
首先我们需要导入模块:
#模块functools其中就有偏函数的功能
import functools
#函数的默认参数:设定参数的默认值【可以降低函数调用的难度】
def test(num1,num2=10):
return num1 + num2
test(2,3) #------>输出5,因为返回2+3
test(34) #------>输出44,因为返回34+10
简洁明了的偏函数理解如下: 偏函数:对参数做一些控制的函数 偏函数一般不需要自己定义,直接使用
#int() 将字符串或者浮点型转换为整型,当传入字符串的时候,默认按照十进制进行输出
print(int("123")) #123
#事实上,其实int()中还提供了一个额外的参数base,默认值为10
print(int("123",base=10)) #123
#如果传入base参数,则可以进行N进制的转换
print(int("12345",base=8))
#二进制
print(int("110",base=2)) #6
#如果有大量的数据需要按照二进制输出,则需要重复int("110",base=2),则封装函数
"""
def int2(x,base=2):
return int(x,base)
print(int2("110"))
"""
如何创建一个偏函数: 参数一:需要创建偏函数的函数名 参数二:需要设定的默认值
#functools.partial;帮助我们创建一个偏函数,不需要自定义int2()
int2 = functools.partial(int,base=2)
print(int2("110")) # 6
print(int2("101010")) # 42
print(int2("110",base=10)) #110
print(int("1001")) # 1001
print((int2("1001"))) #9
总结:functools.partial的作用:当函数的参数个数太多,需要简化时,使用functools.partial可以创建一个新的函数。 把一个函数的某些参数固定【设置默认值】,返回一个新的函数,则以后使用的时候就可以根本不同的需求调用不同的函数。
1
今天分享的内容就到这里啦~欢迎大家一起来探讨~~~