# Python 函数基础知识 ## 1. 什么是函数 函数就是一段可重复使用的代码,用来封装特定逻辑。 ```python def greet(name): return f"Hello, {name}!" ``` 特点: - 可复用 - 便于维护 - 让代码更清晰 ## 2. 命名函数 最常见的函数是命名函数。 ```python def add(a, b): return a + b ``` 调用方式: ```python result = add(3, 5) print(result) # 8 ``` ## 3. 参数 函数可以接收参数。 ```python def greet(name): print(f"Hello, {name}") ``` 调用: ```python greet("Tom") ``` ## 4. 返回值 函数可以返回结果。 ```python def add(a, b): return a + b ``` 返回值可以赋给变量: ```python result = add(2, 3) print(result) # 5 ``` 如果函数中没有 `return`,默认返回 `None`。 ## 5. 默认参数 函数参数可以带默认值。 ```python def power(base, exponent=2): return base ** exponent print(power(3)) # 9 print(power(3, 3)) # 27 ``` ## 6. 关键字参数 可以按参数名传值。 ```python def show_student(name, age, city="Beijing"): print(name, age, city) show_student("Alice", 18) show_student(name="Bob", age=20, city="Shanghai") ``` ## 7. 位置参数和关键字参数 ### 位置参数 ```python def add(a, b): return a + b print(add(3, 5)) ``` ### 关键字参数 ```python def add(a, b): return a + b print(add(a=3, b=5)) ``` ## 8. 可变参数 `*args` `*args` 表示接收任意数量的位置参数。 ```python def sum_all(*numbers): total = 0 for n in numbers: total += n return total print(sum_all(1, 2, 3, 4)) # 10 ``` ## 9. 关键字可变参数 `**kwargs` `**kwargs` 表示接收任意数量的关键字参数。 ```python def print_scores(**scores): for key, value in scores.items(): print(f"{key} = {value}") print_scores(math=90, english=88) ``` ## 10. 返回多个值 函数可以一次返回多个值,实际上返回的是一个元组。 ```python def get_info(): return "Tom", 18 name, age = get_info() print(name, age) ``` ## 11. 匿名函数 lambda `lambda` 用于定义简单函数。 ```python square = lambda x: x * x print(square(6)) # 36 ``` 适合: - 简单计算 - 回调函数 - 一次性逻辑 ## 12. 递归函数 递归函数是自己调用自己的函数。 ```python def factorial(n): if n == 1 or n == 0: return 1 return n * factorial(n - 1) print(factorial(5)) # 120 ``` 注意: - 递归必须有终止条件 - 否则会造成无限递归 ## 13. 作用域 ### 全局变量 ```python count = 0 def increase(): global count count += 1 return count ``` ### 局部变量 ```python def test(): x = 5 print(x) ``` 局部变量只在函数内有效。 ## 14. 闭包 闭包是指:函数内部定义了函数,并返回这个内部函数。 ```python def outer(): x = 10 def inner(): return x + 5 return inner c = outer() print(c()) # 15 ``` ## 15. 函数与方法的区别 ### 函数 ```python def greet(name): print(f"Hello, {name}") ``` ### 方法 ```python class Person: def greet(self, name): print(f"Hello, {name}") ``` 区别: - 函数独立存在 - 方法属于类或对象 - 调用方式不同 ## 16. 函数嵌套 函数可以定义在另一个函数内部。 ```python def outer(): def inner(): print("inner") inner() outer() ``` ## 17. nonlocal 如果要修改外层函数中的变量,需要使用 `nonlocal`。 ```python def outer(): x = 10 def inner(): nonlocal x x += 1 print(x) inner() outer() ``` ## 18. 文档字符串 docstring 函数可以写说明文档。 ```python def add(a, b): """返回 a 和 b 的和""" return a + b ``` 查看: ```python print(add.__doc__) ``` ## 19. 函数作为参数 函数也可以作为参数传递给其他函数。 ```python def operate(x, func): return func(x) print(operate(5, lambda x: x * 2)) # 10 ``` ## 20. 常见函数分类 - 命名函数 - 默认参数函数 - 可变参数函数 - 关键字参数函数 - 匿名函数(lambda) - 递归函数 - 生成器函数 - 闭包函数 ## 21. 一句话总结 函数就是把一段代码封装成一个可重复调用的模块,能够提高代码复用性、可维护性和清晰度。 Python 中函数最核心的知识包括: - 参数 - 返回值 - 默认参数 - 可变参数 - 递归 - 作用域 - 闭包 掌握这些后,后续学习类、装饰器、生成器都会更容易。