flask 源码分析

一.Python中:号的用法
names: t.Iterable[str  None] = (None.)
这行代码是Python中的类型注解(TypeAnnotation)的一种写法在这行代码中,names 是一个变量,它被注解为类型 Iterable[strNone] 。这意味着 names 是一个可迭代对象,其中的元素类型是 str或 None 。
Iterable[str None] 这个类型注解使用了一种特殊的写法,表示na可以是一个由 str 和 None 组成的可迭代对象。方括号内的messtr None 表示 str 和 None 之间是一个联合类型 (Union Type)关系,即 names 中的元素可以是 str ,也可以是 None 。最后的 = (None,) 表示 names 被赋予了一个初始值 (None,) ,即一个包含单个元素 None 的元组。
通过类型注解,可以增加代码的可读性和可维护性,在静态类型检查工具(如mypy)中可以进行类型检查,帮助发现代码中的潜在问题。

二.什么是协程
协程又称为微线程,在一个线程中执行,执行函数时可以随时终端,由程序自身控制,执行效率极高,与多线程比较,没有切换线程的开销和多线程锁机制。

三.异步编程理解
异步编程:可以看为类似县城但不涉及系统调度,即异步程序可以并发地处理问题当异步程序的上下文在内部不是通过系统调度程序切换。

四.asyncio异步协程
asyncio即Asynchronous I/O是python一个用来处理并发事件的包,是很多python异步架构的基础,用于处理高并发网络请求方面的问题


# 普通函数
def function():
    return 1
 
# 由async做前缀的普通函数变成了异步函数
async def asynchronous():
    return 1
 
# 而异步函数不同于普通函数不可能被直接调用
async def asynchronous():
    return 1
 
print(asynchronous())
 

五.不定长参数
 *args 接受单个出现的参数,接收后存为元组

**kwargs 接收以键值对形式出现的参数,接收后存入一个字典

六.python 海象运算符定义
一个变量名跟一个表达式或者一个值,这个是一种新的赋值运算符。

# 基础写法
x = 5
if x < 10:
    print("hello fancy!")
 
# 海象运算符写法
if (x:=5) < 10:
    print("hello fancy!")


七.python 关键字参数
Python 关键字参数是指在调用函数时使用形式参数的名字来确定输入的实际参数。Pyhton 关键字参数可以避免牢记参数位置的麻烦,令函数的调用和参数传递更加灵活方便。

def info(name, age, gender):
    print('姓名:', name, ': 年龄:', age, ': 性别:', gender)
 
info(name='阿姐', 18, gender='男')
 
### 错误 ###
  File "E:\p12\cope\first_learning\referral.py", line 20
    info(name='阿姐', 18, gender='男')
                                        ^
SyntaxError: positional argument follows keyword argument
############


八.await关键词
await是一个只能在协程函数中使用的关键词,用于在遇到IO操作时悬挂当前协程。在悬挂当前协程的过程中,事件循环可以执行其他协程,在当前协程IO处理完成后,可以重新切换执行后的代码

九.python中@property的介绍与使用

python的@property时python的一种装饰器,是用来修饰方法的。可以使用@propery装饰器来创建只读属性,@propert装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。

class DataSet(object):
    @property
    def method_with_property(self):
        return 15
    
    def method_without_property(self):
        return 15
 
ls = DatatSet()
print(ls.method_with_property) # 加了@property后,可以用调用属性的形式调用方法,后面不需要加()
print(ls.method_without_property()) # 没有加@property,必须使用正常的调用方法的形式,即在后面加()


十.python 默认参数


Python 默认参数指的是在定义函数时,直接给形式参数制定一个默认值。

def info(name='null', age, gender='男'):
    print('姓名:', name, ': 年龄:', age, ': 性别:', gender)
 
info()
 
### 错误 ###
File "E:\p12\cope\first_learning\referral.py", line 15
    def info(name='null', age, gender='男'):
                               ^
SyntaxError: non-default argument follows default argument

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值