目录
- 一、语法糖
- 1、列表推导式
- 2、三元表达式
- 3、断言
- 4、with-as
- 5、lambda函数
- 二、线程Thread
一、语法糖
1、列表推导式
# 列表推导式
my_list = [1, 2, 3]
nn_list = [i * 2 for i in my_list]
# for循环遍历,每次产生变量i, 在经过if判断。判断为true的,这个值在经过 i * 2 处理
nn_list1 = [i * 2 for i in my_list if i > 1] # [4, 6]
nn_list = [(x, y) for x in range(3) for y in range(3)] #二维数组
2、三元表达式
语法结构:
表达式(1)为 True 执行语句 if 条件表达式(1) else 表达式(1)为 False 执行语句
例如cn = “成年” if age >= 18 else “未成年”
3、断言
Python 断言,即 Python assert 语句,简单理解就是简易版的 if 语句。
语法格式:
assert 表达式
类似If表达式, 如
if not 表达式: raise AssertionError
4、with-as
with…as?语句,即上下文管理器,它在 Python 中实现了自动分配并释放资源。
语法格式:
with 表达式 [as 指定一个变量名]: 代码块 1代码块2
示例,例如
# 一般的对文件进行操作
file = open("./demo.txt") # 手动打开
data = file.read()
file.close() # 手动关闭# with...as 语句操作
with open("./demo.txt") as file:data = file.read()# try...except... 语句操作
file = open("./demo.txt")
try:data = file.read()
finally:file.close()
5、lambda函数
语法格式:
lambda [参数列表]:表达式
说明:lambda 表达式只允许包含一个表达式,不能包含复杂语句,该表达式的运算结果就是函数的返回值。
二、线程Thread
创建一个线程
# 创建线程index = 2my_thread = threading.Thread(target=my_function,args=(index,))my_thread.start()
创建多线程
with ThreadPoolExecutor(max_workers=3) as executor: # 控制线程池大小为3# 提交任务给线程池future1 = executor.submit(my_function, 1)future2 = executor.submit(my_function, 2)future3 = executor.submit(my_function, 3)# 获取任务执行结果print(f'result1:%s,result2:%s,result3:%s' % (future1.result(), future2.result(),future3.result()))print(future1.result())print(future2.result())print(future3.result())
with语句管理多线程
'''with语句,它用于管理资源的生命周期,确保资源在使用后被正确关闭或释放。copy_current_request_context 是一个与 Flask 框架相关的函数,它用于复制当前的请求上下文。copy_current_request_context 是一个上下文管理器,所以你可以使用 with 语句来创建一个临时的请求上下文环境。'''# 创建多线程# copy_current_request_context必须依赖requestwith copy.copy(request):with ThreadPoolExecutor(max_workers=3) as executor:future1 = executor.submit(copy_current_request_context(my_function),1)future2 = executor.submit(copy_current_request_context(my_function), -1)re1 = future1.result()re2 = future2.result()print(r'result1:{0},result2:{1}' % (re1,re2))