Python小知识点:函数多个返回值与取值

Python函数返回多个值

可以这么写:

def add(a,b):
    return a,b

其实本质上来说应该是下面这个(因为ta其实返回的是一个元组)

def add(a,b):
    return (a,b)

注:按元组返回的时候可以不加括号()

如何获得函数的返回值?

第一个方法:

用切片取值

add(1,2)[0]
add(1,2)[1]

第二个方法:

用多个变量接受返回值:(推荐)

a,b = add(1,2)

2022年5月27日,关于返回值,追加几个小知识点:

1、不要把函数的多个返回值拆分到3个以上的变量中
2、对于函数返回的多个值,没有被变量捕获的,全放到一个加*的变量里
3、把返回值拆分到四个及以上的,很容易出错。尽量不要那么干。

例如:
我先定义一个函数,返回了6个值

def strs():
    str1 = "Hello"
    str2 = "World"
    return len(str1), len(str2),str1.upper(), str2.lower(),str1.count("l"),str2.count("W")

要获取这函数的6个返回值,那么按以前的写法是:

a,b,c,d,e,f = strs()

这样我就用abcdef这6个变量获取了strs()的6个返回值。

这样做会有什么问题呢?
1、顺序可能会搞错。使用返回值的时候得一个一个的对。这只是6个返回值,如果增加到16个呢?60个呢?出现bug的时候很难查。
2、调用函数并拆分函数的那句代码会很长,有可能会换行。让代码看起来很别扭。

那除了这种常规写法,还有其他写法么?

可以试试Python的unpacking机制
如:用一个带*号的变量,接受暂时用不到的返回值,用普通变量接受需要的返回值。

a ,*b,f = strs()#right

比如这里,我们需要返回值的第一个和最后一个,中间的不需要。则第一个返回值用a来接收,最后一个返回值用f来接收,其他不需要的用*b来接收。

如果需要*b里边的内容,可以用列表的取值方式将其取出
(注:*b本质是一个list列表。)

另外:一个赋值语句,不能有多个*的存在,也就是不能写成下面的方式,解释器会报错

a ,*b,c,*d,f = strs()#wrong

### Python 基础知识总结 #### 数据类型 Python 中的数据类型主要包括数字、字符串、列表、元组、字典等。对于数字而言,涵盖了整型(int)、浮点型(float)、布尔型(bool),还有复数(complex)[^3]。 - **整型 (int)** 整型表示的是不带小数部分的数值,在 Python 中支持任意大小的整数运算,即具有无限精度特性。 - **浮点型 (float)** 浮点数用于存储带有小数点的数值,默认情况下相当于双精度(double precision),大约能保持16位有效数字;如果需要更高精度的话,可以通过 `decimal` 模块来实现更精确的小数计算。 - **布尔型 (bool)** 这是一种特殊的整数子类,只有两个取值:`True` 和 `False`。值得注意的是,在某些场景下它们会被当作普通的整数处理——具体来说,`True` 被视为等于1而 `False` 则对应于0。因此像 `True == 1` 或者 `True + True == 2` 的表达式都是成立的。 - **复数 (complex)** 复数由实部(real part)和虚部(imaginary part)组成,两者皆为浮点形式。创建一个复数对象可以直接通过指定其实部虚部的方式完成,比如 `c = complex(3, 4)` 表示的就是 \( c=3+4i \)。 #### 变量赋值操作符 变量无需声明其数据类型即可直接被赋予任何类型的值,并且可以在程序运行期间改变所持有的值及其类型。此外,Python 提供了一系列丰富的内置算术、比较及逻辑运算符来进行各种各样的操作[^1]。 ```python a = 5 # int 类型 b = 7.8 # float 类型 is_valid = False # bool 类型 d = a + b * is_valid # 结果取决于 is_valid 的真假情况 print(d) ``` #### 控制结构 控制流语句允许编写条件执行代码块或者循环重复特定动作直到满足给定条件为止。常见的有if...elif...else分支判断以及for/while循环体。 ```python number = 9 if number % 2 == 0: print('Even') else: print('Odd') for i in range(5): print(i) countdown = 3 while countdown > 0: print(countdown) countdown -= 1 ``` #### 函数定义 函数是一段可重用的代码片段,用来封装一组指令以便次调用而不必每次都重新书写相同的逻辑。使用def关键字开始定义一个新的函数,并为其命名参数列表和返回值说明。 ```python def greet(name='World'): message = f'Hello {name}!' return message greeting = greet() print(greeting) ``` #### 错误处理机制 当遇到异常状况Python会抛出错误信息帮助开发者定位并解决问题。利用try-except-finally语法结构能够优雅地捕获潜在的风险点从而提高应用程序健壮性和用户体验感。 ```python try: result = 1 / 0 except ZeroDivisionError as e: print(f"Caught an exception: {e}") finally: print("This will always execute.") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值