函数知识点学习

函数:解决代码的冗杂度

实际传递的叫做实参,定义函数中的参数叫做形参

def myfunc(o,vt,s):

        return "".join(s,vt,o)

myfunc('我','打了','小甲鱼')

'小甲鱼打了我'

函数定义中,位置参数必须在关键词参数前面,而关键字参数不存在先后顺序。用法如下。

myfunc(a,/,b,c):

        print(a,b,c)

myfunc(a=1,b=2,c=3) //报错,斜杠右边必须是位置参数

myfunc(1,b=2,c=3) //正确。

右边放关键字参数的用法

myfunc(a,*,b,c):    //这里的b和c只能使用关键字参数。

        print(a,b,c)

myfunc(a=1,b=2,c=3) 

红字提示,这个星号其实就是一个匿名的收集参数,后面不加参数名的话会被一起收进去、

收集参数,类似于元组(具有打包和解包的能力),用法为

def myfunc(*args)//*其实就是实现打包的作用,其中*args就是一个元组。

可以通过连续的星号将myfunc函数打包为字典,用法如下。

myfunc(a,*b,**c):

        print(a,b,c)

myfunc(1,2,3,4,x=5,y=6)

输出的结果为:1,(2,3,4),{x:5,y:6}

*号具有解包的作用,用法如下。

def myfunc(a,b,c,d):

        print(a,b,c,d)

//将元组解包为关键字参数

myfunc(*args)

def myfunc(a,b,c,d)

        print(a,b,c,d)

//将字典解包为关键字参数

args= {'a':1,'b':2,'c':3,'d':4}  //使用两个*号解包两次

myfunc(**args)

输出的值为:1 2 3 4

 全局变量与局部变量的使用

x =880

myfunc():

        x = 250  //这里的x是在函数中的局部变量,因此x的值不改变

        print(x)

x=880

myfunc():

        global x =250 //这里的x是定义在函数中的全局变量,因此x的值改变

        print(x)

 嵌套函数的使用

def myfuncA():       

        x=250

        def myfuncB():

                x=550

                print("in funb,x=",x)

        myfuncB()

        print("in funA,x=",x)

利用nonelocal可以修改外部函数中的同名变量值

LEGB法则(leg-b规则)

L-local ,是局部作用域

E-enclosed,是嵌套函数的外层函数作用域,

G-global,是全局作用域,

B-buliding,内置作用域。

将函数作为返回值返回时只需要写出他的名字就行。

闭包的使用

def power(exp):

        def exp_of(base):

                return base ** exp

        return exp_of

square = power(2)

cube = power(3)

square(2) 

cube(2)

输出结果为:4和8

def myfunc():

        print("正在调用myfunc...")

def report(func):

        print("开始调用函数...")

        func()

        print("调用完函数...")

report(func)

输出结果为:

正在调用myfunc...

开始调用函数...

调用完函数...

装饰器的用法1: 

import time 

def time_master(func):

        def call_func();

                print("开始运行程序..")

                start = time.time()

                func()

                stop =time.time()

                print("结束程序运行...")

                print(f"一共耗费了{stop-time:.2f}秒。")

        return call_func

@time_master  //装饰器:相当于语法糖

def myfunc():

        time.sleep(2)

        print("I love fishC.")

myfunc()

注:装饰器原有的样子为:

myfunc = time_master(myfunc)

装饰器用法2:

import time 

def logger(msg):

        def time_master(func):

                def call_func();

                        print("开始运行程序..")

                        start = time.time()

                        func()

                        stop =time.time()

                        print("结束程序运行...")

                        print(f"一共耗费了{stop-time:.2f}秒。")

                return call_func

        return time_master

@logger(msg='A')

def funcA():

        time.sleep(1)

        print("正在调用funA...")

@logger(msg='B')

def funcB():

        time.sleep(1)

        print("正在调用funB...")  

funcA()

funcB()

装饰器的原型为:funcA = logger(msg='A')(funcA)

                             funcB = logger(msg='B')(funcB)

lambda表达式

y=[lambda x:x*x,2,3]

y[0](y[1])

输出结果为4

利用map和filter函数的机制学习lambda

mapped = map(lambda x:ord(x)+10 , "Fishc")

listed(mapped)

输出的结果为:[80,115,125,114,77]

list(filter(lambda x:x%2,range(10))) //x%2==1,即为奇数时才执行filter函数

输出结果为[1,3,5,7,9]

 for语句是从一个可迭代的对象里面依次获取数据。

生成器

利用生成器获得斐波那契数列

def febo():

        back1 ,back2=0,1

        while true:

                yiled back1

                back1,bakc2=back2,back1+back2

f =febo()        

生成器表达式

t=(i**2 for i in range(10))

t是一个生成器

for i in t 

        print(i)

输出为:0-9的平方值

递归

递归的效率比迭代低

汉诺塔递归

def Hanoi(n,x,y,z):

        if n==1:

                print(x,'-->',z)

        else:

                Hanoi(n-1,x,z,y)

                print(x,'-->'z)

                Hanoi(n-1,y,x,z)

函数文档

 def exchange(dollar,rate=6.32):

        """   //字符串内的是函数文档

        功能:汇率转换,美元->人民币

        参数:

        -dollar 美元数量

        -rate 汇率,默认值是6.32(2022-03-08)

        返回值:

        -人名币的数量

        """

        return dollar * rate

类型注释

def times(s:list[int],n:int=3)->list: //红色部分为类型注释,记录形式参数和返回值的类型。

        return s * n

time._name_

times._annotation_ //anonotation表示标注,以字典的形式输出每一个参数的类型

exchange._doc_  //doc表示文档

高阶函数的使用:

import functools 

      result = functools.reduce(lambda y: y *x , range(1,11))

输出的结果为10的阶乘。

偏函数的使用:

import functools

        result = functools.partial(pow,2)  //partial的作用相当于闭包

wrap装饰器是装饰器的装饰器。

wrap的作用是还原函数的真实名字。

import time

import functools

def time_master(func):

        @functools.wrap(func) //作用是使myfunc的真实名字从call_func变为myfunc

        def call_func():

                pass

        return call_func

@time_master 装饰器

def myfunc():

        time.sleep(2)

        print("i love fishc")

myfunc()

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
深度学习期末知识点的PDF包含了深度学习的重要概念和技术,以下是对PDF内容的回答: 深度学习是一种基于人工神经网络的机器学习方法。它通过对大量数据进行训练来自动学习模式和表示,从而实现对复杂任务的高效处理。深度学习的核心概念包括神经网络、激活函数、损失函数、反向传播算法等。 神经网络是深度学习的基本模块,由多个神经元按层次组成。每个神经元接收上一层神经元的输出,并通过激活函数对输入进行非线性转换。常见的激活函数有Sigmoid、ReLU、Tanh等。神经网络的层数越多,可以表示的复杂模式就越多。 在深度学习中,损失函数用于度量模型预测与真实值的差异。常见的损失函数有均方误差(MSE)、交叉熵(Cross Entropy)等。模型通过反向传播算法来更新权重,以最小化损失函数。反向传播算法基于链式法则,将梯度从输出层传递到输入层,用于调整每个神经元的权重。 深度学习中的优化算法用于求解损失函数的最优解。常见的优化算法有随机梯度下降(SGD)、动量法、Adam等。这些算法通过迭代更新权重,使得损失函数逐渐减小。 除了基本概念和技术,深度学习的应用也涵盖了图像识别、语音识别、自然语言处理等领域。深度学习的模型结构也在不断发展,如卷积神经网络(CNN)适用于图像处理,循环神经网络(RNN)适用于序列数据。 综上所述,深度学习期末知识点的PDF内容涵盖了深度学习的核心概念、技术和应用。通过学习深度学习的知识,我可以理解神经网络的工作原理,掌握优化算法的选择和应用,以及应用深度学习解决实际问题的能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值