3.5 Python简单语句
Python语句由关键字
、标识符
、表达式
组成。语句的根本作用就是执行某些修改操作,让代码发挥作用去做某些事。
语句从执行结构上来分有顺序
、条件
、循环
结构,这3种结构可以实现任何算法功能。
Python语句根据代码占用的逻辑行数分为只占用1行的简单语句和占用多行的复合语句。
3.5.1 赋值语句
赋值语句用于将名称(重)绑定到特定值,以及修改属性或可变对象的成员项。
|
x = 23 |
|
x, y = 2, 3 # 多个变量的赋值 |
|
a = 2, 3 |
|
m = n = 11 # 链式赋值 |
3.5.2 assert 语句
assert语句又称断言语句。是在程序中插入调试性断言的简便方式。 用assert语句可以让程序在指定的时候检测某个结果是否为预期结果,如果不是预期结果则立刻抛出错误并停止程序运行。这有利于我们今早发现程序的异常并对程序排错,提高程序的强壮性。assert语句的语法结构为: assert 表达式 [,异常消息] # []
号代表里面的内容是可选的,下同 assert运行规则为先对表达式进行求值,如果为真,则继续执行程序接下来的其他代码。否则,在没有指定异常消息
时默认直接抛出AssertionError
错误。有指定时,抛出AssertionError
错误的同时提示异常消息
内容 >>> assert 1 < 0, '报错啦~'
Traceback (most recent call last): File "E:\studypy\tmp.py", line 1, in
assert 1 < 0, '报错啦~' AssertionError: 报错啦~
|
assert 0 <= mathmark <= 100 # 断言成绩得分必须在0~100之间 |
3.5.3 pass 语句
pass 是一个空操作,当它被执行时,什么都不发生。它适合当语法上需要一条语句但并不需要执行任何代码时用来临时占位,例如:
|
if a > 50: |
|
pass # 暂时没有想好要做什么,先用pass占位 |
3.5.4 del 语句
del用于删除一个对象。当对象被删除后如果再次调用则会报错:NameError 例如: >>> a = 5 >>> del a >>> a
Traceback (most recent call last): File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode exec(code, self.locals) File
<input>
, line 1, inNameError: name 'a' is not defined
3.5.5 return 语句
return语句一般只会用于函数定义中。当使用return语句后会离开当前函数调用,并以return后面跟着的对象作为函数的返回值。 关于return语句将在后续的函数中详细介绍。
3.5.6 yield 语句
yield 语句在语义上等同于 yield 表达式。 yield 表达式和语句仅在定义生成器函数时使用,并且仅被用于生成器函数的函数体内部。在函数定义中使用 yield 就足以使得该定义创建的是生成器函数而非普通函数。 关于yield语句将在后续的生成器中详细介绍。
3.5.7 raise 语句
raise语句用来直接引出一个异常。raise 语句的基本语法格式为: raise [异常名[(异常原因)]] 其中,用 [] 括起来的为可选参数,其作用是指定抛出的异常名称,以及异常信息的相关描述。如果可选参数全部省略,则 raise 会把当前错误原样抛出;如果仅省略 (异常原因),则在抛出异常时,将不附带任何的异常描述信息。 也就是说,raise 语句有如下三种常用的用法: 1、raise:单独一个 raise。该语句引发当前上下文中捕获的异常(比如在 except 块中),或默认引发 RuntimeError 异常。 >>> raise
Traceback (most recent call last): File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode exec(code, self.locals) File
<input>
, line 1, inRuntimeError: No active exception to reraise
2、raise 异常类名称:raise 后带一个异常类名称,表示引发执行类型的异常。如果不存在表达式,raise将直接引发RuntimeError异常。 >>> raise ValueError
Traceback (most recent call last): File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode exec(code, self.locals) File
<input>
, line 1, inValueError
3、raise 异常类名称(描述信息):在引发指定类型的异常的同时,附带异常的描述信息。 >>> raise ValueError('报错啦~')
Traceback (most recent call last): File "C:\Program Files\Python3102\lib\code.py", line 90, in runcode exec(code, self.locals) File
<input>
, line 1, inValueError: 报错啦~
3.5.8 break 语句
break 在语法上只会出现于 for 或 while 循环所嵌套的代码,但不会出现于该循环内部的函数或类定义所嵌套的代码中。 它会终结最近的外层循环,如果循环有可选的 else 子句,也会跳过该子句。 如果一个 for 循环被 break 所终结,该循环的控制目标会保持其当前值。 当 break 将控制流传出一个带有 finally 子句的 try 语句时,该 finally 子句会先被执行然后再真正离开该循环。 关于break语句将在后续的for循环和while循环中详细介绍。
3.5.9 continue 语句
continue 在语法上只会出现于 for 或 while 循环所嵌套的代码中,但不会出现于该循环内部的函数或类定义中。它会继续执行最近的外层循环的下一个轮次。 当 continue 将控制流传出一个带有 finally 子句的 try 语句时,该 finally 子句会先被执行然后再真正开始循环的下一个轮次。 关于continue语句将在后续的for循环和while循环中详细介绍。
3.5.10 import 语句
import语句用来导入模块或者包。之前已经在模块
章节详细介绍过了。
3.5.11 global 语句
global 语句是作用于整个当前代码块的声明。它意味着所列出的标识符将被解读为全局变量。要给全局变量赋值需要用到 global 关键字,不过自由变量也可以指向全局变量而不必声明为全局变量。 在 global 语句中列出的名称不得在同一代码块内该 global 语句之前的位置中使用。 在 global 语句中列出的名称不能被定义为形式参数,也不能被作为 with 语句或 except 子句的目标,以及 for 循环的目标列表、class 定义、函数定义、import 语句或变量标注等等。
3.5.12 nonlocal 语句
nonlocal 语句会使得所列出的名称指向之前在最近的包含作用域中绑定的除全局变量以外的变量。这种功能很重要,因为绑定的默认行为是先搜索局部命名空间。这个语句允许被封装的代码重新绑定局部作用域以外且非全局(模块)作用域当中的变量。 与 global 语句中列出的名称不同,nonlocal 语句中列出的名称必须指向之前存在于包含作用域之中的绑定(在这个应当用来创建新绑定的作用域不能被无歧义地确定)。 nonlocal 语句中列出的名称不得与之前存在于局部作用域中的绑定相冲突。 示例:
|
a = 1 |
|
|
|
|
|
def outer(): |
|
b = 2 |
|
|
|
def inner(): |
|
nonlocal b # 声明外部函数的局部变量 |
|
print(f"inner b:{b}") |
|
b = 3 |
|
global a # 声明全局变量 |
|
a = 4 |
|
|
|
inner() |
|
print(f"outer b:{b}") |
|
|
|
|
|
outer() |
|
print(f"a :{a}") |
inner b:2 outer b:3 a :4
练习 1、将教程中所有的简单语句示例全部手敲一遍并熟悉