日常学习(2)-- 当在python中,函数名称与内置函数名称一致,优先调用内置函数

--如果你有梦想,并且敢于行动,那么什么时候都不算晚

今天看到这么一道题,题的大意是,求出一个列表的最大值,具体详情代码如下:

def max(list):
    if len(list) == 2:
        return list[0] if list[0] > list[1] else list[1]
    sub_max = max(list[1:])
    return list[0] if list[0] > sub_max else sub_max 

首先我创建了一个函数max(),单看名字,就已经很显而易见了,是想求出一个最大值。

并且形参部分,是接收了一个列表,然后,如果当这个列表值的数量,等于两个,那么就直接在第二行执行return,利用后面的三元表达式写法,输入二者之间的最大值

另外这里多解释一下,这个三元表达式的运算,也可以换成下面的写法:

return list[0] if list[0] > list[1] else list[1]

# 可以平替为

if list[0] > list[1]:
    return list[0]
else:
    return list[1]

 简单来说,就是左右两边分别是待输出的值,中间是条件,但是具体会输出哪一个值,主要是看是否满足条件,满足,输出前面的,否则输出后面的

ok,然后我们说回正题,如果当整个列表的长度,也就是列表内的值超过两个后,那么执行第四行的语句,是一个最简单的赋值问题,但是我当时看到这里的时候,突然就恍惚了一下,因为我发现这个max(),既像max()的内置方法,又像定义的max()函数,所以这里,他到底是想调用谁呢?

然后后来我也是查了一些资料,才发现,如果函数的名字和内置方法的名字冲突后,他还是会优先去调用内置方法,所以这里的解释,也就是说第四行代码,首先执行了max()的内置方法,求出了整个列表除去第一个数据以外所有值的最大值,然后将这个最大值,赋值给了sub_max变量

然后代码来到第五行,又是一个很简单的三元运算,判断到底是整个列表的第一个数据list[0]大,还是sub_max比较大,然后输出满足条件的那一个

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值