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