Python 函数(一)
在编写Python程序的过程中,可以将完成某个功能的语句提取出来,并将其编写为函数。这样,在程序中可以方便地调用函数来完成这个功能,并且可以多次调用,多次完成这个功能,而不必重复的复制粘贴代码。并且使用后也可以使得程序结构更加清晰、更加容易维护。Python中提供了许多内置的函数,比如在前面多次使用的print()。开发者可以自己创建函数,这被叫做用户自定义函数。
一、定义函数
在Python程序,在使用函数之前必须先定义(声明)函数,然后才能调用它。在使用函数时,只有按照函数定义的形式,向函数传递参数,就可以调用函数完成相应的功能或者获得函数返回的处理结果。
在使用自定义函数前,需要先定义这个函数。在Python程序,使用关键字def可以定义一个函数,格式如下:
def<函数名>(参数列表):
<函数语句>
return<返回值>
- 在上述格式中,参数列表和返回值不是必要的,return后也可以不跟返回值,甚至连return也没有。如果return后面没有返回值,并且没有return语句,这样的函数都会返回None值。有些函数可能既不需要传递函数,也没有返回值。
提示:当函数没有参数时,包含参数的圆括号也必须写上,圆括号后也必须有“ : ”
- 任何传入参数和自变量必须放在圆括号之间,圆括号之间可以用于定义参数。
示例如下:
def hello() :
print("假期快乐!")
hello()
输出结果:
二、调用函数
调用函数就是使用函数,在Python程序中,当定义一个函数后,就相当于给了函数一个名称,接下来就可以通过调用的方式来使用这个函数。
在Python程序中,调用函数就是在语句中使用函数的函数名,并且在函数名之后的小括号内填入合适的调用参数,多个参数之间用逗号隔开。
示例如下:
def tpl_sum(T):
result = 0
for i in T :
result += i
return result
print ("[1,2,3,4]列表中元素的和是:",tpl_sum([1,2,3,4]))
输出结果:
三、函数的参数
在调用某个函数的时候,既可以向其传递参数,也可以不传递参数,另外还有一些情况,比如函数中的参数数量不确定,可能为1个,也可能为几个,甚至更多。对于这些函数,该怎么定义呢?
3.1 形参和实参
def tpl_sum(T):
上面那个例子中的“T”就是形参,而tpl_sum([1,2,3,4])中的“[1,2,3,4]”是实参。在Python程序中,形参表示函数完成其工作所需要的一项信息,而实参是调用函数时传递给函数的信息。
3.2 必须参数
在Python程序中,必须参数也被称为位置实参,在使用时必须以正确的顺序传入函数。并且在调用函数时,必须参数的数量必须和声明时的一样。例如下面这个列子:
def printme(str):
"打印任何传入的字符串"
print(str);
return;
printme();
在调用printme();时没有正确传入一个参数,执行时会报错:
3.3 关键字参数
在Python程序中,关键字参数和调用函数关系紧密。在调用函数时,通过使用关键字参数可以确定传入的参数值。在使用关键字参数时,允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值。示例如下:
def printinfo(name,age):
"打印任何传入的字符串"
print("名字:",name);
print("年龄:", age);
return;
printinfo(age=20,name="五一")
在上述代码中,函数printinfo()原来的参数顺序是先name再age,但是在调用时却是先age=20再name=“五一”,执行结果为:
3.4 默认参数
当Python程序中调用函数时,如果没有传递参数,则会使用默认函数(也被称为默认值参数)。实例如下:
def printinfo(name,age=19):
"打印任何传入的字符串"
print("名字:",name);
print("年龄:", age);
return;
#下面调用函数,设置参数age的值是20,参数name的值是"六一"
print("下面是五一的两个好朋友的资料:")
printinfo(age=20,name="六一")
print("----------------------------")
#下面再次调用函数,设置参数name的值是"国庆"
printinfo(name="国庆")
在上述代码中,最后一行调用函数printinfo()时,没有指定参数age的值,但是执行后使用其默认值。执行结果是:
提示:在Python程序中,如果声明一个函数时,其参数列表中既包含无默认值参数,也包含默认值参数,那么在声明函数的参数时,必须先声明无默认值参数,后声明有默认值参数。
3.5 不定长参数
在Python程序中,可能需要一个函数处理比当初声明时更多的参数,这些参数叫做不定长参数。不定长参数也被称为可变参数,和前面介绍的参数类型不同,声明不定长参数时不会命名,基本语法格式如下:
def functionname( [formal_args,] *var_args_tuple)
"函数_文档字符串"
function_suite
return [expression]
- 在上述格式中,加了星号“*”的变量名会存放所有未命名的变量参数。如果在函数调用的时候没有指定参数,它就是一个空元组,开发者也可以不向函数传递未命名的变量。
- "函数_文档字符串"可以用于存放函数说明。
- 示例如下:
def printinfo(arg1,*vartuple):
"打印任何传入的字符串"
print("输出:");
print(arg1)
for var in vartuple:
print (var)
return;
printinfo(10);
printinfo(70,60,50)
在上述代码中,最后两行调用函数printinfo()时,一个使用了1个参数,一个使用了3个参数,两行代码都合法,执行结果是: