跳至主要內容

Python

LincZero大约 2 分钟

Python

目录

结构化编程思想

语句块

  • 作用:允许把多条语句放到按C++句法只能放一条语句的地方(逗号运算符同样可以做到相同的工作)
  • 使用:依赖缩进
  • 局部变量:语句块中可定义局部变量,执行完语句块后变量将被释放

for-in-else 循环语句

  • 用法
    • for i in list:,基于迭代器循环
    • for i in range(start,end[,step]):,基于次数循环(也写成了迭代器形式)
  • continue退出本次循环,break退出循环
    • 后面可以接else,循环自然结束触发而break或return不触发==【Python特有】==

【BUG注意】(这bug我常犯)

# 错误演示:for-in 删除不全
socket = None
for socket in self.inputs:
    self.inputs.remove(socket)
    socket.remove()
    
# 或
a=[1,2,3,4,5]
for i in a:
    a.pop(0)
print(a)

# 原因
运行发现最后a不是[],该问题主要原因是删除元素后,整个列表的元素会往前移动,而i却是在最初就已经确定了,是不断增大的,所以并不能得到想要的结果。

# 解决方法
a=[1,2,3,4,5]
for i in a[:]:
    a.pop(0)
print(a)


exp-for-in 生成器表达式

  • 简概

    • 有时简单的生成器可以用简洁的方式调用,就像不带中括号的链表推导式
    • 这些表达式是为函数调用生成器而设计的
    • 生成器表达式比完整的生成器定义更简洁,但是没有那么多变,而且通常比等价的链表推导式更容易记
  • 使用

    • 举例

      >>> sum(i*i for i in range(10))                 # sum of squares
      285
      
      >>> xvec = [10, 20, 30]
      >>> yvec = [7, 5, 3]
      >>> sum(x*y for x,y in zip(xvec, yvec))         # dot product
      260
      
      >>> from math import pi, sin
      >>> sine_table = {x: sin(x*pi/180) for x in range(0, 91)}
      
      >>> unique_words = set(word  for line in page  for word in line.split())
      
      >>> valedictorian = max((student.gpa, student.name) for student in graduates)
      
      >>> data = 'golf'
      >>> list(data[i] for i in range(len(data)-1, -1, -1))
      ['f', 'l', 'o', 'g']
      

while-else 循环语句

  • 用法
    • while 条件:
    • continue退出本次循环,break退出循环
    • 后面可以接else,循环自然结束触发而break或return不触发==【Python特有】==

if-elif-else 语句

if: - elif: - else:

if json_data['data'] is None:  # 而不是 ==None
    print("Failed to load data because authkey timeout")
    return

switch-case 语句(Python中没有)

Python中没有该类语句

if-else 三目运算符

  • 使用(与C等不同)
    • C、Java、Js条件 ? true_exp : false_exp
    • Pythontrue_exp if 条件 else false_exp

try-except-else & raise 异常捕捉

try: - except:

try:
    pass
except:  # 若要保存异常并打印,需要改成:`except Exception, e:`
    pass
else:
    pass

pass

pass语句表示什么都不做==【Python特有】==

因为其他软件要么就可以用分号分割结尾,要么可以用空的大括号语句块标明为空

而Python通过检查缩进,且规定某些语句必须有缩进块,这时可以用pass语句占位