复习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://xiahunao.cn/news/2979356.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

电子邮件格式怎么写?企业邮件格式正确的写法

电子邮件的写法&#xff0c;跟我们写书信差不多&#xff0c;也有标准格式和写法。电子邮件格式怎么写&#xff1f;电子邮件的完整内容包含&#xff1a;收件人、抄送&#xff08;可选&#xff09;、密送&#xff08;可选&#xff09;、主题、正文、附件&#xff08;可选&#xf…

通过使用XShell工具、Nginx环境实现服务器项目构建与发布

前言&#xff1a; 在信息化和数字化的今天&#xff0c;网站和应用的构建与发布已成为企业发展的重要一环。为了确保项目的顺利上线和稳定运行&#xff0c;选择合适的工具和环境至关重要。本文将详细介绍如何通过XShell工具以及Nginx环境来实现服务器项目的构建与发布&#xff0…

likede 表记录

order微服务 tb_order 表负责记录当前的订单信息 tb_order_collect 表记录当前点位的营收情况 由XXL-JOB通过es进行统计 tb_order_month_collect 表记录一个月供应商的收支情况 通过tb_order_collect 进行统计 production微服务 tb_job 补货警戒值的设置 &#xff08;目前来…

使用CSS3 + Vue3 + js-tool-big-box工具,实现炫酷五一倒计时动效

时间过得真是飞速&#xff0c;很快又要到一年一度的五一劳动节啦&#xff0c;今年五天假&#xff0c;做好准备了吗&#xff1f;今天我们用CSS3 Vue3 一个前端工具库 js-tool-big-box来实现一个炫酷的五一倒计时动效吧。 目录 1 先制作一个CSS3样式 2 Vue3功能提前准备 3…

数值分析复习:Richardson外推和Romberg算法

文章目录 Richardson外推Romberg&#xff08;龙贝格&#xff09;算法 本篇文章适合个人复习翻阅&#xff0c;不建议新手入门使用 本专栏&#xff1a;数值分析复习 的前置知识主要有&#xff1a;数学分析、高等代数、泛函分析 本节继续考虑数值积分问题 Richardson外推 命题&a…

使用Gitee进行社交登录的流程

使用Gitee进行社交登录 创建Gitee第三方应用流程&#xff1a; 鼠标移动到个人头像上&#xff0c;点击账号设置 点击账号设置&#xff0c;选择左边目录下数据管理的第三方应用 然后选择创建应用 根据要求填写 填写好了上面的要求之后&#xff0c;点击创建应用&#xff0c;这样&…

多项式和Bezier曲线拟合

目录 1. 多项式拟合2. Bezier曲线拟合3. 源码地址 1. 多项式拟合 在曲线拟合中&#xff0c;多项式拟合方法的性能受到三个主要因素的影响&#xff1a;采样点个数、多项式阶数和正则项。 采样点个数 N N N&#xff1a;从Figure 1中可以看出较少的采样点个数可能导致过拟合&…

【Linux】解决ubuntu20.04版本插入无线网卡没有wifi显示【无线网卡Realtek 8811cu】

ubuntu为Realtek 8811cu安装驱动&#xff0c;解决wifi连接问题 1、确认无线网卡的型号-Realtek 8810cu2、下载并配置驱动 一句话总结&#xff1a;先确定网卡的型号&#xff0c;然后根据网卡的型号区寻找对应的驱动下载&#xff0c;下载完成之后在ubuntu系统中进行编译&#xff…

RBA认证是什么?RBA认证的流程是怎么样的

RBA认证&#xff0c;即“责任商业联盟”认证&#xff0c;英文全称是Responsible Business Alliance。这是一个为电子行业或以电子为主要组成部分的行业及其供应链制定的社会责任审核标准。该标准旨在确保工作环境的安全、工人受到尊重并富有尊严、商业营运合乎环保性质并遵守道…

python 对图片进行操作

Pillow是一个强大的图像处理库&#xff0c;它提供了许多用于打开、操作和保存图像的功能。 Image模块&#xff1a; Image模块提供了用于打开、创建、编辑和保存图像的基本功能。可以使用Image.open()函数来打开图像文件&#xff0c;或者使用Image.new()函数来创建新的图像,还可…

用Python将原始边列表转换为邻接矩阵

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在图论和网络分析中&#xff0c;图是一种非常重要的数据结构&#xff0c;它由节点&#xff…

MATLAB中normxcorr2函数的用法(模板匹配和对象识别)

normxcorr2 是 MATLAB 中的一个函数&#xff0c;用于计算两个矩阵的归一化互相关。这个函数在图像处理和计算机视觉中特别有用&#xff0c;尤其是在模板匹配和对象识别方面。 函数签名 在 MATLAB 中&#xff0c;normxcorr2 函数的基本调用形式如下&#xff1a; C normxcorr…

虚拟现实(VR)的应用场景

虚拟现实&#xff08;VR&#xff09;技术创建和体验三维虚拟世界的计算机仿真技术。用户通过佩戴VR头显等设备&#xff0c;可以完全沉浸在虚拟世界中&#xff0c;并与虚拟世界中的物体进行交互。VR技术具有广泛的应用前景&#xff0c;可以应用于各行各业。以下是一些VR的应用场…

海康智能相机FTP本地存图流程

背景&#xff1a;近期一个新项目需要使用到智能相机&#xff0c;借助智能相机算法直接输出检测结果并将相机图像进行本地化保存和展示。由于申购目标智能相机未到&#xff0c;暂时使用测试智能相机。 目标智能相机型号&#xff1a;海康智能相机MV-SC3050XC 当前测试相机型号…

【Applied Algebra】隐藏子群问题和Shor算法的新视角

隐藏子群问题和Shor算法的新视角 隐藏子群问题是指给定一个群和一个函数,该函数对于群的一个子群是常数,并且对于子群的任何两个不同的左陪集有不同的值,问题是找到这个子群.HSP是许多量子算法的基础,其中最著名的是Shor的算法,它可以用来分解大整数和计算离散对数,这直接威胁到…

【sping】在logback-spring.xml 获取项目名称

在日志文件中我们想根据spring.application.name 创建出的文件夹。 也不想死在XML文件中。 application.yml spring:application:name: my-demo logback-spring.xml <springProperty name"application_name" scope"context" source"spring.app…

【Redis】Zset 数据类型

文章目录 常用命令zaddzcard & zcountzrange & zrevrangezpopmax & bzpopmaxzpopmin & bzpopminzrank & zrevrankzscore & zremzremrangebyrank & zremrangebyscorezincrby 多个集合间的交互命令交集 & zinterstore并集 & sunionstore 内部…

淘宝客链接转换接口阿里妈妈佣金转换:功能、使用与优缺点详解

淘宝客链接转换接口详解 随着互联网的发展&#xff0c;电子商务行业日益繁荣&#xff0c;淘宝作为国内最大的电商平台之一&#xff0c;其链接转换接口也受到了广泛关注。淘宝客链接转换接口是一种将淘宝商品链接转换成特定形式的短链接或推广链接的工具&#xff0c;方便用户进…

模版初阶【C++】

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…