每天进步一点点:原来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:  

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.30
TRX 0.12
JST 0.033
BTC 64420.25
ETH 3150.23
USDT 1.00
SBD 3.99