首页 > 其他分享 >八、函数高级、装饰器

八、函数高级、装饰器

时间:2024-07-18 10:55:12浏览次数:14  
标签:内置 函数 高级 匿名 使用 装饰 fn lambda

文章目录

学习目标

  • 能够使用递归函数计算斐波那契额数列
  • 能够定义和使用匿名函数
  • 使用说出匿名函数的使用场景
  • 能够使用高阶函数
  • 能够使用装饰器计算一段代码的执行时长
  • 能够使用装饰器进行权限验证(不强制要求)

一、递归函数

  • 递归简单来说,就是函数内部自己调用自己
def test(a):
    return a + test(a-1) if a > 1 else a == 1
test(10)

二、匿名函数

  • lambda 关键字能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。lambda函数的语法只包含一个语句,如下:
lambda 参数列表:运算表达式
def add(a,b):
    return a + b
fn = add # 相当于给函数fn起 别名。fn与x均指向同一函数的物理地址空间
print(fn(3,7)) # 等价于add(3,7)

# 除了使用 def 关键字定义一个函数以外,我们还能使用 lambda 表达式定义一个函数
# 用来表达一个简单的函数,函数调用的次数很少,基本上就是调用一次
# 调用匿名函数的两种方式
# 1. 给它定义一个名字(很少这样使用)
mul = lambda a, b: a * b # 匿名函数
print(mul(4,5))

# 2. 把这个函数当做参数传给另一个函数使用(使用场景比较多)
def calc(a,b,fn)
    c = fn(a,b)
    return c

# 回调函数,使用函数作为参数传入,在合适的时间作调用
x1 = calc(1,2,lambda a, b: a + b)

三、列表相关的一些方法

3.1 sort与sorted方法

# 有几个内置函数和内置类,用到了匿名函数
nums = [4,8,2,1,7,6]

# 列表的sort方法,会直接对列表进行排序
nums.sort()

# sorted内置函数,不会改变原有的数据,而是生成一个新的有序的列表
x = sorted(nums)

students = [
    {
   'name':'zhangsan','age':18,'score':98,'height':180},
    {
   'name':'lisi','age':21,'score':

标签:内置,函数,高级,匿名,使用,装饰,fn,lambda
From: https://blog.csdn.net/weixin_44063529/article/details/140398717

相关文章

  • java8四个函数式接口:Function, Predicate, Consumer, Supplier使用
    目录1、前言2. 四大函数式接口1.Function,>2.Predicate 3.Consumer4.Supplier1、前言Java8引入了一种新的接口特性,叫做函数式接口。这种接口只能有一个抽象方法,通常用注解@FunctionalInterface标识。函数式接口可以被隐式地转换为lambda表达式。以下是一个......
  • nms_bev函数
     defnms_bev(boxes,scores,thresh,pre_max_size=None,post_max_size=None):"""NMSfunctionGPUimplementation(forBEVboxes).TheoverlapoftwoboxesforIoUcalculationisdefinedastheexactoverlappingareaofthetwo......
  • 高质量C/C++编程指南总结(八)—— C++高级特性
    1.成员函数重载特征相同的范围(在同一个类中)函数名称相同参数不同virtual关键字可有可无2.覆盖的特征覆盖是指派生类函数覆盖基类函数,所以范围不同(分别位于派生类和基类)函数名称相同参数相同基类函数必须有virtual关键字如下示例中,函数Base::f(int)与Base::f(flo......
  • C++ 数组作为函数参数示例
    C++数组作为函数参数示例:#include<iostream>staticvoidprint(constint*beg,constint*end){while(beg!=end){std::cout<<*beg++<<std::endl;}}staticvoidprint(constint*arr,constsize_tsize){for(size......
  • 农村高中生源转型期提升学生二次函数建模能力的课堂探究
       数学建模能力的提升建立在学生具备数学建模思维与思想的基础上,亲自对数学建模过程形成深刻认知,并且通过具体的问题分析来获取必要的数学建模经验与技巧等。因此,在开展数学教学期间,教师要注意有计划、有目的地结合一些实际社会问题,引导高中生仔细地观察和分析问题,使他们在......
  • 机械学习—零基础学习日志(高数04——函数概念与特性)
    零基础为了学人工智能,真的开始复习高数然后开始学习复合函数,主要掌握复合的方法。求解复合函数,先稍微百度百科一下,什么是因式分解:因式分解:​把一个多项式在一个范围(如实数范围内分解,即所有项均为实数)化为几个整式的积的形式,这种式子变形叫做这个多项式的因式分解,也叫作把......
  • 学习c语言第八天(函数练习)
    1.打印100-200之间的素数#define_CRT_SECURE_NO_WARNINGS打印100-200之间的素数循环方法#include<stdio.h>#include<math.h>intmain(){ inti=100; while(i<=200) { intx=2; while(x<=i) { if(i%x!=0) { x++; if(x==i) ......
  • C语言函数:编程世界的魔法钥匙(1)
    目录1.C语言中的函数是什么?2.函数的分类:2.1标准库函数2.1.1库函数的诞生:2.1.2库函数的作用:2.1.3如何学习使用库函数2.2自定义函数2.2.1函数的组成:2.2.2自定义函数的优点  2.2.3 例题3.函数的参数3.1实际参数(实参):3.2形式参数(形参):4.函数的调用4.1......
  • 03-函数
    DAY-04课堂笔记函数print()在控制台输出input()获取控制台输⼊的内容type()获取变量的数据类型len()获取容器的⻓度(元素的个数)range()⽣成⼀个序列[0,n)#函数可以实现⼀个特定的功能我们学习⾃⼰如何定义函数,实现特定的功能???函数:将多⾏代码(可以实......
  • GPT-4和ChatGPT的高级技巧---微调
    文章目录开始微调使用OpenAIAPI进行微调    OpenA提供了许多可直接使用的GPT模型。尽管这些模型在各种任务上表现出色,但针对特定任务或上下文对它们进行微调,可以进一步提高它们的性能。开始微调    假设你想为公司创建一个电子邮件自动回复生成器。......