在编写库函数时经常会遇到这样一种情况:由于任务不同,一个函数经常会传入的入不同的个数,而有些参数并非是必选的。本文将首先讲解函数参数类型,然后讲解如何判断该参数是否传入并给出示例。
1.参数类型:必选参数,默认参数,可变参数以及关键字参数
1.1 必选参数
顾名思义,就是函数必须有的入参 示例:
>>def add(x,y): ... return x+y >>print(add(1,2)) >>3
1.2 默认参数
在函数定义时给定一个初始值,在函数调用时可以不传这个参数,采用默认参数的值;如面程序所示,y=3为默认参数。 示例:
>>def add(x,y=3): ... return x+y >>print(add(1)) >>4
1.3 可变参数
顾名思义,函数参数的个数是可变的,如x为可变参数。
>>def add(*x): ... sum = 0 ... for i in x: ... sum+=i ... return sum >>print(add(1,2,3)) >>6
1.4 关键字参数
关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
>>def add(x,**y): ... print(x,y) >>print(add(1,)) >>1 {}
2 如何判定可变参数以及关键字参数有值入参
2.1 判断可变参数有值入参方法
可选参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple,因此可以通过如下方式判断:
def add(*x): if x == (): print('无参数') else: print('有参数') >>无参数
2.2 判断是否有关键字参数传入
def add(**x): if x == {}: print('无参数') else: print('有参数') print(add(x=1)) >>有参数
作为一名非科班出身的教育技术学研究生,技术水平十分有限。近期看到教育工作者在处理数据是比较困难,包括本教育技术学的科研工作者在面对大批量数据时也是束手无策,于是萌生了为教育工作者写一个开源库的想法,意图通过简单的几行代码就可以完成诸如文件合并、字符云等复杂功能。欢迎关注该项目,如果有同学在此方面感兴趣和可以和我联系,我们一起维护该项目!
本人感兴趣的研究方向:复杂系统计算与可解释性的深度学习以及自然语言处理。微信公众号:SMNLP;个人博客:www.litan.tech。