Python基本教程07 – 函数
函数最重要的目标是利便我们反复利用沟通的一段措施。
将一些操纵附属于一个函数,今后你想实现沟通的操纵的时候,只用挪用函数名就可以,而不需要反复敲所有的语句。
函数的界说
首先,我们要界说一个函数, 以说明这个函数的成果。
def square_sum(a,b): c = a**2 + b**2 return c
这个函数的成果是求两个数的平方和。
首先,def,这个要害字通知python:我在界说一个函数。square_sum是函数名。
括号中的a, b是函数的参数,是对函数的输入。参数可以有多个,也可以完全没有(但括号要保存)。
我们已经在轮回和选择中见过冒号和缩进来暗示的附属干系。
c = a**2 + b**2 # 这一句是函数内部举办的运算 return c # 返回c的值,也就是输出的成果。Python的函数答允不返回值,也就是不消return。return可以返回多个值,以逗号脱离。相当于返回一个tuple(定值表)。 return a,b,c # 相当于 return (a,b,c)
在Python中,当措施执行到return的时候,措施将遏制执行函数内余下的语句。return并不是必需的,当没有return, 可能return后头没有返回值时,函数将自动返回None。None是Python中的一个出格的数据范例,用来暗示什么都没有,相当于C中的NULL。None多用于要害字参数通报的默认值。
函数挪用和参数通报
界说过函数后,就可以在后头措施中利用这一函数
print square_sum(3,4)
Python通过位置,知道3对应的是函数界说中的第一个参数a, 4对应第二个参数b,然后把参数通报给函数square_sum。
(Python有富厚的参数通报方法,尚有要害字通报、表通报、字典通报等,基本教程将只涉及位置通报)
函数颠末运算,返回值25, 这个25被print打印出来。
我们再看下面两个例子
a = 1 def change_integer(a): a = a + 1 return a print change_integer(a) print a #===(Python中 "#" 后头跟的内容是注释,不执行 ) b = [1,2,3] def change_list(b): b[0] = b[0] + 1 return b print change_list(b) print b
第一个例子,我们将一个整数变量通报给函数,函数对它举办操纵,但原整数变量a不产生变革。
第二个例子,我们将一个表通报给函数,函数举办操纵,本来的表b产生变革。
对付根基数据范例的变量,变量通报给函数后,函数会在内存中复制一个新的变量,从而不影响本来的变量。(我们称此为值通报)
可是对付表来说,表通报给函数的是一个指针,指针指向序列在内存中的位置,在函数中对表的操纵将在原有内存中举办,从而影响原有变量。 (我们称此为指针通报)
总结
def function_name(a,b,c): statement return something # return不是必需的
函数的目标: 提高措施的反复可用性。
return None
通过位置,通报参数。
根基数据范例的参数:值通报
表作为参数:指针通报