Flask源码分析所获知识点

一、异步编程理解

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

二、什么是协程

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

三、asyncio异步协程

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

# 普通函数
def function():
    return 1


# 由async做前缀的普通函数变成了异步函数
async def asynchronous():
    return 1


# 而异步函数不同于普通函数不可能被直接调用
async def asynchronous():
    return 1

print(asynchronous())

四、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 海象运算符定义

一个变量名跟一个表达式或者一个值,这个是一种新的赋值运算符。

# 基础写法
x = 5
if x < 10:
    print("hello fancy!")


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

七、python 位置参数

Python 位置参数也称必备参数。指的是在调用函数时正确传入函数的实际参数,传入的实际参数要与定义函数时的形式参数保持一致,实参和形参数量必须一致、实参和形参顺序必须一致

# 是参与形参数量必须一致
def info(name, age, gender):
    print('姓名:', name, '; 年龄:', age, '; 性别:', gender)

info('阿姐', 18) # 少传入一个实参,会报错

### 错误 ###
Traceback (most recent call last):
  File "E:\p12\cope\first_learning\referral.py", line 20, in <module>
    info('阿姐', 18) # 少传入一个实参,会报错
TypeError: info() missing 1 required positional argument: 'gender'
############


# 实参和形参顺序必须一致
def result(num1, num2):
    res = num1 + num2
    print(res)

result(1, '阿姐')

### 错误 ###
Traceback (most recent call last):
  File "E:\p12\cope\first_learning\referral.py", line 21, in <module>
    result(1, '阿姐')
  File "E:\p12\cope\first_learning\referral.py", line 17, in result
    res = num1 + num2
TypeError: unsupported operand type(s) for +: 'int' and 'str'
###########

八、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
############

九、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
###########

十、不定长参数

 *args 接受单个出现的参数,接收后存为元组

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

十一、names: t.Iterable[str  None] = (None,)的含义

names是一个变量,他被注释为类型Iterable[str | None]。这意味着names是一个可迭代对象,其中的元素类型是str或None。Iterable[str | None]这个类型注解使用了一个特殊的写法,表示names可以是一个由str和None组成的可迭代对象。方括号内的str、None表示str和None之间是一个联合类型关系,即names中的元素可以是str,也可以是None。

最后的=(None,)表示names被赋予了一个一个初始值,即一个包含单个元素None的元组。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值