目录
Python 函数是执行特定任务的可重用代码块。在 Python 中,函数使用
def
关键字定义,可以带有参数和返回值。以下是关于 Python
函数的基础知识及其使用方法。
一. 定义函数
函数的基本语法如下:
def function_name(parameters):
# 函数体
return value
-
def
是定义函数的关键字。 -
function_name
是函数的名称。 -
parameters
是可选的输入参数,可以有多个,用逗号分隔。也可以没有参数。 -
return
用于返回函数的结果,return
后面的值是函数的返回值。没有return
时,函数返回None
。
简单的函数示例:
def greet(name):
print(f"Hello, {name}!")
greet("Alice") # 输出: Hello, Alice!
在这个例子中,greet
是一个接受一个参数 name
的函数,函数体输出一条问候消息。
二. 调用函数
在Python中调用函数非常简单,定义好函数之后,我们通过函数名加上圆括号来调用它。
# 定义一个简单的函数
def greet():
print("Hello, World!")
# 调用该函数
greet()
在这个示例中,greet
是一个无参数的函数,我们通过
greet()
来调用它。当你运行这段代码时,它会输出
"
Hello, World!
"
。
三. 函数的参数
-
定义时小括号中的参数,用来接收参数用的,称为 “形参”。
-
调用时小括号中的参数,用来传递给函数用的,称为 “实参”。
#形参
def add(a, b): # 'a' 和 'b' 是形参
return a + b
#实参
result = add(3, 5) # 3 和 5 是实参
print(result) # 输出 8
在 Python 中,实参传递给形参的方式有不同的类型,主要有以下几种:
1. 按位置传参
当你按照参数的顺序传递实参时,称为按位置传参。形参会按照顺序依次接收实参的值。
def greet(name, age):
print(f"Hello, {name}. You are {age} years old.")
greet("Alice", 30) # 按位置传参,"Alice" 给 name,30 给 age
2. 按关键字传参
按关键字传参是通过指定形参的名字来传递实参。这种方式不依赖于顺序,可以任意顺序传递实参。
def greet(name, age):
print(f"Hello, {name}. You are {age} years old.")
greet(age=30, name="Alice") # 按关键字传参
3. 默认参数
函数定义时可以为形参设置默认值,如果调用时没有传入实参,那么使用默认值。
def greet(name, age=25):
print(f"Hello, {name}. You are {age} years old.")
greet("Alice") # 只传递了一个实参,age 使用默认值 25
4. 可变长参数
*args
:允许传入任意数量的位置参数,args
是一个元组,包含了所有传入的参数。
def greet(*names):
for name in names:
print(f"Hello, {name}")
greet("Alice", "Bob", "Charlie") # 传入多个位置参数
**kwargs
:允许传入任意数量的关键字参数,kwargs
是一个字典,包含了所有传入的关键字参数。
def greet(**info):
for key, value in info.items():
print(f"{key}: {value}")
greet(name="Alice", age=30) # 传入多个关键字参数
四. 函数的返回值
函数通过 return 可以返回一个结果给调用者,如果没有明确的 return 语句,函数会默认返回 None。
# 定义一个返回值的函数
def add(a, b):
return a + b
# 调用函数并将结果存储在一个变量中
result = add(5, 3)
print(result)
输出:
8
这里,add
函数接受两个参数 a
和 b
,并返回它们的和。在调用
add(5, 3)
时,返回值
8
被存储在
result
变量中,并打印出来。
五. 函数作为参数
函数可以作为参数传递给其他函数:
def apply_function(f, x):
return f(x)
def square(x):
return x * x
result = apply_function(square, 5)
print(result) # 输出: 25
六. 递归函数
递归函数是指函数直接或间接地调用自身。使用递归时需要注意设置退出条件,以避免无限递归:
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # 输出: 120
在这个例子中,factorial
函数计算一个数的阶乘,通过递归调用自己来实现。
七. 函数注解
从Python 3.0 开始,可以在函数定义中添加注解,用于描述参数类型和返回值类型(但它们不会影响程序的行为,主要用于工具或 IDE 提供更好的支持)。
def greet(name: str) -> str:
return f"Hello, {name}!"
在这个例子中,name: str
表示
name
参数应该是一个字符串,-> str
表示函数返回一个字符串。
总结:在 Python 中,函数是一等公民,这意味着它们可以被赋值给变量、作为参数传递给其他函数以及从函数中返回。