在 python 中,def function_name
是定义函数的基本语法。函数是组织好的、可重复使用的代码块,用于执行单一或相关联的任务。
下面详细介绍函数的定义、参数、返回值及实战案例。
1. 函数定义语法
def function_name(parameters): """函数文档字符串(可选)""" # 函数体 return value # 返回值(可选)
关键要素
def
:关键字,声明函数。function_name
:函数名,遵循标识符规则(小写字母、下划线)。parameters
(参数):函数接收的输入,可选。return
:语句,用于返回结果,可省略(默认返回none
)。
2. 参数类型
函数参数分为以下几类:
位置参数(positional arguments)
def add(a, b): return a + b result = add(3, 5) # a=3, b=5,按位置传递参数
默认参数(default arguments)
def greet(name, msg="hello"): return f"{msg}, {name}!" print(greet("alice")) # 使用默认值:"hello, alice!" print(greet("bob", "hi")) # 覆盖默认值:"hi, bob!"
*可变参数(args)
接收任意数量的位置参数,打包为元组。
def sum_all(*args): return sum(args) print(sum_all(1, 2, 3)) # 输出: 6 print(sum_all(1, 2, 3, 4)) # 输出: 10
** 关键字参数(kwargs)
接收任意数量的关键字参数,打包为字典。
def print_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="alice", age=30) # 输出: # name: alice # age: 30
混合使用
def complex_func(a, b=10, *args, **kwargs): print(f"a={a}, b={b}, args={args}, kwargs={kwargs}") complex_func(1, 2, 3, 4, x=5, y=6) # 输出: a=1, b=2, args=(3, 4), kwargs={'x': 5, 'y': 6}
3. 返回值
函数可通过return
语句返回值,支持返回多个值(元组形式)。
def calculate(a, b): return a + b, a - b, a * b # 返回多个值 sum_result, diff_result, prod_result = calculate(5, 3) print(sum_result) # 输出: 8 print(diff_result) # 输出: 2 print(prod_result) # 输出: 15
4. 实战案例
案例 1:字符串反转
def reverse_string(s): return s[::-1] print(reverse_string("hello")) # 输出: "olleh"
案例 2:判断素数
def is_prime(num): if num < 2: return false for i in range(2, int(num ** 0.5) + 1): if num % i == 0: return false return true print(is_prime(7)) # 输出: true print(is_prime(8)) # 输出: false
案例 3:文件读取
def read_file(filename): try: with open(filename, 'r') as f: return f.read() except filenotfounderror: return none content = read_file("data.txt") if content: print(content) else: print("文件不存在")
案例 4:高阶函数(函数作为参数)
def apply_operation(func, a, b): return func(a, b) def multiply(x, y): return x * y result = apply_operation(multiply, 3, 4) print(result) # 输出: 12
5. 注意事项
作用域:函数内部定义的变量为局部变量,外部无法访问。
def test(): x = 10 print(x) # 报错:nameerror
默认参数的陷阱:默认参数只在函数定义时初始化一次,避免使用可变对象(如列表)作为默认参数。
def append_value(value, lst=[]): # 错误示例 lst.append(value) return lst print(append_value(1)) # 输出: [1] print(append_value(2)) # 输出: [1, 2](非预期)
正确做法:
def append_value(value, lst=none): if lst is none: lst = [] lst.append(value) return lst
文档字符串(docstring):建议为函数添加文档说明,通过__doc__
属性访问。
def my_func(): """这是一个示例函数""" pass print(my_func.__doc__) # 输出: "这是一个示例函数"
6. 进阶技巧
lambda 函数(匿名函数)
适用于简单的单行函数:
square = lambda x: x ** 2 print(square(5)) # 输出: 25
装饰器(decorators)
用于扩展函数功能:
def timer_decorator(func): import time def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) print(f"函数运行时间: {time.time() - start_time}秒") return result return wrapper @timer_decorator def heavy_computation(n): return sum(i*i for i in range(n)) heavy_computation(1000000) # 输出运行时间
总结
函数是 python 编程的核心,通过合理定义参数、返回值和函数体,可以实现代码复用和模块化。掌握位置参数、默认参数、可变参数、关键字参数的用法,以及返回值的处理,是编写高效 python 代码的基础。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论