| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- """functions_basics.py - Python 函数基础示例
- 涵盖:普通函数、参数、返回值、默认参数、关键字参数、可变参数、
- 匿名函数、递归函数、作用域和闭包基础等。
- 类变量和实例变量的查找顺序
- """
- def greet(name):
- """普通函数:接收参数并返回字符串。"""
- return f"Hello, {name}!"
- def add(a, b):
- """普通函数:求和。"""
- return a + b
- def power(base, exponent=2):
- """默认参数:exponent 默认值为 2。"""
- return base ** exponent
- def show_student(name, age, city="Beijing"):
- """默认参数示例。"""
- print(f"Name: {name}, Age: {age}, City: {city}")
- def print_info(name, *, age, city):
- """keyword-only 参数:必须使用关键字传参。"""
- print(f"{name}, {age}, {city}")
- def sum_all(*numbers):
- """可变参数:接收任意数量的位置参数。"""
- total = 0
- for n in numbers:
- total += n
- return total
- def print_scores(**scores):
- """关键字可变参数:接收任意数量关键字参数。"""
- for key, value in scores.items():
- print(f"{key} = {value}")
- def factorial(n):
- """递归函数:阶乘。"""
- if n == 1 or n == 0:
- return 1
- return n * factorial(n - 1)
- def outer():
- """闭包示例:内部函数访问外部变量。"""
- x = 10
- def inner():
- return x + 5
- return inner
- inner2 = outer() # outer() 返回 inner 函数对象
- print("inner() ->", inner2()) # 调用 inner 函数
- # 匿名函数(lambda)
- square = lambda x: x * x
- # lambda 参数列表: 表达式
- # f = lambda x, y: x + y
- # f(2,3) # 返回 5
- # 全局变量与局部变量
- count = 0
- def increase():
- global count
- count += 1
- return count
- # 默认参数注意事项:不要使用可变对象作为默认值
- # 例如:def append_item(items=[]): ...
- def main():
- print("greet('Tom') ->", greet("Tom"))
- print("add(3, 5) ->", add(3, 5))
- print("power(3) ->", power(3))
- print("power(3, 3) ->", power(3, 3))
- show_student("Alice", 18)
- show_student("Bob", 20, "Shanghai")
- print_info("Tom", age=25, city="Hangzhou")
- print("sum_all(1, 2, 3, 4) ->", sum_all(1, 2, 3, 4))
- print_scores(math=90, english=88, history=94)
- print("factorial(5) ->", factorial(5))
- closure = outer()
- print("closure() ->", closure())
- print("square(6) ->", square(6))
- print("increase() ->", increase())
- print("increase() ->", increase())
- # 函数作为参数传递
- def do_math(x, func):
- return func(x)
- print("do_math(8, square) ->", do_math(8, square))
- # 三元表达式
- x = 1
- y = 2
- result = x if x > y else y
- if __name__ == '__main__':
- main()
|