广告
返回顶部
首页 > 资讯 > 后端开发 > Python >深入 Python 流程控制
  • 554
分享到

深入 Python 流程控制

流程Python 2023-01-30 22:01:34 554人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

 if 语句 也许最有名的是 if 语句。例如: >>> x = int(input("Please enter an integer: ")) Please enter an integer: 42 >&g

 if 语句

也许最有名的是 if 语句。例如:

>>> x = int(input("Please enter an integer: "))
Please enter an integer: 42
>>> if x < 0:
...      x = 0
...      print('Negative changed to zero')
... elif x == 0:
...      print('Zero')
... elif x == 1:
...      print('Single')
... else:
...      print('More')
...
More

可能会有零到多个 elif 部分,else 是可选的。关键字 ‘elif’ 是 ’else if’ 的缩写,这个可以有效地避免过深的缩进。if … elif … elif … 序列用于替代其它语言中的 switch 或 case 语句。 

. for 语句

python 中的 for 语句和 C 或 Pascal 中的略有不同。通常的循环可能会依据一个等差数值步进过程(如 Pascal),或由用户来定义迭代步骤和中止条件(如 C ),Python 的 for 语句依据任意序列(链表字符串)中的子项,按它们在序列中的顺序来进行迭代。例如(没有暗指):

>>> # Measure some strings:
... Words = ['cat', 'window', 'defenestrate']
>>> for w in words:
...     print(w, len(w))
...
cat 3
window 6
defenestrate 12

在迭代过程中修改迭代序列不安全(只有在使用链表这样的可变序列时才会有这样的情况)。如果你想要修改你迭代的序列(例如,复制选择项),你可以迭代它的复本。使用切割标识就可以很方便的做到这一点:

>>> for w in words[:]:  # Loop over a slice copy of the entire list.
...     if len(w) > 6:
...         words.insert(0, w)
...
>>> words
['defenestrate', 'cat', 'window', 'defenestrate']

. range() 函数

如果你需要一个数值序列,内置函数 range() 会很方便,它生成一个等差级数链表:

>>> for i in range(5):
...     print(i)
...
0
1
2
3
4

range(10) 生成了一个包含 10 个值的链表,它用链表的索引值填充了这个长度为 10 的列表,所生成的链表中不包括范围中的结束值。也可以让 range() 操作从另一个数值开始,或者可以指定一个不同的步进值(甚至是负数,有时这也被称为 “步长”):

range(5, 10)
   5 through 9

range(0, 10, 3)
   0, 3, 6, 9

range(-10, -100, -30)
  -10, -40, -70

需要迭代链表索引的话,如下所示结合使 用 range() 和 len()

>>> a = ['Mary', 'had', 'a', 'little', 'lamb']
>>> for i in range(len(a)):
...     print(i, a[i])
...
0 Mary
1 had
2 a
3 little
4 lamb

不过,这种场合可以方便的使用 enumerate(),请参见 循环技巧。

如果你只是打印一个序列的话会发生奇怪的事情:

>>> print(range(10))
range(0, 10)

在不同方面 range() 函数返回的对象表现为它是一个列表,但事实上它并不是。当你迭代它时,它是一个能够像期望的序列返回连续项的对象;但为了节省空间,它并不真正构造列表。

我们称此类对象是 可迭代的,即适合作为那些期望从某些东西中获得连续项直到结束的函数或结构的一个目标(参数)。我们已经见过的 for 语句就是这样一个迭代器。list() 函数是另外一个( 迭代器 ),它从可迭代(对象)中创建列表:

>>> list(range(5))
[0, 1, 2, 3, 4]

稍后我们会看到更多返回可迭代(对象)和以可迭代(对象)作为参数的函数。

 break 和 continue 语句, 以及循环中的 else 子句

break 语句和 C 中的类似,用于跳出最近的一级 for 或 while 循环。

循环可以有一个 else 子句;它在循环迭代完整个列表(对于 for )或执行条件为 false (对于 while )时执行,但循环被 break 中止的情况下不会执行。以下搜索素数的示例程序演示了这个子句:

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print(n, 'equals', x, '*', n//x)
...             break
...     else:
...         # loop fell through without finding a factor
...         print(n, 'is a prime number')
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

(Yes, 这是正确的代码。看仔细:else 语句是属于 for 循环之中, 不是 if 语句。)

与循环一起使用时,else 子句与 try 语句的 else 子句比与 if 语句的具有更多的共同点:try 语句的 else 子句在未出现异常时运行,循环的 else 子句在未出现 break 时运行。更多关于 try 语句和异常的内容,请参见 异常处理。

continue 语句是从 C 中借鉴来的,它表示循环继续执行下一次迭代:

>>> for num in range(2, 10):
...     if num % 2 == 0:
...         print("Found an even number", num)
...         continue
...     print("Found a number", num)
Found an even number 2
Found a number 3
Found an even number 4
Found a number 5
Found an even number 6
Found a number 7
Found an even number 8
Found a number 9

. pass 语句

pass 语句什么也不做。它用于那些语法上必须要有什么语句,但程序什么也不做的场合,例如:

>>> while True:
...     pass  # Busy-wait for keyboard interrupt (Ctrl+C)
...

这通常用于创建最小结构的类:

>>> class MyEmptyClass:
...     pass
...

另一方面,pass 可以在创建新代码时用来做函数或控制体的占位符。可以让你在更抽象的级别上思考。pass 可以默默的被忽视:

>>> def initlog(*args):
...     pass   # Remember to implement this!
...

. 定义函数

我们可以创建一个用来生成指定边界的斐波那契数列的函数:

>>> def fib(n):    # write Fibonacci series up to n
...     """Print a Fibonacci series up to n."""
...     a, b = 0, 1
...     while a < n:
...         print(a, end=' ')
...         a, b = b, a+b
...     print()
...
>>> # Now call the function we just defined:
... fib(2000)
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597

关键字 def 引入了一个函数 定义。在其后必须跟有函数名和包括形式参数的圆括号。函数体语句从下一行开始,必须是缩进的。

函数体的第一行语句可以是可选的字符串文本,这个字符串是函数的文档字符串,或者称为 docstring。(更多关于 docstrings 的信息请参考 文档字符串) 有些工具通过 docstrings 自动生成在线的或可打印的文档,或者让用户通过代码交互浏览;在你的代码中包含 docstrings 是一个好的实践,让它成为习惯吧。

函数 调用 会为函数局部变量生成一个新的符号表。确切的说,所有函数中的变量赋值都是将值存储在局部符号表。变量引用首先在局部符号表中查找,然后是包含函数的局部符号表,然后是全局符号表,最后是内置名字表。因此,全局变量不能在函数中直接赋值(除非用 global 语句命名),尽管他们可以被引用。

函数引用的实际参数在函数调用时引入局部符号表,因此,实参总是 传值调用 (这里的  总是一个对象 引用 ,而不是该对象的值)。[1] 一个函数被另一个函数调用时,一个新的局部符号表在调用过程中被创建。

一个函数定义会在当前符号表内引入函数名。函数名指代的值(即函数体)有一个被 Python 解释器认定为 用户自定义函数 的类型。 这个值可以赋予其他的名字(即变量名),然后它也可以被当做函数使用。这可以作为通用的重命名机制:

>>> fib
<function fib at 10042ed0>
>>> f = fib
>>> f(100)
0 1 1 2 3 5 8 13 21 34 55 89

如果你使用过其他语言,你可能会反对说:fib 不是一个函数,而是一个方法,因为它并不返回任何值。事实上,没有 return 语句的函数确实会返回一个值,虽然是一个相当令人厌烦的值(指 None )。这个值被称为 None (这是一个内建名称)。如果 None 值是唯一被书写的值,那么在写的时候通常会被解释器忽略(即不输出任何内容)。如果你确实想看到这个值的输出内容,请使用 print() 函数:

>>> fib(0)
>>> print(fib(0))
None

定义一个返回斐波那契数列数字列表的函数,而不是打印它,是很简单的:

>>> def fib2(n): # return Fibonacci series up to n
...     """Return a list containing the Fibonacci series up to n."""
...     result = []
...     a, b = 0, 1
...     while a < n:
...         result.append(a)    # see below
...         a, b = b, a+b
...     return result
...
>>> f100 = fib2(100)    # call it
>>> f100                # write the result
[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

和以前一样,这个例子演示了一些新的 Python 功能:

  • return 语句从函数中返回一个值,不带表达式的 return 返回 None

    过程结束后也会返回 None

  • 语句 result.append(b) 称为链表对象 result 的一个 方法。方法是一个“属于”某个对象的函数,它被命名为 obj.methodename,这里的 obj 是某个对象(可能是一个表达式), methodename 是某个在该对象类型定义中的方法的命名。

    不同的类型定义不同的方法。不同类型可能有同样名字的方法,但不会混淆。(当你定义自己的对象类型和方法时,可能会出现这种情况,class 的定义方法详见 类 )。示例中演示的 append()方法由链表对象定义,它向链表中加入一个新元素。在示例中它等同于 result = result + [a],不过效率更高。

--结束END--

本文标题: 深入 Python 流程控制

本文链接: https://www.lsjlt.com/news/179620.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 深入 Python 流程控制
     if 语句 也许最有名的是 if 语句。例如: >>> x = int(input("Please enter an integer: ")) Please enter an integer: 42 >&g...
    99+
    2023-01-30
    流程 Python
  • 深入学习Golang的流程控制
    目录1. 条件语句1.1 if 语句1.2 switch 语句2. 循环语句2.1 for 语句2.2 range 语句3. 跳转语句3.1 break 语句3.2 continue...
    99+
    2023-05-18
    Golang流程控制 Golang流程
  • Java中控制流程语句的深入讲解
    目录前言 if-then if-then-else switch 使用 String while do-while for break continue return 总结前言 流...
    99+
    2022-11-12
  • Golang汇编之控制流深入分析讲解
    目录顺序执行if/goto跳转for循环顺序执行 顺序执行是我们比较熟悉的工作模式,类似俗称流水账编程。所有不含分支、循环和goto语言,并且每一递归调用的Go函数一般都是顺序执行的...
    99+
    2023-05-20
    Go汇编之控制流 Golang控制流
  • Python基础-Python流程控制
    上篇文章 Python基础-基础使用 我们已经知道了Python解释器,Python的变量、和Python的输入输出、Python的注释和字符集,这篇文章,我们主要讲Python的流程控制本文防盗链:http://python789.blo...
    99+
    2023-01-31
    流程 基础 Python
  • Python入门教程之运算符与控制流
    Python 中的运算符 什么是运算符?举个简单的例子 4 +5 = 9 。 例子中,4 和 5 被称为操作数,"+" 称为运算符。 1 . 求幂运算符 在 Java 中如果我们想对一个数进行求幂运算,我...
    99+
    2022-06-04
    运算符 入门教程 Python
  • Python流程控制语句
    注意: 在 Python 中,非零值表示 True;None 和 0 表示 False。if 语句if…else 语句if…elif…else 语句嵌套 if 语句可以将一个 if … elif … else 语句加入至另一个 if … e...
    99+
    2023-01-31
    语句 流程 Python
  • Python程序流程控制实验
    1. 编写程序计算 1+3+5+7…+99 之和。 sum=0 for i in range(1,100,2):     sum+=i print(sum) 2. 编写...
    99+
    2022-11-13
  • 004 python 流程控制语句
    流程控制语句 1.if判断 语法 a = 10,b = 20# 1if a == 10:  print('a等于10')# 2if a > b:  print('a大于b')else:  print('a小于b')# 3if ...
    99+
    2023-01-31
    语句 流程 python
  • 深入浅析Android中View的绘制流程
    深入浅析Android中View的绘制流程?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。从performDraw说起三大工作流程始于ViewRootImpl#p...
    99+
    2023-05-31
    android view roi
  • Python的控制流
    一、if语句    if语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 )。 else 从句是可选的。#!/usr/bin/python# Filename: ...
    99+
    2023-01-31
    Python
  • python - 流程控制基础习题
    #打印1 到100 的和** i = 0 s = 0 while i <100: i += 1 s += i print(s) print(...
    99+
    2023-01-30
    习题 流程 基础
  • Python的流程控制 - if条件
    流程控制主要分为判断和循环,这里我们先看if条件判断。 if语句 if expression:statements(s) 这里要注意的是,Python使用缩进作为语句分组的方法,所以我们建议使用4个空格作为缩进,在同一个缩进里面的,都属于同...
    99+
    2023-01-31
    流程 条件 Python
  • 浅析Python基础-流程控制
    Python编程语言的作用非常强大,而且其应用方便的特点也对开发人员起到了非常大的作用。在这里我们就可以先从Python流程控制关键字的相关概念开始了解,从而初步掌握这一语言的特点。 Python是一种解释...
    99+
    2022-06-04
    流程 基础 Python
  • Python执行流程控制详情
    目录一 引子二 分支结构2.1 什么是分支结构2.2 为什么要用分支结构2.3 如何使用分支结构2.3.1 if语法2.3.2 if应用案例三 循环结构3.1 什么是循环结构3.2 ...
    99+
    2022-11-10
  • Python流程控制语句详解
    目录1.if判断1.1 if语句1.2 else语句1.3 elif语句2.循环2.1 while循环2.2 for循环2.3 break和continue语句3.其他1.if判断 ...
    99+
    2022-11-11
  • 一文了解Python 流程控制
    目录while 循环死循环与效率问题结束循环的方式方式一 将条件改成 False,等到下次循环在判断条件的的时候会生效方式二 break,立即终止本层循环whil...
    99+
    2022-11-13
  • python流程控制详细介绍
    目录1. 布尔逻辑1.1 条件控制语句-if1.2 if/else 语句1.3 if/elif 语句2 循环控制语句2.1 循环控制之for2.2 循环控制之while3 for v...
    99+
    2022-11-12
  • [Python] 程序结构与控制流
    1. 条件语句 if、else与elif语句用于控制条件代码的执行。条件语句的一般格式如下: if expression: statements elif expression: statements elif expres...
    99+
    2023-01-31
    结构 程序 Python
  • K8s准入控制Admission Controller深入介绍
    目录K8s 的准入控制器是什么K8s 中的请求处理流程什么是准入控制器(Admission Controller)为什么需要准入控制器 Admission Controller准入控...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作