一个函数可以让我们创建一组指令,在需要时可以运行。
在Python和其他许多编程语言中,函数对于创建有意义的程序是必不可少的,因为它们允许我们将一个程序分解成可管理的部分,它们促进了可读性和代码的重复使用。
下面是一个名为hello
的函数例子,它可以打印出 "Hello!"。
def hello():
print('Hello!')
这是函数的定义。有一个名称(hello
)和一个主体,即指令集,这是冒号后面的部分,它在右边缩进了一级。
要运行这个函数,我们必须调用它。这就是调用该函数的语法。
我们可以执行这个函数一次,或者多次。
函数的名称,hello
,是非常重要的。它应该是描述性的,所以任何调用它的人都可以想象到这个函数是做什么的。
一个函数可以接受一个或多个参数。
def hello(name):
print('Hello ' + name + '!')
在这种情况下,我们通过参数来调用该函数。
我们称参数为函数定义中所接受的值,而参数是我们在调用函数时传递给它的值。对这种区别感到困惑是很常见的。
一个参数可以有一个默认值,如果参数没有被指定,就会应用这个默认值。
def hello(name='my friend'):
print('Hello ' + name + '!')
hello()
#Hello my friend!
下面是我们如何接受多个参数。
def hello(name, age):
print('Hello ' + name + ', you are ' + str(age) + ' years old!')
在这种情况下,我们调用函数时传递一组参数。
参数是通过引用传递的。Python 中的所有类型都是对象,但其中一些是不可变的,包括整数、布尔、浮点数、字符串和图元。这意味着如果你把它们作为参数传递,并且在函数中修改了它们的值,那么新的值就不会反映在函数之外。
def change(value):
value = 2
val = 1
change(val)
print(val) #1
如果你传递了一个不是不可变的对象,并且你改变了它的一个属性,那么这个变化就会反映在外面。
一个函数可以返回一个值,使用return
语句。例如在这种情况下,我们返回name
的参数名称。
def hello(name):
print('Hello ' + name + '!')
return name
当函数遇到return
语句时,函数结束。
我们可以省略该值。
def hello(name):
print('Hello ' + name + '!')
return
我们可以将返回语句放在一个条件里面,这是一种常见的方式,如果一个起始条件没有得到满足,就结束一个函数。
def hello(name):
if not name:
return
print('Hello ' + name + '!')
如果我们在调用函数时传递一个评价为False
的值,比如一个空字符串,那么函数在到达print()
语句之前就被终止了。
你可以通过使用逗号分隔值来返回多个值。
def hello(name):
print('Hello ' + name + '!')
return name, 'Roger', 8
在这种情况下调用hello('Syd')
,返回值是一个包含这3个值的元组:('Syd', 'Roger', 8)
。