定义和调用简单函数
使用 def
语句是在 python 中定义函数的最常用方法。此语句是一个所谓的单子句复合语句,语法如下:
def function_name(parameters):
statement(s)
function_name
被称为函数的标识符。由于函数定义是可执行语句,因此它的执行将函数名称绑定到函数对象,稍后可以使用标识符调用该函数对象。
parameters
是一个可选的标识符列表,它在调用函数时绑定到作为参数提供的值。函数可以具有任意数量的参数,这些参数由逗号分隔。
statement(s)
- 也称为函数体 - 是每次调用函数时执行的非空语句序列。这意味着函数体不能为空,就像任何缩进块一样 。
这是一个简单函数定义的例子,其目的是在每次调用时打印 Hello
:
def greet():
print("Hello")
现在让我们调用定义的 greet()
函数:
greet()
# Out: Hello
这是函数定义的另一个例子,它接受一个参数并在每次调用函数时显示传入的值:
def greet_two(greeting):
print(greeting)
之后,必须使用参数调用 greet_two()
函数:
greet_two("Howdy")
# Out: Howdy
你还可以为该函数参数提供默认值:
def greet_two(greeting="Howdy"):
print(greeting)
现在你可以在不给出值的情况下调用函数:
greet_two()
# Out: Howdy
你会注意到,与许多其他语言不同,你不需要显式声明函数的返回类型。Python 函数可以通过 return
关键字返回任何类型的值。一个功能可以返回任意数量的不同类型!
def many_types(x):
if x < 0:
return "Hello!"
else:
return 0
print(many_types(1))
print(many_types(-1))
# Output:
0
Hello!
只要调用者正确处理了这个问题,这就是完全有效的 Python 代码。
在没有 return 语句的情况下到达执行结束的函数将始终返回 None
:
def do_nothing():
pass
print(do_nothing())
# Out: None
如前所述,函数定义必须具有函数体,非空语句序列。因此 pass
语句用作函数体,这是一个空操作 - 当它被执行时,没有任何反应。它做了它的意思,它跳过了。当语法需要语句但不需要执行任何代码时,它可用作占位符。