1.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)中可以进行类型检查,帮助发现代码中的潜在问题。
2.异步编程理解
异步编程:可以看为类似县城但不涉及系统调度,即异步程序可以并发地处理问题当异步程序的上下文在内部不是通过系统调度程序切换。
3.什么是协程
协程又称为微线程,在一个线程中执行,执行函数时可以随时终端,由程序自身控制,执行效率极高,与多线程比较,没有切换线程的开销和多线程锁机制。
4.asyncio异步协程
asyncio即Asynchronous I/O是python一个用来处理并发事件的包,是很多python异步架构的基础,用于处理高并发网络请求方面的问题
# 普通函数
def function():
return 1
# 由async做前缀的普通函数变成了异步函数
async def asynchronous():
return 1
# 而异步函数不同于普通函数不可能被直接调用
async def asynchronous():
return 1
print(asynchronous())
5.await关键词
await是一个只能在协程函数中使用的关键词,用于在遇到IO操作时悬挂当前协程。在悬挂当前协程的过程中,事件循环可以执行其他协程,在当前协程IO处理完成后,可以重新切换执行后的代码
6.不定长参数
*args 接受单个出现的参数,接收后存为元组
**kwargs 接收以键值对形式出现的参数,接收后存入一个字典
7.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,必须使用正常的调用方法的形式,即在后面加()
8.python 海象运算符定义
一个变量名跟一个表达式或者一个值,这个是一种新的赋值运算符。
# 基础写法
x = 5
if x < 10:
print("hello fancy!")
# 海象运算符写法
if (x:=5) < 10:
print("hello fancy!")
9.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'
###########
10.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
############
11.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
###########