Logo
Section 1 / 13

语句和标识符

了解我们尚未涵盖的各类语句,并初步认识 Python 中的标识符概念。

导入

语句和标识符

了解我们尚未涵盖的各类语句,并初步认识 Python 中的标识符概念。

一些 Python 语句的说明

本节介绍之前未涵盖的 Python 语句,或具有更多选项的语句。让我们逐一了解:

1. import 语句:

  • import module 会导入指定模块中的所有名称,但使用这些名称时必须以 module. 的形式前缀。这是为了避免从多个模块导入相同名称时产生冲突。
  • from module import names 会导入指定的名称,使用时无需前缀 module.。如果 names 替换为通配符 *,则表示导入模块中所有名称。
  • import module as name 会导入模块中的所有名称,但使用时必须以 name. 前缀。
  • from module import name1 as name2 导入 name1,但将其重命名为 name2。
1from math import sqrt # 导入 math 模块 2 3x = 16 # 给 x 赋值 4sqrt_num = sqrt(x) # 使用内置的 sqrt 函数 5print(sqrt_num) # 显示结果

2. assert expression1, expression2

  • 如果 expression1 为真,则不执行任何操作;如果为假,则抛出 AssertionError 异常。可选的 expression2 会被用作异常信息。
  • assert 语句可视为“可执行文档”。它可用于函数开头声明参数要求,也可用于中间或末尾断言刚刚计算的结果。
1mystr = "Hello World" 2assert(mystr == "Hello Word") # 因两者不相等,会引发断言错误

3. var1, ..., varN = expr1, ..., exprN

  • 上述语句称为 同时赋值。左侧的变量将被赋予右侧表达式的值。需要注意的是,变量数量必须与表达式数量 完全一致。
1mystr = "Hello" 2s1, s2, s3, s4, s5 = mystr # s1=H, s2=e, s3=l, s4=l, s5=o 3print(s1, s2, s3, s4, s5)

4. break

  • 如果 break 在 while 或 for 循环中执行,将导致循环立即退出。
  • 如果在嵌套循环中执行 break,仅退出最内层包含 break 的循环。
  • 若循环因 break 退出,则后续的 else 子句不会被执行。(这在 Python 中较为特殊,因为循环可以带有 else 子句。)
1for x in range(1, 10): 2 if x == 3: 3 break # 将终止 for 循环 4 print(x)

5. continue

  • 如果 continue 在 while 或 for 循环中执行,循环体中剩余的语句将被跳过,控制权返回到循环顶部(while 循环返回条件判断处,for 循环则进入下一个迭代值)。
1for x in range(1, 10): 2 if x > 3 and x < 8: 3 continue # 将跳过当前循环索引 4 print(x)

6. del 变量

  • del 语句会使变量不再存在(变为未定义状态)。
1mystr = "Hello World" 2print(mystr) # 输出 Hello World 3 4del mystr 5print(mystr) # 会报错:mystr 未定义

7. else

  • while 和 for 循环后都可以跟 else 子句。当循环正常结束时,else 块中的代码会被执行;但如果循环是由于 break 退出的,则 else 不会执行。这是一种不常见的结构,用途并不明确。
1for x in range(1, 5): 2 print(x) 3else: # 没有 break 语句,因此会执行 4 print("Final")

8. exec(arg)

  • exec(arg) 用于执行一个字符串、字节串或代码对象 arg。代码对象不在本课程范围内。
  • exec 实际上是一个函数,但其返回值为 None,因此通常像语句一样使用。
  • 如果 arg 可能包含恶意或有害代码,请勿使用 exec。
1num = 10 2exec('print(5+num)') # 执行加法运算,输出 15

9. nonlocal 变量

  • 函数可以在其他函数内部嵌套定义。默认情况下,内部函数可以访问外部函数的变量,但不能修改它们。如果内部函数声明某些变量为 nonlocal,则既可以访问也可以修改这些变量。
  • 规则与局部变量和全局变量非常相似。
1def outer(): 2 temp = 5 3 4 def inner(): 5 nonlocal temp # 使用 nonlocal 关键字 6 temp = 10 # 修改 temp 的值 7 print("inner:", temp) 8 9 inner() 10 print("outer:", temp) 11 12outer()

10. pass

  • pass 语句不执行任何操作。当语法要求存在语句但无具体操作时,偶尔会用到。
  • 三个点号(...)与 pass 等价。
1for x in range(1, 5): 2 pass # 不做任何事,循环直接结束 3print("Done")

11. print(expr1, ..., exprN, sep=sepString, end=endString, file=outputFile)

  • print 语句会计算并打印表达式,各表达式之间用 sepString 分隔,最后以 endString 结尾,并输出到 outputFile。
  • 关键字参数 sep、end 和 file 可省略,分别默认为 ' '(单个空格)、\n(换行符)和 stdout。
1num = 50 2print(num, end='.00')

12. raise

  • raise Exception 抛出指定的异常,该异常之后可能由 try-except 语句捕获处理。Python 提供了大量内置异常类型,也可以通过继承 Exception 类来自定义异常。
  • raise Exception(expression) 抛出指定异常,并将表达式的结果作为异常消息。
  • 在 except 块中单独使用 raise 会重新抛出当前捕获的异常。
1for x in range(1, 5): 2 if x == 2: # 当 x 等于 2 时,抛出异常 3 raise Exception("抱歉,此数字不允许")

标识符简介

标识符 以字母或下划线开头,可包含字母、下划线和数字。大小写敏感,支持 Unicode 字符。

按惯例,类名以大写字母开头,其他名称则不以大写字母开头。

在类中,通常希望拥有 私有 实例变量,即只能在类内部访问或修改的字段。Python 中没有真正意义上的私有机制。因此,一些程序员采用约定:在希望设为私有的变量名前加一个下划线。若希望更严格地私有化,有时会使用两个下划线。语言定义的特殊名称通常以双下划线开头和结尾。

类

数字和字符串