Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
# if语句的一般形式如下: if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3 # if 语句简写 if condition_1: statement_block_1 statement_block_1 if condition_1 else statement_block_2 # if语句支持嵌入if
# while语句的一般形式 while condition: statement_block # while ... else ...结构,如果 while 后面的条件语句为 false 时,则执行 else 的语句块。 while condition: statement_block else: statement_block # 利用break语句,可以终止循环,跳出while循环 i = 1 while i < 7: print(i) if i == 3: break i += 1 # continue 语句,停止当前迭代,继续下一个 i = 0 while i < 7: i += 1 if i == 3: continue print(i)
Python for 循环可以遍历任何可迭代对象,如列表,元组,字典,集合或字符串。
fruits = ["apple", "banana", "cherry"] for x in fruits: print(x) # 利用break语句可以终止for循环 fruits = ["apple", "banana", "cherry"] for x in fruits: print(x) if x == "banana": break #使用 continue 语句,我们可以停止循环的当前迭代,并继续下一个 fruits = ["apple", "banana", "cherry"] for x in fruits: if x == "banana": continue print(x) # range() 函数,返回一个数字序列,默认情况下从 0 开始,并递增 1(默认地),并以指定的数字结束(左闭右开) # for 循环中的 else 关键字指定循环结束时要执行的代码块 for x in range(10): print(x) else: print("Finally finished!") # for循环支持嵌套循环
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。
定义函数规则:
def 函数名(参数): 函数体 调用函数 如需调用函数,请使用函数名称后跟括号:
函数参数分为形式参数、默认参数、关键字参数、不定长参数*args以及**keys
函数支持递归方式,即定义的函数能够调用自身。
即lambda函数,可接受任意参数量地参数,但只能有一个表达式:
lambda arguments : expression
局部作用域:在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用。
全局作用域: 在 Python 代码主体中创建的变量是全局变量,属于全局作用域。全局变量在任何范围(全局和局部)中可用。
如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(在函数外部),而一个在局部范围内可用(在函数内部)
Global 关键字 :使变量成为全局变量。
num = 1 def fun1(): global num # 需要使用 global 关键字声明 print(num) num = 123 print(num) fun1() print(num)
如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:
def outer(): num = 10 def inner(): nonlocal num # nonlocal关键字声明 num = 100 print(num) inner() print(num) outer()
迭代器
迭代是访问集合元素地一种方式。
迭代器是一种对象,该对象包含值的可计数数字。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()
字符串,列表或元组对象都可用于创建迭代器
mytuple = ("apple", "banana", "cherry") myit = iter(mytuple) # 创建迭代器 print(next(myit)) 获取下一个元素 print(next(myit))
# 创建迭代器 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))
# StopIteration语句 #如果你有足够的 next() 语句,或者在 for 循环中使用,则上面的例子将永远进行下去。为了防止迭代永远进行,我们可以使用 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函数被称为生成器
生成器是一个返回迭代器的函数, 只能用于迭代操作
在调用生成器运行的过程中,每次遇到 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()