- 异常抛错:
- 一般来说,在程序中,遇到异常时,会从这一层逐层往外抛错,一直抛到最外层,由最外层把错误显示在用户终端。
try:
raise ValueError("A value error...")
except ValueError:
print("ValueError in my code...")
- 异常清理行为try语句下的可选finally子句:
- finally子句目的在于定义在任何情况下都一定要执行的功能。一般来说,finally子句用于释放外部资源(文件或网络传输连接之类的),无论它们的使用过程中是否出错。
try:
raise ValueError
except ValueError:
print("a value error...")
finally:
print("hahahahahahaha")
- python迭代器(_Iterators_)对象在遵守迭代器协议时需要支持如下两种方法:
- __iter__(),返回迭代器对象自身。这用在for和in语句中;
- __next__(),返回迭代器的下一个值。如果没有下一个值可以返回,那么应该抛出StopIteration异常。
-
class Counter(object):
def __init__(self,low,high):
self.current = low
self.high = high
def __iter__(self):
return self
def __next__(self):
# 返回下一个值,直到当前值大于high
if self.current > self.high:
raise StopIteration
else:
self.current += 1
return self.current - 1
-
# 调用上述迭代器
c = Counter(5,10)
for i in c:
print(i, end=" ")
- 生成器(Generator)是一种特殊类型的迭代器,它允许在迭代过程中逐步生成值,而不需要一次性生成所有值。通过生成器,可以方便的向程序提供一个可迭代的序列,同时可以节省内存,并允许在需要时延迟生成值。
- 生成器可以通过两种方式定义:
- 1,生成器函数(Generator Function)
- 2,生成器表达式(Generator Expression)
- 生成器函数:
- 生成器函数是一种特殊的函数,它使用yield关键字来产生值。当调用生成器函数时,它返回一个生成器对象,该对象可以用于迭代生成值。
-
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator() # 调用生成器函数创建一个生成器对象
-
# 生成器
def generator():
yield 1
yield 2
yield 3
gen = generator() # 调用生成器函数创建一个生成器对象
for item in gen:
print(item)
# 生成器的简单写法
gen = (i * i for i in range(10)) # 这里用圆括号,方括号是列表
for item in gen:
print(item)
# 生成器是一种特殊类型的函数,它可以在需要时生成值,而不必一次性生成所有值并将它们存储在内存中。
# 生成器能够延迟产生序列的元素,这样可以减少内存占用并提高效率,特别是在处理大量数据时。
-
# 生成器
def counter_generator(low, high):
while low <= high:
yield low
low += 1
for i in counter_generator(5,10):
print(i, end=" ")
# 在while循环中,每当执行到yield语句时,返回变量low的值并且生成器状态转为挂起。
# 在下一次调用生成器时,生成器从之前冻结的地方恢复执行然后变量low的值加一。生成器继续while循环并且再次来到yield语句。。。
# 生成器的使用场景:
# 通常使用生成器进行惰性求值。这样使用生成器是处理大数据的好方法。如果你不想在内存中加载所有数据,你可以使用生成器,一次只传递给你一部分数据。
# 生成器是一定不能重复循环的
# 如果想要使得类的实例变成生成器,可以用__iter__和__next__方法实现。
- 闭包(__Closures__):是由另外一个函数返回的函数。我们使用闭包去除重复代码。
-
def add_number(num):
def adder(number):
# adder是一个闭包
return num + number
return adder
a_10 = add_number(10)
print(a_10(21))
# adder是一个闭包,把一个给定的数字与预定义的一个数字相加
- 装饰器(__Decorators__)用来给一个对象状态的添加一些新的行为。
-
# 装饰器
# 装饰器是在不修改目标代码的前提下,为目标函数(或类)新增功能的函数(或类)。
import time
def timer(function):
def wrapper():
time_start = time.time()
function()
time_end = time.time()
cost_time = time_end - time_start
print("花费时间: {}秒".format(cost_time))
return wrapper
@timer
def func1():
print("这是函数一嗷")
@timer
def func2():
a,b = 10,2000
while a<b:
a += 1
print("我是函数二")
@timer
def func3():
print("俺是函数三, 俺还会跳节目三嗷!")
func1()
func2()
func3()
- Flask:是一个web框架。属于微框架。
- WSGI服务器网关接口:是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。