条件语句
Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
if condition_1: statement_block_1
statement_block_1 if condition_1 else statement_block_2
while循环
while condition:
statement_block
while condition:
statement_block
else:
statement_block
i = 1
while i < 7:
print(i)
if i == 3:
break
i += 1
i = 0
while i < 7:
i += 1
if i == 3:
continue
print(i)
for 循环
Python for 循环可以遍历任何可迭代对象,如列表,元组,字典,集合或字符串。
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
fruits = ["apple", "banana", "cherry"]
for x in fruits:
print(x)
if x == "banana":
break
fruits = ["apple", "banana", "cherry"]
for x in fruits:
if x == "banana":
continue
print(x)
for x in range(10):
print(x)
else:
print("Finally finished!")
函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。 定义函数规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和()
- 任何传入参数和自变量必须放在()中,()中用于定义参数
- 函数的第一行语句可以选择性地使用文档字符串 用于存放函数说明
- 函数内容以冒号:起始,并且缩进
- return语句 结束函数,选择性地返回一个值给调用方,不带表达式地return相当于返回None
def 函数名(参数):
函数体
调用函数
如需调用函数,请使用函数名称后跟括号:
函数参数分为形式参数、默认参数、关键字参数、不定长参数*args以及**keys 函数支持递归方式,即定义的函数能够调用自身。
匿名函数
即lambda函数,可接受任意参数量地参数,但只能有一个表达式:
lambda arguments : expression
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
作用域
局部作用域:在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用。
全局作用域: 在 Python 代码主体中创建的变量是全局变量,属于全局作用域。全局变量在任何范围(全局和局部)中可用。 如果在函数内部和外部操作同名变量,Python 会将它们视为两个单独的变量,一个在全局范围内可用(在函数外部),而一个在局部范围内可用(在函数内部)
Global 关键字 :使变量成为全局变量。
num = 1
def fun1():
global num
print(num)
num = 123
print(num)
fun1()
print(num)
如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了,如下实例:
def outer():
num = 10
def inner():
nonlocal num
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))
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)
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
|