一、Optional:可选参数的使用
在Python中,我们经常需要定义函数时,会需要一些参数是可选的,这个时候我们就需要使用到Optional。Optional[Type]类型可以接受Type类型或者None类型。例如:
from typing import Optional def func(str1: Optional[str], str2: Optional[str]) -> str: if str1 and str2: return str1 + str2 elif str1 and not str2: return str1 elif not str1 and str2: return str2 else: return 'default value'
在这个函数中,我们定义了两个可选参数str1和str2,并且返回类型为str。如果两个参数都有值,那么直接将两个字符串拼接起来返回;如果只有其中一个有值,那么返回该参数的值;如果两个都没有值,则返回默认值"defalut value"。
在这个例子中,我们可以看到Optional的使用方式,也可以看到对于参数的处理方式和函数的返回值处理方式。
二、Else:控制流中的else语句
在Python的控制流程中,我们经常会使用到if/else语句,但是还有一个比较容易被忽略的语句就是else语句。else语句可以配合循环语句,判断循环语句是否被执行完毕。
for i in range(10): if i > 5: break else: print("Loop Finished")
在这个例子中,我们定义了一个循环语句,循环次数为10次,当i大于5时,跳出循环,并且打印"Loop Finished",这里的else语句被称为循环else,其实是和for语句对应的,只有在全部循环结束之后才会执行,如果循环被break中断了,则不会执行。
三、Optional或Else的结合使用
Optional和Else的结合使用在Python中非常常见,尤其是在处理请求参数时经常使用。我们可以通过if not xxx else yyy这样的语句判断参数值是否为空,如下所示:
from fastapi import FastAPI from typing import Optional app = FastAPI() @app.get("/") async def read_item(q: Optional[str] = None): return {"q": q if q is not None else "default value"}
在这个例子中,我们使用了FastAPI框架,定义了一个GET方法,并且定义了一个可选参数q。如果q参数值不为空,则返回q的值,否则返回"defalut value"值。
可以看到,通过Optional和Else的结合使用,可以很简单地实现对参数的判断和返回。
四、总结
Optional和Else是Python语言中非常常见的两个关键字,他们可以分别用来定义可选参数和控制流程,也可以结合使用,用来处理请求参数。在代码编写中,熟练掌握这两个关键字的使用,可以使代码更加简单易读,同时提高代码的可维护性。