小白必看的Python基础之函数篇
函数最重要的目的是方便我们重复使用相同的程序。
将某些操作属于函数,以后想要实现相同的操作时,只需要调用函数名,而不需要重复所有句子。
函数的定义
首先,我们必须定义一个函数, 说明函数的功能。
defsquare_sum(a,b): c=a**2+b**2 returnc
这个函数的功能是两个数的平方和。
首先,def,关键字通知python:我正在定义一个函数。square_sum是函数名。
括号中的a, b是函数的参数,是函数的输入。可以有多个参数,也可以完全没有(但括号应该保留)。
在循环和选择中,我们已经看到了冒号和缩进的隶属关系。
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, print打印了这个25。
让我们来看看以下两个例子
a=1 defchange_integer(a): a=a+1 returna printchange_integer(a) printa #===(Python中"#"后续内容为注释,不执行) b=[1,2,3] defchange_list(b): b[0]=b[0]+1 returnb printchange_list(b) printb
在第一个例子中,我们将整数变量传递给函数,函数操作,但原始整数变量a没有变化。
在第二个例子中,我们将一个表传递给函数,函数操作,原来的表b发生了变化。
对于基本数据类型的变量,当变量传递给函数时,函数会在内存中复制一个新的变量,以免影响原始变量。(我们称之为值传递)
但对于表来说,表传递给函数的是指针,指针指向内存中序列的位置,函数中表的操作将在原始内存中进行,从而影响原始变量。 (我们称之为指针传递)
总结
deffunction_name(a,b,c): statement returnsomething#return不是必须的
函数的目的: 提高程序的重复可用性。
return None
参数通过位置传输。
基本数据类型的参数:值传输
表作为参数:指针传递。