关于参数标识
不知道大家在工作中有没有遇到一种情况,你的同事 A 写了一个方法给你调用,然后你调用时不知道该传什么参数,然后这个同事 A 还很 cao dan 的居然不加班!你一脸茫然的看着这个方法,当你尝试传进去一个 abc,结果代码就报错了,此时此刻你是不是很苦恼、很想把你同事 A 暴打一顿逼问他这个方法到底该传个啥进去?
那么有没有办法解决这个问题呢?答案就是让你的同事在参数上标识出参数期望接收的值是啥,代码如下:
def fun(a: list):
通过在 a 参数后面跟上 : list 可以标识出 a 参数期望传入一个 list 类型,相当于给 a 参数写了一个注释。
不过,在实际工作中更多的是用来标识自定义类的名称(如下图),这样标识出来,别人在调用你这个方法时就知道该传个什么东西进去了。
另外,如果你就是不听话,非得瞎传,那会怎样呢?
答案是不会怎样,因为这个标识并没有强限制,你瞎传进去本身并不会报错(只有当程序运行到要使用这个参数时,才可能会报错。),但如果你用的是 Pychram 写代码,那大概率会给你提示的传参类型不对的警告:
另外,参数标识还有一个好处,特别是依赖编译器提示的同学。比如下面的函数,我函数的功能是删除传进来的列表地一个值,但是我又忘记了 list 内置的删除方法是怎么写的了,那就可以通过将参数 a 标识为 list,然后 pychram 就能知道参数 a 应该是个 list,就可以给你提供代码提示了:
关于标识返回类型
又回到刚刚那个场景,自从暴打一顿同事 A 之后,我知道了他写的方法该怎么传参之后,问题又来了,那这个方法返回个啥呢?难道要自己运行一下代码,再打印 type 去看吗?这显然也不合理!(别问哪里不合理,反正我就是这么任性,把同事 A 再打一顿…)
然后,同事 A 默默的在函数名称后面加上了一句话,就解决了这个事情:
就是后面的 -> list 这里的意思就是标识出 fun 函数会返回一个 list,然后返回标识和参数标识其实都是差不多的用法,也可以返回自定义类。
关于函数的占位符
像 pass 和 … 都是函数的占位符,多数情况下是用来类中,当类的某个方法目前还未实现或者需要子类重写时,就可以用 pass 或者 … 来先占位,两者效果是一样的。
关于限制传参方式
某天,我写了一个方法,方法的参数有很多,同事 A 这个傻子在调用我的方法时,代码一直报错,查了很久,结果发现是他传参数的顺序错了,在我暴打他一顿之后,当机立断强制要求调用我的方法时必须通过关键字参数传参,这样就可以避免参数位置错误的情况。
通过在参数前一个位置加上一个 * 号,就可以强制规定 * 号后的所有参数都只能通过关键字参数传参,否则会报错, 使用时要注意别和 *agr 和 **kwarg 的使用搞混了
然后在某一天,我突然想给同事 A 搞点事情(好孩子不要学),我把参数中的 * 号删除了,但我在最后一个位置加上了一个/,强制改为只能通过位置参数传参。
总结一下,* 代表是 * 后的所有参数都必须通过关键字参数传参,而 / 则是 / 前的所有参数都必须通过位置参数传参,因此在使用时要注意位置不要写错了。
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!
这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。
点击文末小卡片领取 |
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
零基础转行软件测试:25天从零基础转行到入职软件测试岗,今天学完,明天就业。【包括功能/接口/自动化/python自动化测试/性能/测试开发】