每天进步一点点:原来Python不支持函数重载

in #cn5 years ago

今天在编写Python脚本时遇到一个问题,我写一个了函数实现了一些功能,假设这个函数为func_A()。


(图源 :pixabay)

def func_A(var_1, var_2, var_3,var_4):

但是其实var_1、var_2, var3,,var_4是一组高度相关的数据,所以我打算把它们放到一个字典(dictionary)中vars,然后实现一个函数直接处理这个字典。

我首先想到的就是重载 func_A,定义如下:

def func_A(vars):

然后实现中调用原本的之前的函数:

return func_A(vars["var1"], vars["var2"], vars["var3"], vars["var4"])

结果调用时却出现了如下提示,

好吧,尽管我的思路很是清奇,但是我感觉我没做错什么呀?为啥会出错呢?

找了一些文章,原来Python并不支持函数重载,当然也并不是没有办法实现,比如说可以用默认参数,传入不定数量参数,或者使用什么@overload修饰符啥的。

解决

但是对我而言,没必要那么折腾,最简单的方式是给函数改个名字,比如说第二个函数就叫func_B好了。

或者既然我觉得var_1、var_2, var3,,var_4是一组高度相关的数据,不应该被分散调用,那么干脆就把func_A(var_1, var_2, var_3,var_4)这个函数删除,直接用func_A(vars)实现好了。

结论

Python 并不支持重载,所以我使用了改函数名或者重新实现函数来解决。

我一贯的原则是,不要纠结语言啊语法等问题,把问题解决了就好,哈哈。

遇到问题,没必要和问题死磕,绕过去就好了嘛。不过知道了Python不支持重载,那么以后就不会犯这样的错误啦。

参考链接


Vote For Me As Witness
https://steemit.com/~witnesses type in oflyhigh and click VOTE

Vote @oflyhigh via Steemconnect
Thank you!

Sort:  

@justyy thinks you are awesome!


command: !thumbup is powered by witness @justyy and his contributions are: https://steemyy.com
More commands are coming!

Thank you so much for participating in the Partiko Delegation Plan Round 1! We really appreciate your support! As part of the delegation benefits, we just gave you a 3.01% upvote! Together, let’s change the world!

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.033
BTC 63697.39
ETH 3145.23
USDT 1.00
SBD 3.83