简介
本全面教程探讨了Python中函数定义的基本方面,为开发者提供创建模块化、可复用且高效代码的基本知识。通过理解函数语法、参数和高级用法,程序员可以提升他们的Python编程技能,并编写更具结构性和可维护性的应用程序。
本全面教程探讨了Python中函数定义的基本方面,为开发者提供创建模块化、可复用且高效代码的基本知识。通过理解函数语法、参数和高级用法,程序员可以提升他们的Python编程技能,并编写更具结构性和可维护性的应用程序。
Python 中的函数是一段可复用的代码块,用于执行特定任务。它有助于组织代码、提高可读性并减少重复。函数是编写高效且模块化的 Python 程序的基础。
要在 Python 中定义函数,使用 def 关键字,后跟函数名和括号:
def greet():
print("Hello, LabEx learner!")
def calculate_square(number):
return number ** 2
## 调用函数
result = calculate_square(5)
print(result) ## 输出: 25
| 函数类型 | 描述 | 示例 |
|---|---|---|
| 无参数 | 无输入的函数 | def hello(): |
| 有参数 | 有输入的函数 | def add(a, b): |
| 有返回值 | 返回数据的函数 | def multiply(x, y): return x * y |
位置参数是函数参数中最基本的类型:
def introduce(name, age):
print(f"My name is {name}, I am {age} years old.")
introduce("Alice", 30) ## 正确的顺序很关键
关键字参数允许灵活地传递参数:
def create_profile(name, age, city):
return f"{name} is {age} from {city}"
## 使用关键字参数时顺序无关紧要
print(create_profile(city="New York", name="Bob", age=25))
默认参数提供了备用值:
def greet_user(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet_user("LabEx User") ## 使用默认问候语
greet_user("LabEx User", "Welcome") ## 使用自定义问候语
def sum_numbers(*args):
return sum(args)
print(sum_numbers(1, 2, 3, 4, 5)) ## 可以接受多个参数
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="John", age=30, city="London")
| 参数类型 | 语法 | 使用场景 |
|---|---|---|
| 位置参数 | def func(a, b) |
简单的、有序的参数 |
| 关键字参数 | func(a=1, b=2) |
灵活地传递参数 |
| 默认参数 | def func(a=10) |
提供默认值 |
| *args | def func(*args) |
多个位置参数 |
| **kwargs | def func(**kwargs) |
多个关键字参数 |
def complex_function(a, b, *args, option=True, **kwargs):
print(f"a: {a}, b: {b}")
print(f"额外的参数: {args}")
print(f"选项: {option}")
print(f"关键字参数: {kwargs}")
complex_function(1, 2, 3, 4, option=False, x=10, y=20)
lambda 函数是在一行中定义的小型匿名函数:
## 传统函数
def square(x):
return x ** 2
## 等效的 lambda 函数
square_lambda = lambda x: x ** 2
print(square(4)) ## 输出: 16
print(square_lambda(4)) ## 输出: 16
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers))
print(squared) ## 输出: [1, 4, 9, 16, 25]
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) ## 输出: [2, 4, 6, 8, 10]
装饰器用于修改或增强函数:
def timer_decorator(func):
import time
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
end = time.time()
print(f"函数耗时 {end - start} 秒")
return result
return wrapper
@timer_decorator
def slow_function():
import time
time.sleep(2)
print("LabEx 性能测试")
slow_function()
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5)) ## 输出: 120
def greet(name: str, age: int) -> str:
return f"你好 {name},你 {age} 岁了"
print(greet.__annotations__)
| 技术 | 描述 | 示例 |
|---|---|---|
| 闭包 | 记住环境的函数 | def outer(x): return lambda y: x + y |
| 生成器 | 内存高效的迭代器 | def count_up(n): yield from range(n) |
| 偏函数 | 使用预设参数创建新函数 | from functools import partial |
def divide(a, b):
try:
return a / b
except ZeroDivisionError:
return "不能除以零"
except TypeError:
return "无效的输入类型"
print(divide(10, 2)) ## 输出: 5.0
print(divide(10, 0)) ## 输出: 不能除以零
通过掌握 Python 函数定义语法,开发者能够创建更具条理性、可读性和高效性的代码。本教程涵盖了定义函数、理解参数类型以及实施高级函数策略的基本技术,使程序员能够编写更复杂且优雅的 Python 解决方案。