functions_basics.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. """functions_basics.py - Python 函数基础示例
  2. 涵盖:普通函数、参数、返回值、默认参数、关键字参数、可变参数、
  3. 匿名函数、递归函数、作用域和闭包基础等。
  4. 类变量和实例变量的查找顺序
  5. """
  6. def greet(name):
  7. """普通函数:接收参数并返回字符串。"""
  8. return f"Hello, {name}!"
  9. def add(a, b):
  10. """普通函数:求和。"""
  11. return a + b
  12. def power(base, exponent=2):
  13. """默认参数:exponent 默认值为 2。"""
  14. return base ** exponent
  15. def show_student(name, age, city="Beijing"):
  16. """默认参数示例。"""
  17. print(f"Name: {name}, Age: {age}, City: {city}")
  18. def print_info(name, *, age, city):
  19. """keyword-only 参数:必须使用关键字传参。"""
  20. print(f"{name}, {age}, {city}")
  21. def sum_all(*numbers):
  22. """可变参数:接收任意数量的位置参数。"""
  23. total = 0
  24. for n in numbers:
  25. total += n
  26. return total
  27. def print_scores(**scores):
  28. """关键字可变参数:接收任意数量关键字参数。"""
  29. for key, value in scores.items():
  30. print(f"{key} = {value}")
  31. def factorial(n):
  32. """递归函数:阶乘。"""
  33. if n == 1 or n == 0:
  34. return 1
  35. return n * factorial(n - 1)
  36. def outer():
  37. """闭包示例:内部函数访问外部变量。"""
  38. x = 10
  39. def inner():
  40. return x + 5
  41. return inner
  42. inner2 = outer() # outer() 返回 inner 函数对象
  43. print("inner() ->", inner2()) # 调用 inner 函数
  44. # 匿名函数(lambda)
  45. square = lambda x: x * x
  46. # lambda 参数列表: 表达式
  47. # f = lambda x, y: x + y
  48. # f(2,3) # 返回 5
  49. # 全局变量与局部变量
  50. count = 0
  51. def increase():
  52. global count
  53. count += 1
  54. return count
  55. # 默认参数注意事项:不要使用可变对象作为默认值
  56. # 例如:def append_item(items=[]): ...
  57. def main():
  58. print("greet('Tom') ->", greet("Tom"))
  59. print("add(3, 5) ->", add(3, 5))
  60. print("power(3) ->", power(3))
  61. print("power(3, 3) ->", power(3, 3))
  62. show_student("Alice", 18)
  63. show_student("Bob", 20, "Shanghai")
  64. print_info("Tom", age=25, city="Hangzhou")
  65. print("sum_all(1, 2, 3, 4) ->", sum_all(1, 2, 3, 4))
  66. print_scores(math=90, english=88, history=94)
  67. print("factorial(5) ->", factorial(5))
  68. closure = outer()
  69. print("closure() ->", closure())
  70. print("square(6) ->", square(6))
  71. print("increase() ->", increase())
  72. print("increase() ->", increase())
  73. # 函数作为参数传递
  74. def do_math(x, func):
  75. return func(x)
  76. print("do_math(8, square) ->", do_math(8, square))
  77. # 三元表达式
  78. x = 1
  79. y = 2
  80. result = x if x > y else y
  81. if __name__ == '__main__':
  82. main()