复习python函数

复习python函数

  • 1.对函数的理解
    • 函数的传递方式
    • 返回值 return
    • 可通过help()函数查看函数说明
    • 作用域
  • 2.不定长参数
  • 3.递归
  • 4.高阶函数
    • 将函数作为参数传递
    • 将函数作为返回值返回
  • 5.匿名函数
  • 6.装饰器

1.对函数的理解

函数可以用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次的调用。

def fn():print('hello')
# 调用
fn()

函数的传递方式

(1)定义形参
可以为形参指定默认值

def fn(a=5, b=10, c=20):print(a, b, c)

(2)实参的传递方式
实参可以传递任意类型的参数

  • 位置参数
fn(1,2,3)
  • 关键字参数
fn(a=5, b=6, c=7)
  • 混合使用关键字和位置参数,必须将位置参数写到前面
fn(1, 2,c=30)

返回值 return

def fn5():return 10
# fn5 和 fn5()区别
print(fn5)   # fn5是函数对象,打印fn5实际是在打印函数对象
print(fn5())   # fn5()是在调用函数,实际是打印函数的返回值 10

可通过help()函数查看函数说明

def fn(a:int, b:bool, c:str='hello')-> int:'''这是文档字符串实例:param a:整数参数:param b:布尔参数:param c:字符串参数:return:'''return 233help(fn)

请添加图片描述

作用域

  • 全局变量
  • 局部变量
    如果希望在函数内修改全局变量,则需要使用global关键字来声明变量
a = 20
def fn3():global aa = 10print(a)  # 10fn3()
print(a)   # 10

2.不定长参数

在定义函数时,可以在形参前边加上一个*,这样这个形参将会获取到所有的实参。
它将会将所有的实参保存到一个元组中。

a, b, *c = (1, 2, 3, 4, 5, 6)

*a会接受所有的位置实参,并且会将这些实参统一保存到一个元组中(装包)。

def fn(*a):print(a, type(a))fn(1, 2, 3)

注意:带*的参数后的所有参数,必须以关键字参数的形式传递

def fn2(*, a, b, c):print(a, b, c)
fn2(a=1, b=2, c=3)

*形参只能接受位置参数,而不能接受关键字参数。
**形参可以接受其他关键字参数,它会将这些参数统一保存到一个字典中。
字典的key就是参数的名字,字典的vaLue就是参数的值。

def fn3(**a):print('a=', a, type(a))
fn3(a=1, b= 2)

结果:

a= {'a': 1, 'b': 2} <class 'dict'>

解包

# 参数的解包
def fn4(a, b, c):print(a, b, c)# *对元组、列表解包
t = (10, 20, 30)
t = [10, 20, 30]
fn4(*t)   # 10,20,30# **对字典解包
d = {'a':100,'b':200, 'c':300}
fn4(**d)   # 100,200,300

3.递归

递归式函数,在函数中自己调用自己。
递归式函数两个条件:
1.基线条件

  • 问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了

2.递归条件

  • 将问题继续分解的条件
# 求N!
def factorial(n):# 基线条件if n == 1:return 1# 递归条件return n * factorial(n-1)# print(factorial(10))
# 创建一个函数,用来检查是否是回文字符串,如果是返回True,否则返回False
# 回文字符串,字符串从前往后念和从后往前念是一样的
def hui_wei(s):if len(s) < 2:return Trueelif s[0] != s[-1]:return False# 递归条件return hui_wei(s[1:-1])print(hui_wei('ababa'))

4.高阶函数

高阶函数将函数作为参数传递
接收函数作为参数,或者将函数作为返回值的函数是高阶函数。

将函数作为参数传递

l = [1, 2, 3, 4, 5, 6, 7, 8, 9]def fn2(i):if i % 2 ==0:return Truereturn Falsedef fn3(i):if i > 5:return Truereturn False# 将函数作为参数传递
def fn(func, l):# 创建一个列表list = []# 对列表进行筛选for n in l:if func(n):list.append(n)return list
print(fn(fn2, l))

将函数作为返回值返回

将函数作为返回值返回,也是一种高阶函数,也称为闭包。
通过闭包可以创建一些只有当前函数能访问的变量,也可以将私有数据藏在闭包中。
形成闭包条件:
1.函数嵌套
2.将内部函数作为返回值返回
3.内部函数必须要使用到外部函数的变量

def fn():a = 10# 函数内部再定义一个函数def inner():print('我是fn2', a)# 将内部函数 inner作为返回值返回return inner
fn()()

5.匿名函数

lambda函数表达式专门用来创建一些简单的函数,他是函数创建的又一种方式。
语法:lambda 参数列表:返回值

def fn(a, b):return a + b
# 等价于上面的函数
lambda a,b : a+b# 运用场景
l = [1, 2, 3, 4, 5, 6, 7, 8, 9]
# filter()方法不会把你的参数怎么样,但它像HR一样,决定你的去留
r = filter(lambda i: i < 5, l)
print(list(r))# map()
# map()方法做逻辑运算(and or &)/运算符运算处理(+ - * /)
# 也就是map()一定会加工你的参数
# map()函数可以对可迭代对象中的所有元素做指定的操作,然后将其添加到一个新的对象中返回
r = map(lambda i : i**2, l)
print(list(r))

6.装饰器

通过装饰器,可以在不修改原来函数的情况下来对函数进行扩展。

def begin_end(old):"""用来对其他函数进行扩展:param old: 要扩展的函数对象:return:"""def new_function(*args, **kwargs):print("开始执行~")# 调用被扩展的函数result = old(*args, **kwargs)print('执行结束~')return new_function
@begin_end
def say_hello():print('大家好')
say_hello()

运行结果:
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/2668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何给word中的拼音加声调?分享3个方法

一&#xff0c;前言 在Word文档中标注拼音声调&#xff0c;是许多人在处理中文文档时经常需要面对的问题。对于不熟悉拼音的人来说&#xff0c;这可能会是一个挑战。但是&#xff0c;通过掌握一些简单的步骤和技巧&#xff0c;我们可以轻松地在Word文档中标注拼音声调。 二&a…

wsl2 中docker安装完毕后无法正常启动

wsl2 中docker安装完毕后无法正常启动 1、背景2、目标3、环境4、原因4、操作5.1、查看配置5.2、 切换配置5.3、启动docker5.4、验证docker 1、背景 在win10中安装wsl2体验linux操作系统&#xff0c;按照docker官网步骤安装&#xff0c;安装完毕后面提示 $ docker ps Cannot co…

云计算中的过度授权:安全隐患与应对策略

云计算凭借其弹性、可扩展等优势&#xff0c;已经成为诸多企业组织拓展业务的重要基础设施之一。然而&#xff0c;与传统IT架构相比&#xff0c;云计算环境的安全管理也面临着新的挑战。过度授权 (Overprivileging) 便是云安全领域亟待解决的主要问题之一&#xff0c;本文将带领…

为什么我的 Mac 运行缓慢以及如何使用CleanMyMac X修复它

近些年伴随着苹果生态的蓬勃发展&#xff0c;越来越多的用户开始尝试接触Mac电脑。然而很多人上手Mac后会发现&#xff0c;它的使用逻辑与Windows存在很多不同&#xff0c;而且随着使用时间的增加&#xff0c;一些奇奇怪怪的文件也会占据有限的磁盘空间&#xff0c;进而影响使用…

jasypt组件死锁bug案例分享

事故描述 1、上午9.55发布了一个Apollo动态配置参数&#xff1b; 2、片刻后&#xff0c;服务器接口开始出现大量的超时告警&#xff0c;似乎是某资源被耗尽不足分配&#xff1b; 3、正值业务请求高峰的上午十点&#xff08;平台上午10点会有一些活动会拉一波用户流量&#x…

HTML表单(详解网页表单如何实现)

目录 一、表单介绍 1.概念 二、表单用法 1.HTML表单 2.HTML 表单 - 输入元素 2.1.文本域&#xff08;Text Fields&#xff09; 2.2.密码字段 2.3.单选按钮&#xff08;Radio Buttons&#xff09; 2.4.复选框&#xff08;Checkboxes&#xff09; 2.5.提交按钮(Submit)…

人人都是开发者的时代,学编程还有用吗?

欢迎大家在 GitHub 上 Star 我们&#xff1a; 分布式全链路因果学习系统 OpenASCE: https://github.com/Open-All-Scale-Causal-Engine/OpenASCE 大模型驱动的知识图谱 OpenSPG: https://github.com/OpenSPG/openspg 大规模图学习系统 OpenAGL: https://github.com/TuGraph-…

检查*.bib参考文献是否重复

安装bibtexparser pip install bibtexparser 代码 import bibtexparser from difflib import SequenceMatcherdef parse_bib_file(filename):with open(filename, r, encodingutf-8) as bibfile:bib_database bibtexparser.load(bibfile)return bib_database.entriesdef fi…

【电控笔记5.10】Luenberger估测器

Luenberger估测计 单积分器:pi控制器的补偿 双积分器:使用pid控制器的补偿 除了受控厂跟传感器,其他都在mcu 去掉Rs就是一个PLL锁相环 带宽比PLL更大

齐护K210系列教程(九)_## 播放音频文件wav

播放音频文件wav 播放音频只支持带喇叭的型号&#xff1a;AIstart_掌机、AIstart_Mini AIstart可以播放SD卡中的wav音频文件&#xff0c;在编写程序前请将文件准备好存放到SD卡内。 注&#xff1a;播放wav格式音频&#xff1a;wav格式的音频频率不能超过16KHZ。 1&#xff0…

ui生成代码详细教程

被askmanyai的图生代码技术秀到了&#xff01;前端开发效率&#xff0c;提升到秒级 完全吊打了阿里的图生代码技术&#xff01; 上传一张网站图片或者UI稿&#xff0c;然后用askmanyai生成实现这个网站的代码的教程来啦&#xff01; 在askmanyai的中文网站上一分钟就能实现&…

simulink使用俩种方式封装(mask)画板/子系统的步骤

文章目录 创建子系统创建封装编制封装以参数控件方式封装以代码方式封装 添加约束效果 对封装概念不熟的可以看simulink封装概述&#xff0c;这是我简化的。我还是推荐看官方帮助文档 创建子系统 搭建一个简易的加法模型 &#xff0c;创建子系统 创建封装 右键-》封装-》创建封…

spring @value @configurationProperties比较

今天项目中需要使用数组的方式 来加载一批 配置 yml: xxxx: - xxxxx - xsssss javaBean Value("${xxxxx.xxxxx}") private List<String> xxxs; 启动时候报错&#xff0c;无法加载&#xff0c;TM试验了1个小时&#xff0c;我一开始想到是格式的问题&#x…

VirtualFlow亮相核反应堆技术全国重点实验室2024学术年会

为加强先进核能技术领域科技创新与应用&#xff0c;核反应堆技术全国重点实验室及先进核能技术全国重点实验室2024年学术年会在四川成都启幕&#xff0c;9名院士和近百家科研院所、高校和企业等近700名专家学者齐聚一堂&#xff0c;聚焦和探讨核反应堆及先进核能重大基础理论和…

震惊!小红书矩阵账号管理-批量发布笔记

“小红书引流软件矩阵工具-笔记批量发” 昨天&#xff0c;有个粉丝急匆匆地来找我&#xff0c;一脸焦急地说&#xff1a;“大佬&#xff0c;我现在运营着好几个小红书账号&#xff0c;每天都要发布内容&#xff0c;可把我忙坏了&#xff0c;有没有什么高效的管理方法啊&#xf…

【学习笔记二十五】EWM PPF自动WT后台配置和前台展示

一、概述 SAP EWM(Extended Warehouse Management)模块中的PPF(Post Processing Framework)是一个用于执行通用功能和流程的工具。PPF为SAP EWM提供了一个统一的接口,用于触发各种动作,例如打印托盘标签、交货单、拣选票或发送消息和传真。这些动作在特定条件满足时生成,…

电力作业平台车必备:防倾倒预警装置,智能守护你的工作

引言 在电力作业中&#xff0c;平台车作为一种重要的高空作业设备&#xff0c;广泛应用于线路检修、设备维护等工作场景。然而&#xff0c;平台车在高空作业过程中存在的倾倒风险&#xff0c;一直是困扰作业人员的难题。为了有效预防此类事故的发生&#xff0c;防倾倒预警装置…

电子温度计不准需要怎么处理?

电子温度计不准需要怎么处理&#xff1f; 首选将温度计完全浸入温度为0℃左右的水中&#xff0c;使温度计指示值与0℃相等&#xff0c;拿出测量待测物的温度。其次将温度计完全浸入温度为100℃左右的水中&#xff0c;使温度计指示值与100℃相等&#xff0c;拿出测量待测物的温…

男生一般穿什么裤子好看?五大爆款男装精选测评!

男生裤子要怎么选才能找到适合自己的裤子呢&#xff1f;这肯定是大家选裤子时经常出现的一个疑问了&#xff0c;现在的市面上虽然款式风格非常多&#xff0c;但是由于品牌鱼龙混杂的原因&#xff0c;不同的裤子质量也参差不齐。为了帮助各位男同胞能选到适合自己的裤子&#xf…

抖音老阳讲的选品师项目普通人能赚钱吗?

随着互联网的快速发展&#xff0c;电商行业也迎来了前所未有的繁荣。在这个背景下&#xff0c;选品师这一职业逐渐走进人们的视野。老阳作为行业内的知名人士&#xff0c;经常分享选品师的经验和项目。那么&#xff0c;普通人能否参与老阳讲的选品师项目并且赚钱吗?答案是肯定…