啥,凭什么Python中函数的返回值可以有多个?

在这里插入图片描述

你好,我是安然无虞。

文章目录

  • 函数
    • 函数定义格式
    • 函数调用
    • 默认参数和变长参数
      • 默认参数
      • 变长参数
    • 变量的作用域

在这里插入图片描述

函数

编程语言中的函数,是一段可以被重复使用的代码片段,使用函数能够减少冗余的代码。

函数定义格式

def 函数名(形参列表):函数体return语句

说明一下:

  • 一个函数可以有一个或者多个形参,也可以没有形参
  • 一个函数中可以有一个或者多个return语句,执行到return语句时函数会立即执行结束,返回到调用位置
  • Python是动态类型语言,函数的形参和返回值都不必指定类型,因此一个函数可以支持多种不同类型的参数

多个返回值

Python中的函数可以有一个或者多个返回值,当有多个返回值时,使用 , 进行分隔。比如:

def getSumAndDif(x, y):return x + y, x - ya = 10
b = 20
sum, dif = getSumAndDif(a, b)print(f'{a} + {b} = {sum}, {a} - {b} = {dif}')

说明一下:

  • Python当中一个函数可以返回多个值,本质是多元赋值所支持的。

如果函数调用者只想关注该函数的部分返回值,那么可以使用 _ 来忽略不想要的返回值。比如:

_, dif = getSumAndDif(1, 2)
print(dif)

函数调用

关于函数调用格式和调用方式与C/C++等语言相差不多,在这里就不过多阐述了,当然,这里比较难以理解的当属“递归”了,这是一个老生常谈的话题了,我之前也专门写过递归文章,看的老铁也比较多,感兴趣的老铁可以看这两篇:

蓝桥杯算法竞赛系列第二章——深入理解重难点之递归(上)

蓝桥杯算法竞赛系列第二章——深入理解重难点之递归(下)

默认参数和变长参数

默认参数

给函数的形参指定默认值,在调用函数时可以不必给带有默认值的形参传参,此时该形参将会使用我们指定的默认值。

注意一下:

  • 带有默认值的形参应该放在没有默认值的右侧

代码示例:

def Add(data, val = 1):return data + valprint(Add(10)) # 11
print(Add(10, 2)) # 12

变长参数

如果想让函数接受任意多个参数,可以在函数定义的形参名称前加上 * ,这时函数将会接受一个参数元组,并且我们可以以形参名[下标]的方式相应的访问传入的各个实参。比如:

def Func(*args):n = len(args)for i in range(n):print(args[i])Func(1)
Func(1, 2, 3)

变量的作用域

函数操作全局变量

需要注意的是,如果在函数内部尝试访问的变量不存在,就会尝试去全局作用域中查找。比如:

x = 10def Func():print(f'x = {x}')Func() # x = 10

但是如果想要在函数内部修改全局变量的值,就需要使用global关键字进行声明。比如:

x = 10def Func():global x # 声明x = 20print(f'函数内部:x = {x}') # x = 20Func()
print(f'函数外部:x = {x}') # x = 20

如果在函数内部修改全局变量时没有使用global进行声明,那么此时Python解释器会认为你想在函数内部创建一个同名的局部变量,此时你的修改操作就不会影响到全局变量。比如:

x = 10def Func():# global x x = 20print(f'函数内部:x = {x}') # x = 20Func()
print(f'函数外部:x = {x}') # x = 10

If、for、while中的变量

Python中的If、for、while等语句块不会影响变量的作用域,因此在这些语句块中定义的变量,也可以在外面正常使用。比如:

for i in range(10):print(f'函数内部:i = {i}')print(f'函数外部:i = {i}') # i = 9
遇见安然遇见你,不负代码不负卿。
谢谢老铁的时间,咱们下篇再见~

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

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

相关文章

行为型设计模式——策略模式

策略模式 策略模式非常简单,只需要将策略或者某个算法定义成一个类,然后传给需要使用的对象即可。**定义:**该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算…

电力能源监测管理系统,在医院中有哪些作用?

随着经济全球化的发展,节能减排成为当前社会发展必须关注的问题。电力能源监测管理系统,可以分析电力管理能源的现状,并根据现状提出对应的策略,为快速高效建成绿色智能化医院提供有力支撑和技术保障。 医院能源管理现状 1、人力…

2024云服务器哪家好?阿里云、腾讯云、华为云

作为多年站长使市面上大多数的云厂商的云服务器都使用过,很多特价云服务器都是新用户专享的,本文有老用户特价云服务器,阿腾云atengyun.com有多个网站、小程序等,国内头部云厂商阿里云、腾讯云、华为云、UCloud、京东云都有用过&a…

数字集成系统设计——物理设计

目录 一、布局规划 1.1 规划 1.2 I/O单元 1.3 电源网络 1.3.1 要求 1.3.2 网络架构 1.3.3 混合信号芯片示例 1.4 布局 二、时钟分布 2.1 时钟偏斜 2.2 时钟分布网络 2.3 时钟树综合 2.4 时钟树收敛 三、布线与参数提取 3.1 布线(Routing) 3.2 布线规则示例 …

Handsfree_ros_imu:ROS机器人IMU模块ARHS姿态传感器(A9)Liunx系统Ubuntu20.04学习启动和运行教程

这个是篇学习 Handsfree_ros_imu 传感器的博客记录 官方教程链接见: https://docs.taobotics.com/docs/hfi-imu/ 产品功能 IMU 内有 加速度计,陀螺仪,磁力计这些传感器,通过固定 imu 到物体上后,可以获取物体在运动…

虚拟机Ubuntu网络配置

电脑有两个系统,windows系统和ubuntu系统,那网卡到底给哪一个用呢,所以要选择桥接模式,就可以共用网卡 但是我们电脑网卡,有线网卡,无线网卡,到底使用哪个网卡,所以选择桥接到自动或…

一文玩转Go语言中的面向对象编程~

温故而知新:什么是面向对象 面向对象(Object-Oriented)是一种计算机编程的方法和思想,它将程序中的数据(对象)和操作(方法)组织成一个个相互关联和交互的对象。对象是现实世界中的事…

Find My游戏手柄|苹果Find My技术与手柄结合,智能防丢,全球定位

游戏手柄是一种常见电子游戏机的部件,通过操纵其按钮等,实现对游戏虚拟角色的控制。随着游戏设备硬件的升级换代,现代游戏手柄又增加了:类比摇杆(方向及视角),扳机键以及HOME菜单键等。现在的游…

活动 | Mint Blockchain 将于 2024 年 1 月 17 号启动 MintID 限量发行活动

MintID 是 Mint Blockchain 生态的超级权益卡,用于探索 NFT PASS 在未来各种应用场景下的可能性。MintID 将通过限时限量有价发售的方式对外释放,持有人将成为 Mint Blockchain 的核心权益用户。 MintID 总量:10,000 枚 铸造价格&#xff1a…

多无人机集群智能flocking

matlab2020可运行 GitHub - pareshbhambhani/MultiAgent-Flocking-framework: This is part of the current research I am working on.

window系统安装MySQL

一、下载 MySQL 官网在线下载: https://www.mysql.com/ 二、开始安装 2.1 安装类型选项 developer default(开发者默认):安装 mysql 开发所需的所有产品 server only(服务器):只安装 mysql 服…

VUE指令(一)

vue会根据不同的指令,针对不同的标签实现不同的功能。指令是带有 v- 前缀的特殊标签属性。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。 1、v-text:设置元素的文本内容,不会解…