Python关于函数的一些基本知识

一、函数的定义、传递参数和使用

*args和**kwargs分别将参数打包为元组tuple和字典dict两种类型

键值对类型的自动会被保存到dict中

PS.如果没有在参数中加入**kwargs,但是在输入的参数中出现了键值对,就会报错

需要注意两者的顺序,是先args后kwargs

二者的名字是公用的,也可以随便起,比如*a和**b

# 函数参数传递
# 在abc函数中包含x,y两个参数
# *args将传入参数打包为元组tuple
# **kwargs将传入键值对打包为字典dict
def abc(x, y, *args, **kwargs):
    print(x, y)
    print(args)
    print(kwargs)

abc(1, 2, "hellow", 22, 22.2, True, amd=12, inter=13)

# 1 2
# ('hellow', 22, 22.2, True)
# {'amd': 12, 'inter': 13}

二、将函数作为参数传递

定义一个函数f(x)=3x^2+2x-5

对函数f(x)进行求导

对于不知道具体函数的可以利用微分的定义来粗略求导

f'(x)=\lim_{x \to 0} \frac{f(x+\Delta x)-f(x)}{\Delta x}

在一个函数中调用调用另一个函数的时候,直接在参数位置写函数名,即可将函数作为参数调用

diff(2,f)

# 定义函数
def f(x):
    return 3 * x ** 2 + 2 * x - 5

# 根据微分的定义来构造求导公式
# 其中x趋近于0用1e-6替代
def diff(x, func):
    delta = 1e-6
    return (func(x + delta) - func(x)) / delta

# 调用diff函数,其中func参数用f来替代
# 实现了函数f(x)作为参数的传递
print(diff(2, f))

# 14.000003002223593

三、函数可以加入到集合中

函数可以加入列表list,成为一个集合

这样可以方便遍历集合,挨个使用多个函数

def f1(x):
    return x**2
def f2(x):
    return x**3
def f3(x):
    return x**4
funcs = [f1,f2,f3]

for f in funcs:
    print(f(5))

# 25
# 125
# 625

三、函数作为返回值,用于函数的嵌套

# 定义函数funct1,内部嵌套一个func2
def func1(x):

    def func2(y):
        return x + y

    return func2

# 调用函数func1,函数执行后返回的是func2
# func1(3),3的参数给到x
# 返回值依然是一个函数
a = func1(3)
print(type(a))
# <class 'function'>
# 既然返回值依然是一个函数,那么返回值后面就可以继续跟参数
# a(5)其实就是func2(5),5的参数给到y
print(a(5))
# 8

# 简易的写法可以写作,对嵌套的函数连续传入参数
print(func1(3)(5))
# 8

四、创建临时的匿名函数

对于一些简单的、单次使用的函数,不需要再单独定义

使用lambda方法定义一个临时的函数

lambda 参数,参数,...,参数: 函数

这归功于函数也是对象,可以利用引用的规则来引用函数。

# 还是原来的微分公式
def diff(x, func):
    delta = 1e-6
    return (func(x + delta) - func(x)) / delta

# 用lambda定义一个临时的函数,放在func的位置
# 这个函数没有名字,且只能使用一次,也无法被调用,放在f的位置让f去引用它
# lambda的创建方式是
# lambda 参数,参数,...,参数:函数
dy = diff(2, lambda x:2*x**2+3)
print(dy)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值