当前位置:首页>python>Python函数 def()

Python函数 def()

  • 2026-08-22 11:08:10
Python函数 def()

函数是一段 可重复使用, 用来实现单一,或相关联功能的的代码块,用于执行特定的任务,能够提高应用的模块性,和代码的重复利用率。

1. 函数的定义

1.1. 基本语法

def 函数名(参数1, 参数2, ...):"""函数文档字符串(可选)"""# 函数体return 返回值  # 可选

1.2. 示例

defgreet():"""简单的问候函数"""    print("Hello, World!")# 调用函数greet()  # 输出: Hello, World!

2. 函数参数

2.1. 位置参数

defadd(a, b):"""两个数相加"""return a + bresult = add(3, 5)print(result)  # 输出: 8

2.2. 默认参数

defpower(base, exponent=2):"""计算幂,默认指数为2"""return base ** exponentprint(power(3))      # 输出: 9 (3的2次方)print(power(3, 3))   # 输出: 27 (3的3次方)

2.3. 关键字参数

defdescribe_person(name, age, city):returnf"{name} is {age} years old, living in {city}"# 使用关键字参数(顺序不重要)print(describe_person(age=25, city="Beijing", name="Alice"))

2.4. 可变参数 *args

defsum_all(*numbers):"""计算任意数量数字的和"""    total = 0for num in numbers:        total += numreturn totalprint(sum_all(1, 2, 3))        # 输出: 6print(sum_all(1, 2, 3, 4, 5))  # 输出: 15

2.5. 关键字可变参数 **kwargs

defprint_info(**info):"""打印任意数量的键值对"""for key, value in info.items():        print(f"{key}: {value}")print_info(name="Alice", age=25, city="Beijing")# 输出:# name: Alice# age: 25# city: Beijing

3. 返回值

3.1. 单个返回值

defsquare(x):return x * xresult = square(4)print(result)  # 输出: 16

3.2. 多个返回值(返回元组)

defmin_max(numbers):"""返回列表中的最小值和最大值"""return min(numbers), max(numbers)minimum, maximum = min_max([1, 5, 3, 9, 2])print(f"Min: {minimum}, Max: {maximum}")  # 输出: Min: 1, Max: 9

4. 函数作用域

变量的作用域是指变量的生效范围,主要分为:局部变量和全局变量

global_var = "I'm global"deftest_scope():    local_var = "I'm local"    print(local_var)      # 可以访问局部变量    print(global_var)     # 可以访问全局变量# 修改全局变量需要声明global global_var    global_var = "Modified global"test_scope()print(global_var)  # 输出: Modified global

全局变量 (Global Variables)

  • 在函数外部定义的变量
  • 可以在整个模块(文件)中访问
  • 程序运行期间一直存在
# 全局变量global_counter = 0PI = 3.14159COMPANY_NAME = "TechCorp"defshow_global():# 可以读取全局变量    print(f"计数器: {global_counter}")    print(f"PI值: {PI}")    print(f"公司: {COMPANY_NAME}")show_global()print(f"外部访问: {COMPANY_NAME}")  # 输出: 外部访问: TechCorp

局部变量 (Local Variables)

  • 在函数内部定义的变量
  • 只能在定义它的函数内部访问
  • 函数执行结束后,局部变量会被销毁
defcalculate():# 这些都是局部变量    a = 10    b = 20    result = a + b  # result也是局部变量    print(f"局部变量: a={a}, b={b}, result={result}")return resultcalculate()# 尝试在函数外访问局部变量会报错# print(a)  # NameError: name 'a' is not defined# print(result)  # NameError: name 'result' is not defined

修改全局变量

# 定义全局变量a = 100print(a)deftestA():    print(a)# B函数想要a的取值是200deftestB():global a  # 声明全局变量    a = 200# 全局变量    print(a)testA()  # 输出结果是100testB()  # 输出结果是200print(a)  # 输出结果是200

5. Lambda函数(匿名函数)

# 普通函数defsquare(x):return x ** 2# Lambda函数square_lambda = lambda x: x ** 2print(square(5))           # 输出: 25print(square_lambda(5))    # 输出: 25# 常用场景:作为参数传递numbers = [1, 2, 3, 4, 5]squared = list(map(lambda x: x ** 2, numbers))print(squared)  # 输出: [1, 4, 9, 16, 25]

6. 函数文档字符串

defcalculate_bmi(weight, height):"""    计算身体质量指数 (BMI)    参数:    weight (float): 体重 (kg)    height (float): 身高 (m)    返回:    float: BMI值    str: BMI分类    """    bmi = weight / (height ** 2)if bmi < 18.5:        category = "偏瘦"elif bmi < 24:        category = "正常"elif bmi < 28:        category = "超重"else:        category = "肥胖"return round(bmi, 2), category# 查看文档print(calculate_bmi.__doc__)print(help(calculate_bmi))

7. 应用

7.1. 示例1:计算器函数

defcalculator(a, b, operation='add'):"""简单的计算器函数"""    operations = {'add': a + b,'subtract': a - b,'multiply': a * b,'divide': a / b if b != 0else"Error: Division by zero"    }return operations.get(operation, "Invalid operation")print(calculator(10, 5, 'add'))       # 输出: 15print(calculator(10, 5, 'multiply'))  # 输出: 50print(calculator(10, 0, 'divide'))    # 输出: Error: Division by zero

7.2. 示例2:数据验证函数

defvalidate_user_input(username, password):"""    验证用户输入    返回: (是否有效, 错误消息)    """    errors = []# 验证用户名ifnot username:        errors.append("用户名不能为空")elif len(username) < 3:        errors.append("用户名至少需要3个字符")# 验证密码ifnot password:        errors.append("密码不能为空")elif len(password) < 6:        errors.append("密码至少需要6个字符")return len(errors) == 0, errorsis_valid, error_msgs = validate_user_input("ali", "123")print(f"有效: {is_valid}, 错误: {error_msgs}")

8. 最佳实践建议

  1. 函数命名 :使用小写字母和下划线,如 calculate_average
  2. 单一职责 :每个函数只做一件事
  3. 函数长度 :尽量保持函数简短(建议不超过30行)
  4. 参数数量 :避免过多参数(建议不超过4个)
  5. 文档字符串 :为复杂函数添加文档说明
  6. 类型提示 :
defgreet(name: str, age: int) -> str:returnf"Hello, {name}. You are {age} years old."

最新文章

随机文章