python之函数(参数,匿名函数,局部变量和全局变量)

文章目录

  • 前言
  • 一、函数的参数
    • 1、形参和实参
    • 2、必传参数(也叫:必须参数)
    • 3、关键字传参
    • 4.、默认参数
    • 5、不定长参数
    • 6、传参的顺序
  • 二、匿名函数(lambda函数)
    • 1. 定义及特点语法格式
    • 2. lambda函数的特点
  • 三、函数返回值return
  • 四、局部变量与全局变量
    • 1. 局部变量
    • ​​​​​​​2. 全局变量
    • 3. 当全局变量遇到局部变量
    • 4. 用global在函数内部修改全局变量


前言

对于函数参数,这个地方,刚开始的时候,我根本没有理解到。我也是理解了很久,后面理解了,但是在使用过程中,其实也在出错。所以在这里就专门的总结一下。


一、函数的参数

1、形参和实参

形参:在我们定义函数的时候,括号里的参数就叫形参

实参:在我们调用函数的时候,传入的参数就是实参

 可以理解为:形参就是一个形式的参数,摆在那个位置作为一个形式的参数

其中,numb1和numb2就是形参;3和4就是实参。

形参是我们定义函数的时候有的,而实参是我们调用函数传入的。

2、必传参数(也叫:必须参数)

python函数参数大致可以分为4种,即必传参数,关键字参数,默认参数和不定长参数。先来说说必传参数,必传参数是在函数调用时必须要传入的参数,而且传入的实参要和定义时的形参位置要一一对应,不然会报错或者结果不符合预期。如下:

 

传入的实参和形参位置不对,结果不同。因此,对于必传参数来说,传入的实参个数和形参个数一定要相同,而且位置也要一一对应。

当然上面的例子是看不出来的,那么下面的这个例子就可以体现出来位置对应的重要性。

 

 

3、关键字传参

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时实参顺序与形参顺序不一致,因为 Python 解释器能够用参数名匹配参数值。如下:

 这种传参的方式是最推荐的,原因是:

(1)可以很明确的知道,这个函数里面的形参的名字是什么。

(2)无论参数的位置在哪里,都可以传对参数。

4、默认参数

在调用函数时,如果形参有默认值,而在传实参的时候没有对应的参数,则会取形参的默认值。如果传了,就以为实参的值为准。


使用默认参数是要特别注意**默认参数一定要放在命名参数(形参)后面,不然会报错。**如下:

 这个是解释器自动就捕捉到了错误。

5、不定长参数

当我们不确定要传入的参数个数时,可以使用不定长参数,不定长参数有两种格式,与上面两种参数略有不同,如下:

(1)*args:加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。


(2)**kargs: 加了两个星号 ** 的参数会以字典的形式导入,即key=value的形式


 注意:这个地方的产品,创始人,合伙人其实是个字典的key,可以理解为一个变量。这个变量是不能加引号的,如果加了就会报错。

 

 

6、传参的顺序

必传参数 > 默认参数 > *args >  **kwargs

注意:为什么要把默认参数放在第二个的位置呢?如果放在了最后的位置,那么默认参数永远都不会被修改,放到最后相当于是没有意义的。

二、匿名函数(lambda函数)

1. 定义及特点语法格式

所谓匿名函数,就是没有函数名,也就不需要用def关键字来定义,它只是一个表达式,比起def函数要简单的多,一般也只用于处理一些简单的逻辑。语法格式如下:

lambda 参数1,参数2,... 参数n: 表达式

#定义一个lambda函数,实现两个数的加法运算
sum_data = lambda a, b: a + b
print(sum_data(12, 3))
print(sum_data(4, -3))

 

2. lambda函数的特点


lambda函数以下几个特点:

(1)lambda 只是一个表达式,函数体比 def 简单很多
(2)lambda函数的主体是一个表达式,而不是代码块;也仅仅只能在lambda表达式中封装有限的逻辑
(3)lambda函数有自己的命名空间,不能访问表达式之外的参数
(4)在处理一些简单逻辑但又不想用def定义函数时,就可以使用lambda函数,如果处理的逻辑比较复杂代码比较多时,还是使用def较好。
 

三、函数返回值return

在编程规范里,函数都是有返回值的!上面说了函数是实现某一特定功能的代码块,既然是做一件事,那么就得有反馈结果,成功或者失败,亦或其他;就像 y=ax + b一样,只要你给一个x就会有一个对应的y返回。上面的反馈结果即就是函数的返回值。

不带return的函数,返回值为空

带return的函数


 

返回多个值
return可以同时返回多个值,下面函数有两个return语句,那么会返回两个值吗?

 答案是:不会。

 return语句的特点

(1)返回函数的结果值

(2)当函数执行return语句后就表示该函数已经执行完毕,不在执行后面的代码

(3)一个函数只能执行一次return

那么要返回两个值,怎么做呢?

那就需要把结果写在一个return里面

 注意:return 是以元组的形式返回值的

四、局部变量与全局变量

1. 局部变量

什么是局部变量呢?顾名思义,局部变量只能该函数内(局部)使用。有如下几个特点

(1)局部变量,是在函数内部定义的变量

(2)局部变量使用的范围是本函数内部,其他函数以及外部访问一律无效

(3)当函数被调用是,局部变量被创建,函数调用结束时,局部变量又被释放


如下:

def number():#定义局部变量a, ba = 1b = 2print(a, b)
#调用时局部变量生效
number()
#不调用时,进行外部访问无效
print(a, b)

 

2. 全局变量

那什么又是全局变量呢?全局变量与局部变量相反,即既能够在函数内部调用,也能在外部其他地方调用。如下

a = 1
b = 2
def number():#定义局部变量c,dc = 1d = 2#函数内部调用a,bsu = a + cst = b + dprint("su:", su)print("st:", st)
#调用函数
number()
#打印全局变量a,b
print("a b:", a, b)

 

 

3. 当全局变量遇到局部变量

先说结论,当局部变量和全局变量的变量名字一样时,局部变量的作用域以为局部变量值为准,此时改变局部变量的值不会影响全局变量的值,如下

 

4. 用global在函数内部修改全局变量

如果想在函数内部修改全局变量,怎么办?用global。**如果你在函数内部对某个变量使用了global,那么它就成为了全局变量,你在函数内部对它的任何修改都会作用于全局。**如下

 


部分内容转自优秀的博主:

python之函数_搬砖,攒路费的博客-CSDN博客


总结

以上就是平时使用中,容易混淆的地方。这次在这里专门总结出来,目的就是加深记忆。

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

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

相关文章

QT 5.14 和 VS2017脱机离线安装记录

QT 5.14是最后的离线安装版本,都推荐这个。看了下,官方建议搭配 VS2017/VS2015 VS版本对于QT,我一直偏好社区版,只要编译器就够了,自己加上SDK目录。因为大部分工作都是在QT内完成。VS2017的离线安装比较复杂&#xff…

Git常用命令submodule

Git常用命令submodule 1、需求 当程序比较大参与开发人员较多时,代码管理就复杂起来。代码如果全员可见,可以创建 share 分支维护共用代 码,可以创建 core 分支维护核心算法代码,各进程分别占一个分支,定期同步 sha…

vmware15下载与安装教程

VMware VMware是一款虚拟机软件,可以在同一台计算机上运行多个操作系统。VMware15是VMware公司推出的最新版本,具有更好的性能和稳定性,同时支持Windows、Mac以及Linux等多种操作系统。 以下是VMware15的下载安装教程: 下载VMw…

Win10—VMware15虚拟机安装教程

一、下载 下载地址VMware15(32/64)位下载地址,提取码: qvry 二、安装 解压缩如下: 双击exe运行 点击【下一步】 勾选【我接受条款协议中的条款】,然后点击【下一步】。 点击【更改】更改软件的安装目录&…

完全免费PNG素材库,免费可商用~

推荐的这几个PNG素材网一定要收藏~免费可商用~ 菜鸟图库 https://www.sucai999.com/searchlist/66008----all-0-1.html?vNTYxMjky 菜鸟图库是一个为新手设计师提供免费素材的网站,站内有非常多设计相关素材,比如平面模板、UI素材、电商素材、免抠素材…

VMware15虚拟机安装教程

​​​​​关注公众号,免费获取资料 简介: VMware(威睿) 是全球桌面到数据中心虚拟化解决方案的领导厂商。全球不同规模的客户依靠VMware来降低成本和运营费用、确保业务持续性、加强安全性并走向绿色。VMware使企业可以采用能够解…

【转】VMware15虚拟机安装教程

https://mp.weixin.qq.com/s/Rdj5AA7aVOzFDMnXeousWg (源于软件安装管家公众号) VMware15(32/64)位下载地址: pan.baidu.com/s/16_JlJ31R6wR8ja_f7o9kNw 提取码: 4c94 [Windows 10/64位下载链接]&#xff1…

VMware虚拟机安装win10系统教程(巨细)

VMware安装win10流程 第一章:创建新虚拟机 第二章:典型安装与自定义安装 ​ 典型安装与自定义安装的差别:通常设计人员使用自定义安装(高级)。 1. 典型安装: 这种安装方式将默认选项用于所有安装设置&…

七、进程地址空间

一、环境变量 (一)概念 环境变量(environment variables):系统当中用做特殊用途的系统变量。 如:我们在编写C/C代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可…

bmp图片怎么转jpg格式?思路提供

BMP和JPG是两种常见的图片格式。BMP文件相对较大,无损压缩,而JPG文件则相对较小,有损压缩。当我们需要在保持图片质量的同时减小文件大小时,我们可以将BMP文件转换为JPG文件。在本文中,我们将介绍如何将BMP文件转换为J…

Kotlin Channel系列(一)之读懂Channel每一行源码

文章目录 有话说概述初识ChannelChannel种类Channel五大金刚SendReceiveClosedQueueBuffer Channel的行为Channel源码分析发送数据大动脉接收数据大动脉父类默认实现方式(RendezvousChannel)发送流程send()函数onSend()函数 接收流程receiveCatching()函数onReceiveCatching()函…

WPF TextBox限制只能输入数字的两种方法

文本框中只能输入数字&#xff0c;一个常见的功能喽&#xff0c;今天就来看看如何实现它~ 下面就看看代码 思路都写在xaml里面了&#xff0c; MainWindow.xaml: <Window x:Class"wpfcore.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/pre…

centos安装etcd

方法1&#xff1a;默认安装&#xff08;不建议&#xff09; 运行命令 yum install etcd 即可&#xff0c;只是安装的etcd版本较低&#xff0c;一般是 etcd-3.3.11&#xff0c;如下图 手动开启etcd&#xff0c;可以看到etcd服务已经开启来了&#xff0c;如下图 特别注意&#x…

llama_index中query_engine的response_mode详解

文章目录 0. 前言1. ResponseMode: tree_summarize &#xff08;总结摘要-最优&#xff09;2. ResponseMode: generation3. ResponseMode: no_text4. ResponseMode: simple_summarize &#xff08;最省token&#xff09;5. ResponseMode: refine &#xff08;基于关键词询问-最…

遇见未来,降低职场焦虑——中国人民大学与加拿大女王大学金融硕士来助力

身在职场的你有感到一丝丝的焦虑吗&#xff1f;偶尔的小焦虑可以作为我们工作中的动力&#xff0c;时刻提醒我们保持奋进。预见未来才能遇见未来&#xff0c;随着社会经济不断发展&#xff0c;没有什么是一成不变的。处于职场上升期的我们更要懂得未雨绸缪&#xff0c;增加自身…

多种工厂模式的运用

文章目录 多种工厂模式的运用一、简单工厂模式&#xff08;非23种设计模式&#xff09;1.1 结构2.2 实现2.2.1 简单工厂类图2.2.2 代码2.2.3 优缺点 二、静态工厂模式&#xff08;非23种设计模式&#xff09;3.1 代码 三、工厂模式3.1 结构 3.2 实现3.2.1 工厂模式类图3.2.2 代…

EBU6304 Software Engineering 知识点总结_5 项目管理_上

Software architecture 功能需求和软件架构关系紧密&#xff0c;非功能需求是软件架构的选择结果&#xff08;好的架构运行效率高之类的&#xff09;。可以以表格或图的形式&#xff0c;比如UML图。 设计难以更改。敏捷开发的早期阶段就是设计系统架构。 好处&#xff1a; …

OGL(教程16)——基础贴图映射

原文地址&#xff1a;http://ogldev.atspace.co.uk/www/tutorial16/tutorial16.html 背景知识&#xff1a; 贴图的映射的意思是应用任何类型的图到3D模型的多个面上。这个图叫做纹理&#xff0c;它可以是任何东西。如砖头、树叶、贫瘠的土地&#xff0c;使用这些贴图增加场景的…

【UE4】官方课程笔记

【UE4】官方课程笔记 Blueprint Project Config project-specific settings Content content folder Intermidiate 可删除&#xff0c;暂时性文件 Saved 一旦删除不可恢复的文件 DDC DRIVE DATA CACHE C Project .sln文件 可删除&#xff0c;再次打开时recreated Sourc…

shader graph_在Shader Graph中使用表面梯度框架进行法线贴图合成

shader graph A recent Unity Labs paper introduces a new framework for blending normal maps that is easy and intuitive for both technical artists and graphics engineers. This approach overcomes several limitations of traditional methods.