收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来
如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)
正文
假设你有一个函数connect,它有一个参数address,这个参数可能是一个字符串,也可能是一个元组。例如:
connect('123.45.32.18:8080')
connect(('123.45.32.18', 8080))
你想在代码里面兼容这两种写法,于是你可能会这样写代码:
def connect(address):
if isinstance(address, str):
ip, port = address.split(':')
elif isinstance(address, tuple):
ip, port = address
else:
print('地址格式不正确')
这种写法简单直接,但是如果参数的类型更多,那么你就需要写很长的 if-elif-elif-...-else
。代码看起来就非常不美观。
学习过 Java 的同学,应该对函数重载比较熟悉,可以定义几个名字相同的函数,但是他们的参数类型或者数量不同,从而实现不同的代码逻辑。
在 Python 里面,参数的数量不同可以使用默认参数来解决,不需要定义多个函数。那如果参数类型不同就实现不同的逻辑,除了上面的 if-else
外,我们还可以使用functools
模块里面的singledispatch
装饰器实现函数重载。
我们来写一段代码:
from functools import singledispatch
@singledispatch
def connect(address):
print(f' 传输参数类型为:{type(address)},不是有效类型')
@connect.register
def _(address: str):
ip, port = address.split(':')
print(f'参数为字符串,IP是:{ip}, 端口是:{port}')
@connect.register
def _(address: tuple):
ip, port = address
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**如果你需要这些资料,可以添加V无偿获取:hxbc188 (备注666)**
![img](https://img-blog.csdnimg.cn/img_convert/df319f42e191ccb715689f68eb5237c8.png)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**