Skip to content

Latest commit

 

History

History
189 lines (139 loc) · 3.83 KB

140-203377-跳过_pass_None.sy.md

File metadata and controls

189 lines (139 loc) · 3.83 KB
show version enable_checker
step
1.0
true

比较运算符

回忆

  • 这次了解了 elif
  • elif 就是 else + if
  • 可以构成多分支语句
  • 不过在这个某些分支上
  • 我想啥都不做
  • 却出现了问题
  • 能否做到啥都不做呢???🤔

修改代码

num = -23
if num > 0:
	print("more than 0")
elif num == 0:
	
else:
	print("less than 0")

图片描述

  • 结果

图片描述

  • 出现了IndentationErro
    • 缩进错误

问题所在

  • 问题就在于 num == 0 的时候
  • 没有任何语句
  • 我让他打印空字符串
  • 并且最后也不要加换行
  • 可以么?

图片描述

  • 可以倒是可以
  • 但是其实我要的是啥都不干
  • 但是他还是调用了 print 函数
  • 能否完全啥也不干呢?

pass

  • 有这么一个关键字 pass
  • 他的意思就是啥都不做
  • 就像玩牌的时候
  • 什么都不出
  • 就是 pass 直接过

图片描述

  • 可以用么?

代码

图片描述

  • 这样真的就可以啥都不用做
  • 而且也通过

从汇编上如何理解呢?

  • pass做了个None

图片描述

  • 什么都没做
    • 然后就过去了
  • 我可以直接写一个None吗?

None

  • t1、t2的源程序不同

图片描述

  • 但是字节码相同
  • 说明
    • pass这句话就是None
    • 确实什么都没做...😅
  • 帮助手册里究竟是怎么说的呢?

手册

图片描述

  • pass 是空运算
  • 当被执行的时候
  • 没有任何事情发生
  • 他是有用的占位标志
  • 当需要一个语句
  • 但是并不做任何事的时候
  • 就可以用 pass
  • 甚至可以定义空的函数和类
  • 但是就事论事
  • 我们这个代码可以再随机一些吗?

引入随机

图片描述

from random import randint
num = randint(1,10) - 5
if num > 0:
	print("more than 0")
elif num < 0:
	print("less than 0")
  • 这样,首先引入随机
  • 确保条件判断有意义
  • 然后处理了两个条件
  • 最后等于 0 的时候
  • 自然什么也不做
  • 也就相当于 pass
  • pass 更多用在哪里呢?

pass 填充分支路径

  • 比如原始程序是这样的
from random import randint
num = randint(1,10) - 5
if num > 0:
	print("more than 0")
  • 这肯定没有任何问题
  • 但是如果我想注释掉满足条件时所执行的语句
from random import randint
num = randint(1,10) - 5
if num > 0:
	#print("more than 0")
  • 但是这个程序运行会直接报错

图片描述

  • 这是一个经典的错误
  • 其实我们只需啊要加上 pass
  • 程序逻辑不变,条件分支保留
  • 而且也能执行了
from random import randint
num = randint(1,10) - 5
if num > 0:
	#print("more than 0")
	pass
  • 这样我这个功能就完成了
  • 而且啥都不干的位置就是啥都不干

总结

  • 这次了解了空白占位符
    • pass
  • pass可以占位
    • 让条件分支啥都不干
    • 甚至可以制作
      • 空函数
      • 空类
  • pass的本质就是None
    • 干的是 啥也没干这件事

图片描述

  • 这个程序现在是单层的多分支
  • 可以改成多层嵌套吗??🤔
  • 下次再说 👋