Python 函数高级

函数分类:内建函数,三方函数,自定义函数

函数的使用描述

直接在函数体的最上面使用三个双引号对注释
说明的信息:

  • 函数的功能
  • 参数
  • 返回值
def caculate(a, b):
    """
    :param a:
    :param b:
    :return:
    """

    pass

help(caculate)

Help on function caculate in module main:

caculate(a, b)
:param a:
:param b:
:return:

偏函数

当我们写一个参数比较多的函数时,如果有些参数,大部分场景下都是某一个固定值,那么为了简化使用,就可以创建一个新函数,指定我们要使用的函数的某个参数,为某个固定的值;这个新函数就是偏函数。

借助functools模块的partial

import functools

def test(a, b, c, d=1):
    print(a + b + c, d)

newFunc = functools.partial(test, c=5)

print(newFunc,type(newFunc))
newFunc(1,2)

functools.partial(<function test at 0x03D20660>, c=5) <class ‘functools.partial’>
8 1

import functools

numStr = '100010'
result = int(numStr, base=2)
print(result)

int2 = functools.partial(int, base=2)
print(int2(numStr))

34
34

高阶函数

当一个函数A的参数,接收的又是另一个函数时,则把这个函数A称为高阶函数

l = [{'name':'sz', 'age':18},
    {'name': 'sz2', 'age': 19},
    {'name':'sz3', 'age':18.5},
]

def getKey(x):
    return x['age']

result = sorted(l, key=getKey)
print(result)

[{‘name’: ‘sz’, ‘age’: 18}, {‘name’: ‘sz3’, ‘age’: 18.5}, {‘name’: ‘sz2’, ‘age’: 19}]

应用场景:

def caculate(num1, num2, caculateFunc):
    print(caculateFunc(num1, num2))

def sum(a, b):
    return a + b


caculate(1, 2, sum)

3

返回函数

一个函数内部,它返回的数据是另外一个函数

def getFunc(flag):
    # 再次定义几个函数 
    def sum(a,b,c):
        return a + b + c
    def jian(a, b, c):
        return a - b - c
    
    if flag == '+':
        return sum
    elif flag == '-':
        return jian

result = getFunc('+')
print(result, type(result))
res = result(1, 3, 5)
print(res)

<function getFunc..sum at 0x03C80738> <class ‘function’>
9

匿名函数(lambda 函数)

没有名字的函数
lambda 参数1, 参数2: 表达式
只能写一个表达式,不能直接return
表达式的结果就是返回值

result = (lambda x, y: x + y)(1, 2)
print(result)

newFunc = lambda x, y: x + y
print(newFunc(4,5))

3
9

l = [{'name':'sz', 'age':18},
    {'name': 'sz2', 'age': 19},
    {'name':'sz3', 'age':18.5},
]

result = sorted(l, key=lambda x: x['age'])

print(result)

[{‘name’: ‘sz’, ‘age’: 18}, {‘name’: ‘sz3’, ‘age’: 18.5}, {‘name’: ‘sz2’, ‘age’: 19}]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值