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

news2024/11/16 13:43:12

在这里插入图片描述

你好,我是安然无虞。

文章目录

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

在这里插入图片描述

函数

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

函数定义格式

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

说明一下:

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

多个返回值

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

def getSumAndDif(x, y):
    return x + y, x - y

a = 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 + val

print(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 = 10

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

Func() # x = 10

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

x = 10

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

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

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

x = 10

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

Func()
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.coloradmin.cn/o/1377725.html

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

相关文章

送水小程序开发:如何选择最适合的技术平台

选择最适合的技术平台对于开发送水小程序至关重要。在这篇文章中,我将为您介绍如何选择最适合的技术平台来开发送水小程序,以及各种技术平台的优缺点。无论您是刚刚起步的创业公司还是成熟的送水服务提供商,本文都将为您提供有关送水小程序开…

《BackTrader量化交易图解》第10章:Trade 交易操作

文章目录 10 Trade 交易操作10.1 量化回测分析流程10.2 Cerebro 类模块10.3 案例:Trade 交易10.4 实盘交易机器隐性规则10.5 Stake 交易数额和 Trade 交易执行价格 10 Trade 交易操作 10.1 量化回测分析流程 从本章开始讲解 BackTrader 的实盘操作。前面的章节讲过…

编译和链接(1)

目录 1. 程序的翻译环境和执行环境 2. 详解编译链接 2.1 翻译环境 2.2 编译本身也分为几个阶段: 2.3 运行环境 3. 预处理详解 3.1 预定义符号 3.2 #define 3.2.1 #define 定义标识符 3.2.2 #define 定义宏 3.2.3 #define 替换规则 3.2.4 #和## 1. 程序的翻译环境和执…

【昕宝爸爸小模块】深入浅出之Java 8中的 Stream

深入浅出之Java 8中的 Stream 一、🟢典型解析1.1 🟠Java 8中的Stream 都能做什么1.2 🟠Stream的创建 二、✅ Stream中间操作2.1 🟠Filter2.2 🟠Map2.3 🟠limit / skip2.4 🟠sorted2.5 &#x1…

基于LVGL编写的windows串口工具: LCOM

LCOM: Serial Port Tools based on LVGL (PC Software) 一直以来我都想用LVGL做一个真正意义上的PC软件,来验证或者表达LVGL出色的特性,现在我用LCOM做到了! LCOM 是一个基于LVGL编写的串口工具,界面简洁,功能出色&a…

构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的Nginx1.24.0的RPM包

本文适用:rhel8系列,或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期:2022-2023年 因系统版本不同,构建部署应略有差异,但本文未做细分,对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人…

二十四、同域名下JSESSIONID重叠导致退出

同域名下JSESSIONID重叠导致退出 近期在开发项目的时候发现,如果同域名的情况下,如果把一个单页面无登录系统嵌套进入另外一个系统,那么会出现相互退出的问题。 思考解决方案 一、清除掉嵌套的系统的JSESSIONID,意思就是嵌套系统不设置JSESSIONID 1找寻出问题接口 在无痕…

DHCP与时间同步

目录 一、DHCP 1、DHCP定义 1.什么是DHCP 2.DHCP的好处 3.DHCP的分配方式 4.为什么使用DHCP 5.DHCP模式 2、DHCP的工作过程 3、DHCP动态配置主机地址 1.DHCP服务的优点 2.可分配的地址信息 3.动态分配IP地址 二、时间同步 1、ntp 2、chrony 1、搭建本地本地时间…

011集:复制文件(包括exe、 jpg、png、Word、Excel和PPT等二进制文件)—python基础入门实例

在文本文件的内部以字符形式存储数据,字符是有编码的,例如GBK (简体中文) 、UTF-8等;在二进制文件的内部以字节形式存储数据、没有编码的概念。二进制文件较为常用,例如Windows中的exe、图片 (jpg、png等),以及Word、Excel和PPT等…

多语言生成式语言模型用于零样本跨语言事件论证提取(ACL2023)

1、写作动机: 经过预训练的生成式语言模型更好地捕捉实体之间的结构和依赖关系,因为模板提供了额外的声明性信息。先前工作中模板的设计是依赖于语言的,这使得很难将其扩展到零样本跨语言转移设置。 2、主要贡献: 作者提出了一…

d2l动手学深度学习】 Lesson 13 Dropout层 老板随机丢掉一些做项目的程序员‍,项目的效果会更好!(bushi)

文章目录 1. 什么是Dropout老板随机丢掉一些做项目的程序员🧑‍💻,项目的效果会更好! 2. 代码实现(不用torch)3. 代码实现(使用torch)3. 调节实验3.1 老师上课所设置的dropout1, dro…

探索 hasOwnProperty:处理对象属性的关键(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

问界又“翻车”了? 新能源电池“怕冷”成短板

文 | AUTO芯球 作者 | 李欣 2023年12月17日,蔚来创始人李斌亲自下场!驾驶ET7从上海出发,经过超14小时的行驶后,达成一块电池行驶超过1000公里的成绩,这一直播引起外界的广泛关注。 这不禁让人与”懂车帝冬测“联想到…

Vue3 的基本开发+新特性

Vue3 1.Vue3 1. Vue2 选项式 API vs Vue3 组合式API <script> export default {data(){return {count:0}},methods:{addCount(){this.count}} } </script> <script setup> import { ref } from vue const count ref(0) const addCount ()> count.val…

文件操作(你真的会读写文件吗?)

文章目录 一、为什么使用文件&#xff1f;二、什么是文件&#xff1f;2.1 程序文件2.2 数据文件2.3 文件名 三、二进制文件和文本文件3.1 二进制文件3.2 文本文件 四、文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 fopen和fclose 五、文件的顺序读写5.…

代码随想录刷题第四十八天| 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

代码随想录刷题第四十八天 今天是打家劫舍三部曲&#xff0c;最后一题树形dp有点难&#xff0c;其他还好 打家劫舍 (LC 198) 题目思路&#xff1a; 代码实现&#xff1a; class Solution:def rob(self, nums: List[int]) -> int:dp [0 for _ in range(len(nums)1)]dp[1…

Open3D 截取感兴趣的点云部分

import time import open3d as o3d; import numpy as np; import matplotlib.pyplot as plt from scipy.signal import find_peaks#坐标 mesh_coord_frame o3d.geometry.TriangleMesh.create_coordinate_frame(size355, origin[0, 0, 0]) #mesh_coord_frame mesh_coord_frame…

机器学习_实战框架

文章目录 介绍机器学习的实战框架1.定义问题2.收集数据和预处理(1).收集数据(2).数据可视化(3).数据清洗(4).特征工程(5).构建特征集和标签集(6).拆分训练集、验证集和测试集。 3.选择算法并建立模型4.训练模型5.模型的评估和优化 介绍机器学习的实战框架 一个机器学习项目从开…

UVa1308/LA2572 Viva Confetti

题目链接 本题是2002年ICPC亚洲区域赛金沢(日本)赛区的H题 题意 我已经把n个圆盘依次放到了桌面上。现按照放置顺序依次给出各个圆盘的圆心位置和半径&#xff0c;问最后有多少圆盘可见&#xff1f;如下图所示。 分析 《训练指南》的题解&#xff1a; 题目说“保证在对输入数据…

87.乐理基础-记号篇-反复记号(一)反复、跳房子

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;86.乐理基础-记号篇-速度记号-CSDN博客 首先是反复记号表总结图&#xff1a; 当前是写前两个记号&#xff0c;其余记号后面写&#xff1a;这些反复记号最主要的目的很简单&#xff0c;还是为了节约纸张&#xff0c…