- 参数
- 必需参数
- 关键字参数
- 默认参数
- 不定长参数
- 匿名函数
- return语句
- 强制位置参数
以下是本文将会介绍的调用函数时使用的参数类型:
必需参数
关键字参数
默认参数
不定长参数
必需参数规定要以正确的顺序传入函数中,在调用的时候必须与声明时相同。
以上一篇文章中的例子来讲:
def printme( dtcloud ): # 打印任何传入的字符串 print (dtcloud) return
如果调用时不加参数的话:
printme()
就汇报如下所示的错误:
关键字参数和函数的调用密切相关,关键字参数用以确定传入的参数值。
它的顺序可以与声明时不一致,其中的原因是python能够使用参数名匹配参数值。
如下例所示:
def printme( dtcloud ): # 打印任何传入的字符串 print (dtcloud) return printme(dtcloud = "中亿丰数字dtcloud")
无需顺序的实例:
def printinfo( company, product):
"打印任何传入的字符串"
print ("公司: ", company)
print ("产品: ", product)
return
#调用printinfo函数
printinfo( product="dtcloud", company="中亿丰数字" )
默认参数
调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 product 参数,则使用默认值:
def printinfo( company, product="dtcloud"):
"打印任何传入的字符串"
print ("公司: ", company)
print ("产品: ", product)
return
#调用printinfo函数
printinfo( product="dtcloud", company="中亿丰数字" )
print ("------------------------")
printinfo( company="中亿丰数字" )
不定长参数
如果需要函数处理比声明时更多的参数,那么这些参数被称为不定长参数,声明格式如下:
def functionname([formal_args,] *var_args_tuple ): "函数_文档字符串" function_suite return [expression]
元组会以加了*符号的形式导入,存放这些没有命名的变量。
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print ("输出: ")
print (arg1)
print (vartuple)
# 调用printinfo 函数
printinfo( 70, 60, 50 )
注意:如果输入的时候没有指定参数,那么就不会向函数传入这些未命名变量。
匿名函数通过lambda创建,匿名的意思就是不通过def声明来创建。
lambda仅仅是一个表达式,结构比起def声明的函数更加简单。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
语法格式如下:
lambda [arg1 [,arg2,.....argn]]:expression
简单实例如下:
dtcloud = lambda a : a + 10 print(dtcloud (5))
匿名函数也能够封装在函数内,这样就可以创建多个匿名函数:
def dtcloud(n): return lambda a : a * n mydoubler = dtcloud(2) mytripler = dtcloud(3) print(mydoubler(11)) print(mytripler(11))return语句
return用以退出函数,然后返回一个表达式,不带参数值的return返回None。
下面的例子通过简单实例演示return语句用法:
def dtcloud( a, b ):
# 返回2个参数的和."
total = a + b
print ("函数内 : ", total)
return total
# 调用sum函数
total = dtcloud( 10, 40 )
print ("函数外 : ", total)
强制位置参数
在python3.8中,新增了一个函数形参语法“/”用以表明函数形式参数必须使用知道你管的位置参数,开发者不允许使用关键字参数的形式。
如下所示:
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
f(10, 20, 30, d=40, e=50, f=60)



