跳到主要内容

函数

函数是指可以重复使用的程序片段。函数可以让代码有模块性,提高代码的重复利用率。在目前为止,我们已经使用过了不少Python提供的内建函数,比如“print()”、“rang()”、“len()”。我们也可以自己创建函数,这叫做用户自定义函数。

函数的定义

一个函数使用 def 关键字开头,之后是这个函数的名字,再是圆括号“()”,这里的圆括号用来传入参数。下一行缩进就是函数的内容,其中第一行可以用字符串写函数的说明。最后,可选“return”作为函数的返回结果。 如下代码段所示,先定义函数,再多次调用函数。

自定义函数示例(exp12.py)

# 自定义函数示例(exp12.py)

def print_hello(): # 定义一个函数
"功能: 打印hello"
print("hello ")
return

print_hello() # 调用函数
print_hello() # 再次调用函数

执行结果如下所示:

hello 
hello

函数的参数

一个函数支持传入参数,才会让这个函数更具可重复使用性。这个参数由调用函数时传入,在定义函数时,需要先设计好支持哪些参数。 如下代码段所示,几种常见的参数传入方式。

# 函数参数示例(exp13.py)

def max_num(a, b=0): # 设置b为默认参数
"功能: 打印两个数字中较大的一个"
if a>b:
print(a, "is maximun")
elif a<b:
print(b, "is maximun")
else:
print(a, "is equal to", b)

max_num(15, 17) # 正常调用函数,为默认顺序
max_num(-27) # 只传入参数a,参数b为默认值
max_num(b=-7, a=-10) # 指定传给哪一个参数

执行结果如下所示:

17 is maximun
0 is maximun
-7 is maximun

变量的作用域

编写函数时,需要注意变量的作用域,变量的作用域有两种:全局变量和局部变量。

全局变量在函数外定义,也可在任意位置,使用 global 声明变量是全局变量,其它函数在任何位置都可以访问全局变量。

局部变量在函数内定义,只能被当前函数内部访问。

如下代码段所示:

# 变量的作用域示例(exp14.py)

x = 10 # 在函数外面,定义的变量,是全局变量,大家都可以访问

def func1():
y = 30 # 在函数里面,定义的变量,是局部变量,只能当前函数内部访问
global z # 在函数里面,使用global声明变量是一个全局变量,大家都可以访问
z = 50
print("fun1 x =", x)
print("fun1 y =", y)
print("fun1 z =", z)

def func2():
y = 40
print("fun2 x =", x) # 打印来在函数外,定义的全局变量
print("fun2 y =", y) # 打印自己定义的,局部变量
print("fun2 z =", z) # 打印global声明的全局变量

func1() # 调用函数1
func2() # 调用函数2

执行结果如下所示:

fun1 x = 10
fun1 y = 30
fun1 z = 50
fun2 x = 10
fun2 y = 40
fun2 z = 50