ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【Python学习笔记】 第10章 Python语句简介 [打印本页]

作者: 数据人与超自然意识    时间: 2024-11-15 17:03
标题: 【Python学习笔记】 第10章 Python语句简介
重温Python的知识结构

从基础上看,Python编写的程序现实上时由语句和表达式构成的。表达式用于处理对象,并被嵌入到语句中。语句利用并引导表达式处理我们前几章所学的对象。
语句可以创建对象。
Python的语句

下表总结了Python的语句集。此中,有些语句已经在前面的章节中利用到。
语句功能示例赋值创建引用值a, b = 'good', 'bad'调用与其他表达式运行函数log.write("spam, ham")print调用打印对象print('The Killer', joke)if/elif/else选择动作if "python" in text:
  print(text)
for序列迭代for x in mylist:
  print(text)
while通用循环while X > Y:
  print('hello')
pass空占位符while True:
  pass
break循环推出while True:
  if exittest(): break
continue循环继续while True:
  if skiptest(): continue
def函数与方法def f(a, b, c=1, *d):
  print(a+b+c+d[0])
return函数效果def f(a, b, c=1, *d):
  return a+b+c+d[0]
yield生成器函数def gen(n):
  for i in n: yield i*2
global定名空间x = 'old'
def function():
  global x, y; x = 'new'
nonlocal定名空间def outer():
  x = 'old'
def function():
  global x, y; x = 'new'
import获取模块import sysfrom获取属性from sys import stdinclass构建对象class Subclass(Superclass):
  staticData = []
  def method(self): pass
try/except/finally捕获非常try:
  action()
except:
  print("action error")raise触发非常raise EndSearch(location)assert调试查抄assert X > Y, 'X too small'with/as上下文管理器(3.X,2.6+)with open('data') as myfile:
  process(myfile)del删除引用del data[k]
del data[i:j]
del obj.attr
del variable说明:
版本2.X的特性:
两种不同的if

这里侧重说明Python的语法与C/C++的语法的不同。以if为例,在C/C++是这么写的:
  1. if (x > y){
  2.     x = 1;
  3.     y = 2;
  4. }
复制代码
Python是这么写的:
  1. if x > y:
  2.     x = 1
  3.     y = 2
复制代码
看上去,Python更简便。
Python增加的元素

Python增加了冒号:,全部的Python复合语句(即内嵌了其他语句的语句)都是如此,即首行以冒号结尾,下一行嵌套的代码缩进:
  1. Header line:
  2.     Nested statement block
复制代码
Python删除的元素

括号是可选的

首先是语句第一行的括号:
  1. if (x > y){
复制代码
在Python中,可以不用括号。固然用括号不会报错,但不用括号更接近Python风格。
行终止就是语句终止

在C/C++中,语句以分号;终止。一般情况下,Python的语句以一行的竣事为竣事而不需要分号。也就是说,x = 1 会被视为一个语句。但是,如果用一些特殊手段,Python的语句会变为多行。
缩进的竣事就是代码块的竣事

在C/C++中,代码块以左大括号{开始,以右大括号}竣事。在Python中,代码块以开始缩进为开始,以竣事缩进为竣事。这里,代码块就是第2-3行。缩进就是:左侧留空缺。
  1. if x > y:
  2.     x = 1
  3.     y = 2a = 1
复制代码
为什么接纳缩进语法

根据逻辑结构将代码对齐是使程序具有可读性的紧张步骤。现实上,编写任何语言的代码都需要通过缩进来提高可读性,成熟的IDE也支持主动缩进。
履历法则:不应该在同一段Python代码中混合利用制表符\t和空格,否则会引发错误。
几种特殊情况

在Python语法模型中:
语法规则的特殊情况

一行挤进多条语句,此时这些语句由分号隔离的情况:
  1. >>> a = 1; b = 2; print(a + b)
  2. 3
复制代码
只有当摆到一起的语句本身不是复合语句时才这么做,如果有if、while等语句最好单独开一行。
一条语句的范围横跨多行的情形。实现这一操作只需要用一对括号把语句括起来。任何括在这些符号里的代码都可以超过好几行,直到Python遇到闭合括号的那一行。
  1. mylist = [1111,
  2.               2222,
  3.               3333]
复制代码
这里程序被括在一对方括号里,因此Python接着运行下一行,直到遇见闭合的方括号为止。大括号中的字典聚集、中括号的序列、小括号的元组都可以这么用。
括号可以包罗统统,包括表达式和复合语句:
  1. X = (A + B +
  2.      C + D)
  3. if (A == 1 and
  4.     B == 2 and
  5.     C == 3):
  6.     print('spam' * 3)
复制代码
还有一种方法能够超过数行——用反斜线。
  1. X = A + B + \
  2.     C + D
复制代码
这种方法容易引发错误(反斜线不能有空格),因此不推荐。
代码块规则的特殊情况

复合语句的主体如果只有一行,可以出现在Python的首行冒号之后:
  1. if x > y: print(x)
复制代码
当然,这种情况只实用于复合语句本身只包罗一个简单语句的情况。也可以用多个语句用分号挤进一行(但不推荐)。
简短示例:交互式循环

一个简单的交互式循环

假设有人要求写一个程序,要求在控制窗口与用户交互。准确的说,要求用户键盘输入数据的循环并打印每次读取的效果。我们需要写一个标准的“读取/计算/打印”的循环程序。
这种程序雷同于:
  1. while True:
  2.     reply = input('Enter text:')
  3.     if reply == 'stop': break
  4.     print(reply.upper())
复制代码
以下是这段代码的解释:
这段代码的功能是:从用户读取一行输入,并转换成大写字母打印,直到用户输入stop为止。留意到,while首行下面的三行代码都有同样水平的缩进,这意味着它们都是与while相关联、重复的代码块。
对用户输入做数学运算

以刚才的交互式循环为基础,我们要做一些数学运算。好比,每一次循环,输入一个数,返回这个数的平方:
  1. while True:
  2.     reply = input('Enter text:')
  3.     if reply == 'stop': break
  4.     print(int(reply) ** 2)
  5. print('Bye')
复制代码
用户输入的数是以字符串类型表示的,但是只有数值类型才能进行平方运算。因此我们要通过int函数把字符串转换为整数。
这里的程序在末端加了输出'Bye'的信息。由于它没有缩进,故不是循环体的一部分。也就是说,跳出循环后这个语句才会执行。
通过测试输入数据来处理错误

对应刚才的程序而言,如果我们输入了处数字和stop以外的内容,会出现错误。
  1. Enter text:123
  2. 15129
  3. Enter text:?
  4. Traceback (most recent call last):
  5.   File "<.py文件的绝对路径>", line 4, in <module>
  6.     print(int(reply) ** 2)
  7. ValueError: invalid literal for int() with base 10: '?'
复制代码
这是因为我们刚才忽略了“乱输入”的情况。我们可以用字符串对象的isdigit方法查抄字符串是否为一个数字:
  1. while True:
  2.     reply = input('Enter text:')
  3.     if reply == 'stop':
  4.         break
  5.     elif not reply.isdigit():
  6.         print('Bad!' * 8)
  7.     else:
  8.         print(int(reply) ** 2)
  9. print('Bye')
复制代码
这里,if、elif、else是同一个语句的构成部分,Python执行语句时会从上到下检测冒号前面的表达式是否为真,如果为真则执行代码块,否则跳到代码块下一行。接着,整个if区块都在while循环的一部分。
运行时,如果输入的既不是数字,也不是stop,那么程序会在错误发生前捕获它,并打印错误消息,否则其行为与之前的程序稳定。
用try处理错误

try也可以捕获错误并做出反应。
  1. while True:
  2.     reply = input('Enter text:')
  3.     if reply == 'stop': break
  4.     try:
  5.         num = int(reply)
  6.     except:
  7.         print('Bad!' * 8)
  8.     else:
  9.         print(num ** 2)
  10. print('Bye!')
复制代码
try是一种复合语句,其构成是:try关键字后面跟着一个代码块,再跟着一个提供非常处理代码的except部分、以及没有引发非常时执行的else部分。Python首先执行try后面的代码块,如果有非常,则执行except的代码块,否则执行else的代码块。
对浮点数的支持

如果我们不只是要计算整数的平方,我们可以用float()方法把字符串转化为浮点数。但是,此时我们不能用isdigit()函数了,也就是第一种方法不行。
嵌套三层深的代码

我们可以进一步改进。好比,我们根据输入的大小,决定是否打印效果。
  1. while True:
  2.     reply = input('Enter text:')
  3.     if reply == 'stop':
  4.         break
  5.     elif not reply.isdigit():
  6.         print('Bad!' * 8)
  7.     else:
  8.         num = int(reply)
  9.         if num < 20:
  10.             print('low')
  11.         else:
  12.             print(int(reply) ** 2)
  13. print('Bye')
复制代码
这个版本把一个if语句嵌入另一条if语句的else部分。当出现这样嵌套的情形时,我们只需要再向右缩进即可。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4