Python程序设计基础:函数(二)

news2024/11/24 22:29:26

文章目录

  • 一、lambda()函数
  • 二、递归函数
  • 三、变量的作用域

一、lambda()函数

lambda()函数是一种简便的,将函数定义在同一行的函数方法。lambda()实际上生成了一个函数对象(匿名函数),它主要用于需要函数对象作为参数或函数比较简单且使用一次的场合。
lambda()函数的语法格式如下:

lambda 参数1,参数2...:<函数语句>

该函数的返回值即为函数语句的计算结果,且只能为一条语句。例如:

lambda x,y:x+y

在上式中,形参为x和y,函数的返回结果为x+y。
在这里插入图片描述
在前面有介绍过针对字典按照键进行排序,若要按照值进行排序,可以将lambda函数和sorted()函数结合起来使用。
在这里插入图片描述
在上述实例中,sorted()函数中存在两个参数,前面一个为需要进行排序的字典条目,后面一个key表示在排序时指定的排序关键字,而lambda()函数则是将字典中每个条目的值提取出来,然后结合key作为排序的对象。

二、递归函数

递归是指将相同的方式重复进行的过程,而递归函数则是在给定终止条件下,函数不断调用自身的过程,其中最常见的是求阶乘的过程。
在非负整数的前提下,当n等于1时,n的阶乘为1,当n大于等于1时,n为所有小于等于n的正整数的成绩,即n!,而对于n而言,n的阶乘又可以视作n与n-1的阶乘相乘,即n!=n*(n-1)!,这一乘法过程为递归重复进行。将其用python语言进行编写,内容如下:
在这里插入图片描述
在上述实例中,当n取值为1时,函数fun()返回结果为1,当n大于1时,将取其阶乘转化为求n-1的阶乘,直至最后n取值为1,该过程为递归过程,最后的终止条件为n==1。

除了上述例子外,常见的还有利用递归函数求斐波拉契数列,在斐波拉契数列中,前两个数均为1,从第三个数开始,每个数均等于前两个数之和,按照上述递归的思路,当n取值为1或2时,递归结束,当n大于2时,n=n-1+n-2,可视作求n-1和n-2,此时参数n取值不断变小,最后收敛至n取值为1和2,具体过程如下:
在这里插入图片描述

三、变量的作用域

在程序的编写过程中,我们通常需要定义相关的变量,在程序运行的过程中会对这些变量进行访问,但是变量并不是在程序中的所有位置都可以进行访问,访问权限取决于该变量是在哪里进行赋值的。
每个变量都存在自己的作用域,作用域意味着该变量在哪些位置可以被访问,哪些位置不可以被访问,两种基本的变量作用域为“局部变量”和“全局变量”。

局部变量
局部变量和函数是直接相关的,它通常被定义在函数的内部,每次函数调用都会创建一个新的作用域,此时可以在该作用域内访问局部变量,当从函数外部进行访问时,该变量会访问失败。
在这里插入图片描述
在上图中,x是在函数内部定义的局部变量,因此当从外部进行访问时,会出现代码报错,报错内容为x变量未被定义。

全部变量
和局部变量相对应,全部变量即为创建在函数外部,即程序主体部分的变量,它是全局可见的。
在这里插入图片描述
在上图中,x=1为全局变量,因此函数内部可以访问x,并返回x+x的计算结果,同时外部也可以直接使用print读取x的值并输出。

全局变量和局部变量同名
存在一种全部变量和局部变量同名的情况,此时在函数内部会优先访问局部变量。
在这里插入图片描述
在上图中,同时定义了局部变量x=2和全局变量x=1,函数f()可以同时访问这两个变量,此时这两个变量同名,因此在函数f()运行时会优先访问局部变量x=2,即第一个输出为2+2,而当从外部直接访问x时,访问的为全局变量,即x输出为1.

要想在上述情况下函数内先访问全局变量,只需要使用关键字global声明即可。
在这里插入图片描述
在上图函数中首先使用global访问全部变量x=1,然后使用x=2对x重新进行赋值,因此此时全局变量x取值变成了2,即第一个输出为2+2,第二个输出全局变量x也为2。

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

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

相关文章

实时安全分析监控加强网络安全

网络犯罪分子只需几分钟&#xff0c;有时甚至几秒钟即可泄露敏感数据。但是&#xff0c;IT 团队可能无法在数周内发现这些违规行为。通常&#xff0c;这些违规行为是由外部方或客户发现的&#xff0c;到那时为时已晚。随着网络漏洞的激增&#xff0c;对安全分析的需求空前高涨。…

运行python安装包没找到

一、错误信息 ImportError: dlopen(/Users/menghuiding/Library/Python/3.8/lib/python/site-packages/PIL/_imaging.cpython-38-darwin.so, 0x0002): tried: /Users/menghuiding/Library/Python/3.8/lib/python/site-packages/PIL/_imaging.cpython-38-darwin.so (mach-o fil…

less基本使用

1 less中的变量 //对值进行声明 link-color: #ccc//定义变量名称 .{sleName} {}bg: background-color; //定义属性名称 .container {{bg}: red; }2 继承&#xff08;复用重复样式&#xff09; //继承必须位于选择器最后 //继承选择器名不能为变量 .a:hover:extend(.b) {}.a {…

使用ggplot2绘制热图(1)

#使用ggplot2绘制热图 library(ggplot2) #清空 rm(listls()) gc() # 创建数据集 data <- mtcars # 计算相关系数矩阵 cor_matrix <- cor(data) # 将相关系数矩阵转换为长格式&#xff08;用于绘制热图&#xff09; cor_data <- reshape2::melt(cor_matrix) str(cor_da…

揭秘国产chatGPT大语言模型能力PK之001:ChatGLM1-2

一、问题清单: 1.我女朋友的老公应该叫我什么&#xff1f; 2.为什么我的女朋友还有老公&#xff1f; 3.你觉得我应该怎么做&#xff1f; 4.我想要获得爱情&#xff0c;我女朋友也爱我&#xff0c;我女朋友也爱她的老公&#xff0c;但他的老公恨我&#xff0c;我该怎么办&am…

基于微服务+Java+Spring Cloud +Vue+UniApp +MySql实现的智慧工地云平台源码

基于微服务JavaSpring Cloud VueUniApp MySql开发的智慧工地云平台源码 智慧工地概念&#xff1a; 智慧工地就是互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;然后以物联网、移动互联网技术为基础&#xff0c;充分应用BIM、大数据、人工智能、移…

【深度学习】NLP中的对抗训练

在NLP中&#xff0c;对抗训练往往都是针对嵌入层&#xff08;包括词嵌入&#xff0c;位置嵌入&#xff0c;segment嵌入等等&#xff09;开展的&#xff0c;思想很简单&#xff0c;即针对嵌入层添加干扰&#xff0c;从而提高模型的鲁棒性和泛化能力&#xff0c;下面结合具体代码…

剑指offer(C++)-JZ56:数组中只出现一次的两个数字(算法-位运算)

作者&#xff1a;翟天保Steven 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 题目描述&#xff1a; 一个整型数组里除了两个数字只出现一次&#xff0c;其他的数字都出现了两次。请写程序找出这两个只出现一…

DoIP学习笔记系列:(五)“安全认证”的.dll从何而来?

文章目录 1. “安全认证”的.dll从何而来?1.1 .dll文件base1.2 增加客户需求算法传送门 DoIP学习笔记系列:导航篇 1. “安全认证”的.dll从何而来? 无论是用CANoe还是VFlash,亦或是编辑cdd文件,都需要加载一个与$27服务相关的.dll(Windows的动态库文件),这个文件是从哪…

ES踩坑记录之UNASSIGNED分片无法恢复

问题背景 换节点 我们线上有一套ES集群&#xff0c;三台机器&#xff0c;共运行了6个节点。一直在线上跑了几个月也一直没出什么问题。然而好巧不巧&#xff0c;就在昨天&#xff0c;集群中的3号节点磁盘出现故障&#xff0c;导致机器直接瘫痪。本来大家觉得问题不大&#xf…

Lua学习记录

Lua基础了解 Lua的注释通过 (-- 单行注释&#xff0c;--[[ ]] 多行注释)可以不加&#xff1b; 多个变量赋值&#xff0c;按顺序赋值&#xff0c;没有则为nil&#xff1b; function的简单用法&#xff0c;多个返回值配合多重赋值&#xff0c;以end为结束标志 Lua下标从1开始&…

R语言生存分析(机器学习)(1)——GBM(梯度提升机)

GBM是一种集成学习算法&#xff0c;它结合了多个弱学习器&#xff08;通常是决策树&#xff09;来构建一个强大的预测模型。GBM使用“Boosting”的技术来训练弱学习器&#xff0c;这种技术是一个迭代的过程&#xff0c;每一轮都会关注之前轮次中预测效果较差的样本&#xff0c;…

二叉树题目:二叉树的直径

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;二叉树的直径 出处&#xff1a;543. 二叉树的直径 难度 3 级 题目描述 要求 给定二叉树的根结点 root \texttt{root} root&#xff0c;返回其直径…

Docker 基本管理(一)

目录 一、虚拟化简介 1.1.虚拟化概述 1.2.cpu的时间分片&#xff08;cpu虚拟化&#xff09; 1.3.cpu虚拟化性性能瓶颈 1.4.虚拟化工作原理 1.5 虚拟化类型 1.6 虚拟化功能 ​二、Docker容器概述 2.1 docker是什么&#xff1f; 2.2 使用docker有什么意义&#xff…

nginx上web服务的基本安全优化、服务性能优化、访问日志优化、目录资源优化和防盗链配置简介

一.基本安全优化 1.隐藏nginx软件版本信息 2.更改源码来隐藏软件名和版本 &#xff08;1&#xff09;修改第一个文件&#xff08;核心头文件&#xff09;&#xff0c;在nginx安装目录下找到这个文件并修改 &#xff08;2&#xff09;第二个文件 &#xff08;3&#xff09;…

算法通过村第三关-数组青铜笔记|单调数组

文章目录 前言单调数组问题搜索插入位置&#xff1a;数组合并问题&#xff1a;总结 前言 提示&#xff1a;本份真诚面对自己、坦然无碍面对他人&#xff0c;就是优雅。 数组中的比较经典性问题: 单调数组问题数组合并问题 单调数组问题 参考例子&#xff1a;896. 单调数列…

【BEV Review】论文 Delving into the Devils of Bird’s-eye-view 2022-9 笔记

背景 一般来说&#xff0c;自动驾驶车辆的视觉传感器&#xff08;比如摄像头&#xff09;安装在车身上方或者车内后视镜上。无论哪个位置&#xff0c;摄像头所得到的都是真实世界在透视视图&#xff08;Perspective View&#xff09;下的投影&#xff08;世界坐标系到图像坐标系…

Docker数据卷容器

1.数据卷容器介绍 即使数据卷容器c3挂掉也不会影响c1和c2通信。 2.配置数据卷容器 创建启动c3数据卷容器&#xff0c;使用-v参数设置数据卷。volume为目录&#xff0c;这种方式数据卷目录就不用写了&#xff0c;直接写宿主机目录。 创建c1、c2容器&#xff0c;使用–volum…

MapStruct 中 Java Bean 映射代码生成器的基本使用

文章目录 一、简介&#xff1a;二、背景&#xff1a;三、相关概念&#xff1a;1、映射器&#xff08;Mapper&#xff09;&#xff1a;2、映射方法&#xff08;Mapping Method&#xff09;&#xff1a;3、常规映射方法&#xff08;Regular Mapping Method&#xff09;&#xff1…

多功能杆在智慧农业中的应用

随着农业现代化发展&#xff0c;农业生产和管理不断运用越来越多新技术、新设施&#xff0c;以提高农业生产的综合效率、产品质量&#xff0c;降低管理经营成本。诸如数字化监测、物联网管理、5G远程控制&#xff0c;以及本次我们为大家介绍的多功能智慧杆系统。 多功能智慧杆拥…