定义和调用简单函数

使用 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 语句用作函数体,这是一个空操作 - 当它被执行时,没有任何反应。它做了它的意思,它跳过了。当语法需要语句但不需要执行任何代码时,它可用作占位符。