函数是执行特定任务的代码块。
假设我们需要创建一个程序来绘制一个圆并为其着色。我们可以创建两个函数来解决这个问题:
- 创建圆的函数
- 为形状着色的函数
将复杂问题分解成更小的部分,使我们的程序易于理解和重用。
创建函数
让我们创建第一个函数。
def greet():
print('Hello World!')
以下是程序的各个部分:

在这里,我们创建了一个名为 greet()
的简单函数,它打印 Hello World!
注意:编写函数时,请注意缩进,即代码行开头的空格。
在上面的代码中,print()
语句被缩进以表明它是函数体的一部分,从而将函数的定义与其主体区分开来。
调用函数
在上面的示例中,我们声明了一个名为 greet()
的函数。
def greet():
print('Hello World!')
如果我们运行上面的代码,将不会得到输出。
这是因为创建函数并不意味着我们正在执行其中的代码。这意味着代码在那里供我们使用,如果我们愿意的话。
要使用此函数,我们需要调用该函数。
函数调用
greet()
示例:Python 函数调用
def greet():
print('Hello World!')
# call the function
greet()
print('Outside function')
输出
Hello World! Outside function
在上面的示例中,我们创建了一个名为 greet()
的函数。程序控制流如下:

这里,
- 当调用函数
greet()
时,程序的控制权转移到函数定义。 - 函数内的所有代码都将被执行。
- 程序控制权跳到函数调用之后的下一条语句。
Python函数参数
参数是提供给函数的输入。
def greet(name):
print("Hello", name)
# pass argument
greet("John")
示例输出 1
Hello John
在这里,我们将“John
”作为参数传递给 greet()
函数。
我们可以在每次调用中传递不同的参数,使函数可重用且动态。
让我们用不同的参数调用该函数。
greet("David")
示例输出 2
Hello David
示例:两个数字相加的函数
# function with two arguments
def add_numbers(num1, num2):
sum = num1 + num2
print("Sum: ", sum)
# function call with two values
add_numbers(5, 4)
输出
Sum: 9
在上面的示例中,我们创建了一个名为 add_numbers()
的函数,其参数为:num1 和 num2。

形参
形参是函数定义中括号内列出的变量。它们就像函数被调用时可以接受数据的占位符。
将形参视为蓝图,它概述了函数期望接收何种信息。
def print_age(age): # age is a parameter
print(age)
在此示例中,print_age()
函数将 age
作为其输入。但是,在此阶段,实际值尚未指定。
age
形参只是一个占位符,等待在函数调用时提供特定值。
实参
实参是我们在调用函数时传递给函数的实际值。
当函数执行时,实参会替换形参。
print_age(25) # 25 is an argument
在这里,在函数调用期间,实参 25 被传递给函数。
return 语句
我们使用 return
语句从函数返回一个值。
# function definition
def find_square(num):
result = num * num
return result
# function call
square = find_square(3)
print('Square:', square)
输出
Square: 9
在上面的示例中,我们创建了一个名为 find_square()
的函数。该函数接受一个数字并返回该数字的平方。

注意:return
语句也表示函数已结束。return
之后的任何代码都不会执行。
pass 语句
pass
语句作为未来代码的占位符,防止空代码块引发错误。
它通常用于代码已计划但尚未编写的地方。
def future_function():
pass
# this will execute without any action or error
future_function()
注意:要了解更多信息,请访问Python pass 语句。
Python 库函数
Python 提供了一些可以直接在程序中使用的内置函数。
我们不需要创建函数,只需要调用它们。
一些 Python 库函数是:
这些库函数在模块中定义。要使用它们,我们必须在程序中包含该模块。
例如,sqrt()
定义在 math 模块中。
注意:要了解有关库函数的更多信息,请访问Python 库函数。
示例:Python 库函数
import math
# sqrt computes the square root
square_root = math.sqrt(4)
print("Square Root of 4 is",square_root)
# pow() comptes the power
power = pow(2, 3)
print("2 to the power 3 is",power)
输出
Square Root of 4 is 2.0 2 to the power 3 is 8
在这里,我们导入了一个 math
模块来使用库函数 sqrt()
和 pow()
。
更多关于 Python 函数
Python 允许函数具有默认参数值。当函数调用期间没有向这些参数传递显式值时,将使用默认参数。
让我们看一个例子。
def greet(name, message="Hello"):
print(message, name)
# calling function with both arguments
greet("Alice", "Good Morning")
# calling function with only one argument
greet("Bob")
输出
Good Morning Alice Hello Bob
在这里,message
的默认值为 Hello
。当 greet()
仅带一个参数调用时,message
使用其默认值。
注意:要了解有关函数中默认参数的更多信息,请访问Python 函数参数。
*args
和 **kwargs
我们可以使用特殊符号 *args
和 **kwargs
处理任意数量的参数。
函数中的 *args
使用 *args
允许函数接受任意数量的位置参数。
# function to sum any number of arguments
def add_all(*numbers):
return sum(numbers)
# pass any number of arguments
print(add_all(1, 2, 3, 4))
输出
10
函数中的 **kwargs
使用 **kwargs
允许函数接受任意数量的关键字参数。
# function to print keyword arguments
def greet(**words):
for key, value in words.items():
print(f"{key}: {value}")
# pass any number of keyword arguments
greet(name="John", greeting="Hello")
输出
name: John greeting: Hello
要了解更多信息,请访问Python *args 和 **kwargs。
另请阅读