Python内置函数之def function_name函数解读
作者:alden_ygq
这篇文章主要介绍了Python内置函数之def function_name函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
在 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 代码的基础。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
