每日测试冷知识:Python函数(方法)

关于参数标识

不知道大家在工作中有没有遇到一种情况,你的同事 A 写了一个方法给你调用,然后你调用时不知道该传什么参数,然后这个同事 A 还很 cao dan 的居然不加班!你一脸茫然的看着这个方法,当你尝试传进去一个 abc,结果代码就报错了,此时此刻你是不是很苦恼、很想把你同事 A 暴打一顿逼问他这个方法到底该传个啥进去?

那么有没有办法解决这个问题呢?答案就是让你的同事在参数上标识出参数期望接收的值是啥,代码如下:

  def fun(a: list):
    pass


 

通过在 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 搞点事情(好孩子不要学),我把参数中的 * 号删除了,但我在最后一个位置加上了一个/,强制改为只能通过位置参数传参。

总结一下,* 代表是 * 后的所有参数都必须通过关键字参数传参,而 / 则是 / 前的所有参数都必须通过位置参数传参,因此在使用时要注意位置不要写错了。

今日的冷知识你学会了么?

作为一名软件测试工程师,该怎样努力才能快速成为一名优秀的测试开发大佬,或者性能测试大佬,或者说作为一名软件测试工程师需要掌握哪些知识体系。这不仅是一个刚刚踏入职场的软件测试工程师,也是工作三五年之后开始迷茫的工程师,都必须要面对和想明白的问题。 

猜你喜欢

转载自blog.csdn.net/a448335587/article/details/123852040