Python中的函数是一组可以重复使用的代码块,用于执行特定任务。在Python中,定义函数需要使用def关键字,它具有以下语法格式:
def function_name(parameters):
"""optional function docstring"""
function code
[return expression]
在函数定义中,function_name是函数的名称,参数是传递给函数的数据。可以省略参数,如果函数没有返回值,则return语句可以省略,函数代码必须缩进4个空格或一个制表符或两个空格。
下面是一个简单的Python函数的示例,该函数将两个数字相加并返回结果:
def add_numbers(x, y):
return x + y
result = add_numbers(1, 2)
print(result) # 输出3
该函数将两个参数x和y相加,并返回它们的和。在该示例中,调用该函数并将1和2作为参数传递给它。函数返回结果3,该值分配给result变量,然后通过print函数打印到屏幕上。
当我们定义一个函数时,我们可以使用各种类型的参数来表示不同的数据类型。下面是常见的函数参数类型:
- 位置参数(Positional Arguments):这些参数是按照顺序传递的,通过名称在函数内访问它们。
def greeting(name, message):
print(f"{message} {name}!")
greeting("John", "Hi") # 输出 Hi John!
- 关键字参数(Keyword arguments):这些参数是使用名称传递的,它们的顺序并不重要。
def greeting(name, message):
print(f"{message} {name}!")
greeting(message="Hi", name="John") # 输出 Hi John!
- 默认参数(Default Arguments):这些参数有一个默认的值,如果调用函数时没有提供参数,则使用默认值。
def greeting(name="Guest", message="Hello"):
print(f"{message} {name}!")
greeting() # 输出 Hello Guest!
- 可变参数(Variadic Arguments):这些参数能够接收任意数量的参数,使用*操作符让Python把它们转换成一个元组(tuple)。
def sum(*numbers):
total = 0
for number in numbers:
total += number
return total
print(sum(1, 2, 3, 4)) # 输出10
- 关键字可变参数(Keyword Variadic Arguments):这些参数能够接收任意数量的关键字参数,使用**操作符让Python把它们转换成一个字典(dict)。
def print_scores(**students):
for name, score in students.items():
print(f"{name} scored {score}")
print_scores(John=90, Jane=85, Alice=95)
# 输出:
# John scored 90
# Jane scored 85
# Alice scored 95
除此之外,函数还可以包括以下内容:
- 注释(Comments):提供有关函数的文档说明,也称为文档字符串(docstrings)。
def greeting(name, message):
"""打印问候语"""
print(f"{message} {name}!")
- 局部变量(Local Variables):在函数内部定义的变量,只能在函数内部使用。
def greeting(name, message):
greeting = f"{message} {name}!"
print(greeting)
- 全局变量(Global Variables):在函数外部定义的变量,可以在整个程序中使用。
greeting = "Hello"
def greeting(name):
print(f"{greeting} {name}!")
Python函数还具有以下特性:
- 递归(Recursion):函数调用自身的能力。
def fact(n):
if n == 0:
return 1
else:
return n * fact(n-1)
print(fact(5)) # 输出 120
- 匿名函数(Lambda Functions):也称为lambda表达式,是一种用于创建简单函数的快速方法。
sum = lambda x, y: x + y
print(sum(1, 2)) # 输出3
- 闭包(Closures):是一个函数及其相关变量以及其代码块的组合,可以访问代码块的外部作用域中声明的变量。
def greeting(message):
def greet(name):
print(f"{message} {name}")
return greet
hello = greeting("Hello")
hello("John") # 输出 Hello John