python3之语法结构和关键字

开始认知

Posted by WEW on April 11, 2019

语法及相关关键字

关键字及函数

end

end关键字用于控制输出不换行或在末尾添加其他字符
a={'c', 'd', 'b', 'a', 'r'}
for i in a:
    print(i,end=',')

d,c,b,a,r,

range()函数

range(n)产生0到n-1的数字
range(a,b)产生a到b-1的数字
range(a,b,c)产生a到b-1内以步长为c的数字

break和continue

这两个关键字和c++类似用于控制循环的跳出或者提前结束本次循环

pass

pass 是条空语句用于保存python3代码结构的完整性

条件控制

Python3的条件控制格式为:
if 条件: ... else:...
或:
if 条件1:...elif 条件2:...elif 条件3:...else:...

循环控制

while 条件:
    语句
或
for 变量 in 范围:
    语句
不同的是这两个循环控制都可以后接else:语句

迭代器和生成器

迭代器

迭代器是用于遍历集合元素的对象,这个对象可以记住当前遍历元素的位置
该迭代器只会往前遍历元素不会往后遍历,字符串,列表,元组,字典都可以创建迭代器
迭代器有两个基本方法,iter()和next(),其中it=iter(list)用于生成迭代器,而next(it)用于向后迭代

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")

1 2 3 4

生成迭代器类,我们可以创建一个迭代器类,需要实现两个内置的类函数 __iter__(),和__next__()

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
  def __next__(self):
    x = self.a
    self.a += 1
    return x
myclass = MyNumbers()
myiter = iter(myclass)
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))

1
2
3
4
5

为了防止迭代器无限循环可以使用StopIteration异常判定迭代器迭代完成

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
  print(x)

生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并
在下一次执行 next() 方法时从当前位置继续运行。

 import sys
 def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

0 1 1 2 3 5 8 13 21 34 55