3.1def语句和参数
核心知识点
函数是组织好的、可重复使用的代码块,用于实现单一或相关联功能。
- 定义:使用
def关键字定义函数。 - 调用:通过函数名加括号来执行函数。
- 参数:在函数定义时放在括号内的变量,用于接收调用时传入的值。
- 变元 (Argument):调用函数时传入的具体值。
语法
def function_name(parameter1, parameter2, ...): """文档字符串,描述函数功能""" # 函数体代码 return [expression] # 可选示例
# 定义一个计算两数之和的函数 def add(a, b): """返回两个数的和""" result = a + b return result # 调用函数,传入变元 3 和 5 sum_result = add(3, 5) print(sum_result) # 输出: 83.2 返回值和return语句
核心知识点
return语句用于从函数中返回一个值,并结束函数的执行。一个函数可以没有return语句,或者有多个return语句。
示例
def square(x): return x * x print(square(4)) # 输出: 16 def is_even(n): if n % 2 == 0: return True else: return False print(is_even(5)) # 输出: False3.3None值
核心知识点
None是一个特殊值,表示 “没有值” 或 “空值”。它是NoneType类型的唯一值。
- 如果一个函数没有
return语句,或者return后没有表达式,它默认返回None。
示例
def greet(): print("Hello") result = greet() print(result) # 输出: None def do_nothing(): return print(do_nothing()) # 输出: None3.4 关键字参数和print()函数
核心知识点
关键字参数允许你通过参数名来传递值,而不是依赖于参数的顺序。这在函数有多个参数时特别有用。print()函数就是一个典型的例子。
示例
# 默认的 print() 调用 print("Hello", "World") # 输出: Hello World # 使用关键字参数 sep 和 end print("Hello", "World", sep="-", end="!\n") # 输出: Hello-World!3.5 调用栈
核心知识点
调用栈(Call Stack)是计算机科学中存储有关程序中活跃函数的信息的栈。当一个函数被调用时,它的信息被压入栈顶;当函数执行完毕返回时,它的信息被弹出栈。
示例
def a(): print("进入函数a") b() print("离开函数a") def b(): print("进入函数b") c() print("离开函数b") def c(): print("进入函数c") print("离开函数c") a()输出顺序:
进入函数a 进入函数b 进入函数c 离开函数c 离开函数b 离开函数a调用栈变化:a入栈 ->b入栈 ->c入栈 ->c出栈 ->b出栈 ->a出栈。
3.6 局部和全局作用域
核心知识点
- 局部作用域:在函数内部定义的变量,只能在该函数内部访问。
- 全局作用域:在所有函数外部定义的变量,可以在整个程序中访问。
3.6.1 局部变量不能在全局作用域内使用
def my_func(): local_var = "我是局部变量" my_func() # print(local_var) # 错误!局部变量在外部不可见3.6.2 局部作用域不能使用其他局部作用域内的变量
def func1(): var1 = 10 def func2(): # print(var1) # 错误!var1 是 func1 的局部变量 pass3.6.3 全局变量可以在局部作用域中读取
global_var = "我是全局变量" def my_func(): print(global_var) # 可以读取全局变量 my_func() # 输出: 我是全局变量3.6.4 名称相同的局部变量和全局变量
如果局部变量和全局变量同名,局部变量会在其作用域内 “遮蔽” 全局变量。
x = 100 # 全局变量 def my_func(): x = 10 # 局部变量,遮蔽了全局变量x print("局部x:", x) my_func() # 输出: 局部x: 10 print("全局x:", x) # 输出: 全局x: 1003.7global语句
核心知识点
global语句用于在函数内部声明一个变量是全局变量,这样就可以在函数内部修改全局变量。
示例
x = 100 def modify_global(): global x # 声明x是全局变量 x = 200 # 修改全局变量x modify_global() print(x) # 输出: 2003.8 异常处理
核心知识点
异常是程序运行时发生的错误。try...except语句用于捕获并处理异常,防止程序崩溃。
语法
try: # 可能会引发异常的代码 except ExceptionType: # 处理异常的代码示例
try: num = int(input("请输入一个整数:")) print(10 / num) except ValueError: print("你输入的不是整数!") except ZeroDivisionError: print("除数不能为零!")3.9 小程序: Zigzag
核心逻辑
编写一个函数,绘制一个类似锯齿形的图案。
示例代码
def zigzag(height): for i in range(height): if i % 2 == 0: print(' ' * i + '*') else: print(' ' * (height - 1 - i) + '*') zigzag(5)输出:
* * * * *3.10 小结
本章讲解了 Python 函数的核心概念:
- 函数定义与调用:
def语句和函数调用。 - 参数与返回值:如何向函数传递数据和从函数获取结果。
- 特殊值与参数:
None值和关键字参数。 - 执行流程与作用域:调用栈、局部作用域和全局作用域。
- 作用域修改:
global语句的使用。 - 错误处理:
try...except的基本用法。