Python的函数是可以return多个值的,但其本质上还是返回单个值,只是利用了tuple的自动打包,将多个值打包成单个tuple返回。

使用代码验证:

def func_a():
return 1, 2, 3, 4 if __name__ == '__main__':
temp = func_a()
print(type(temp))

运行结果,确认返回的是一个tuple,

<class 'tuple'>

稍微修改代码:

def func_a(*args):
return 1, 2, 3, 4 if __name__ == '__main__':
a, b, c, d = func_a()
print(a, b, c, d)

代码中利用了tuple的自动解包,将tuple的值分别赋值给了a, b, c, d四个变量,实现返回多个值

既然知道实际上Python返回多个值的本质是返回tuple,再自动解包赋值给N个变量,那要实现返回任意多个值,只要手动返回一个tuple就可以了,tuple内元素的数量可以自定:

def func_a(*args):
return tuple(arg * 2 for arg in args) if __name__ == '__main__':
a, b, c, d = func_a(1, 2, 3, 4)
print(a, b, c, d)

代码中,将传入的参数值 x 2后,转换成tuple返回,再利用tuple的自动解包赋值给多个变量,从而实现函数返回不定数量的值。

这里需要注意,当返单个值时,不需要再手动返回一个tuple,所以修改代码如下:

def func_a(*args):
temp = tuple(arg * 2 for arg in args)
return temp if len(temp) > 1 else temp[0] if __name__ == '__main__':
a, b, c, d = func_a(1, 2, 3, 4)
print(a, b, c, d)
e = func_a('Hello')
print(e)

Python函数返回不定数量的值的更多相关文章

  1. [python]函数返回多个return值

    python支持函数直接返回多个变量,具体用法如下: >>> def test(): ... a=2 ... b=3 ... return a,b ... >>> ...

  2. Python 函数返回多值

    返回多值函数可以返回多个值吗?答案是肯定的.比如在游戏中经常需要从一个点移动到另一个点,给出坐标.位移和角度,就可以计算出新的坐标:# math包提供了sin()和 cos()函数,我们先用impor ...

  3. python函数返回值

    2016-08-09  15:01:38 python函数返回值使用return语句,可以返回任意类型的数.如果return语句执行,它之后的所有语句都不再执行. def func(x,y): pri ...

  4. Python 函数返回值

    本章详细介绍 返回值: 0x 00 返回值简介 0x 01 指定返回值与隐含返回值 0x 02 return 语句位置与多条 return 语句 0x 03 返回值类型 0x 04 函数嵌套 0x 0 ...

  5. Python 函数返回值、作用域

    函数返回值 多条return语句: def guess(x): if x > 3: return "> 3" else: return "<= 3&qu ...

  6. python 函数返回多个参数的赋值方法

    #定义函数 def Get_Counter_AllMeasureValue(self, inst_dg_address): """ get all measure val ...

  7. nodejs如何从异步回调函数返回想要的值

    const fs = require('fs') let read=()=>{ fs.readFile("./contents/test.json",(err,data)=& ...

  8. python 函数返回值笔记

    今天学习python时候学习到闭包和柯里化 感觉看概念时候不好理解,自己写下大概就明白点了 柯里化如下 定义一个加法函数 def add(x, y): return x + y 这是没有柯里化之前的函 ...

  9. day09 python函数 返回值 参数

    day09 python   一.函数     1.函数         函数是对功能的封装         语法:         定义函数:             def 函数名(形参):    ...

随机推荐

  1. Python操作 Memcache、Redis、RabbitMQ

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  2. 用python的requests第三方模块抓取王者荣耀所有英雄的皮肤

    本文使用python的第三方模块requests爬取王者荣耀所有英雄的图片,并将图片按每个英雄为一个目录存入文件夹中,方便用作桌面壁纸 下面时具体的代码,已通过python3.6测试,可以成功运行: ...

  3. Java 代码学习之数组的初始化

    我们都很熟悉Java中的数组,它具有查询快,增删慢的特点.但是通常我们自认为很了解它的用法,却容易忽略一些小细节.今天通过一段代码来简单了解数组初始化中的一些我们容易忽略的地方. package da ...

  4. Linux用户管理的复习时间

    所谓三天不练手生,你还记得关于Linux用户管理的所有知识吗?现在就来跟我一起复习一下吧! 1.常用配置文件 用户信息文件: /etc/password 密码文件: /etc/shadow 用户组文件 ...

  5. 阿里云服务器部署php的laravel项目,在阿里云买ECS 搭建 Linux+Nginx+Mysql+PHP环境的

    在阿里云买ECS的时候选择自己习惯的镜像系统,我一般都是使用Linux Ubuntu,所以,以下的配置都是在Ubuntu 14.04稳定支持版的环境中搭建Linux+Nginx+Mysql+PHP环境 ...

  6. 使用AOP记录应用调用链开销

    最近系统出现了一次线上的性能问题,本来以为目前的QPS应该是不会出现任何问题的,结果微服务还是比较容易因为某个点的问题导致雪崩的...出了性能问题就要做分析,正统的思路是要不断进行压测用JProfil ...

  7. Oracle中用户(User)和模式(Schema)的概念

    数据库理论中数据库用户和数据库模式并没有必定的联系.具体的数据库模式解释能够在这里找到: http://stackoverflow.com/questions/2674222/what-is-purp ...

  8. HTTP请求中怎样选择Get和Post方式

    在应用中最经常使用的Http请求无非是get和post,get请求能够获取静态页面,也能够把參数放在URL字串后面,传递给servlet.post与get的不同之处在于post的參数不是放在URL字串 ...

  9. 三、Spring Boot 多数据源配置

    下面一个Java类是已经写好的根据配置文件动态创建多dataSource的代码,其原理也很简单,就是读取配置文件,根据配置文件中配置的数据源数量,动态创建dataSource并注册到Spring中. ...

  10. 自学WPF之Binding(二)

    没有Source的Binding,使用ContentText作为Binding源: 上一篇是把CLR类型对象当作指定为Binding的Source,两种方法:一是把对象赋值给Binding.Sourc ...