使用 typing 中的 List、Set、Tuple 的栗子 from typing import Optional import uvicorn from fastapi import FastAPI...List、Set、Tuple 都会指定里面参数的数据类型 而 FastAPI 会对声明了数据类型的数据进行数据校验,所以会针对序列里面的参数进行数据校验 如果校验失败,会报一个友好的错误提示 使用 list...、set、tuple 的栗子 用 Python 自带的 list、set、tuple 类,是无法指定序列里面参数的数据类型,所以 FastAPI 并不会针对里面的参数进行数据校验 @app.put("/...Body(...), ): results = {"list_": list_, "tuple_": tuple_, "set_": set_} return results 变成传啥类型的值都可以...总结 要充分利用 FastAPI 的优势,强烈建议用 typing 的 List、Set、Tuple 来表示列表、集合、元组类型
p.name = nice p['name'] = nice 2、Array类型 在ES 中数组的每一项可以保存任何类型的数据,也就是说,可以用数组的第一个位置来保存字符串,第二个位置来保存数值,第三个位置保存对象...删除 可以删除任意数量的项,只需要指定2个参数,要删除的第一个位置 和 要删除的数量。splice(0,2) 删除数组的前两个 插入 可以向指定位置插入任意数量的项,需要提供3个参数。...起始位置、0、要插入的项。splice(2,0,'a') 从数组的 第二个项插入 'a' 替换 可以向指定位置插入任意数量的项,同时删除任意数量的项。...apply() 接受两个参数:一个是其运行函数的作用域,另一个是参数数组。 其中第二个参数可以是 Array 的实例也可以是 arguments对象。...call() 和 apply() 的作用相同,只是接受参数的方式不同,第一个参数同 apply(), 第二个参数是一个参数列表而不是数组。 6.
3.complex([real[,imag]]) 函数功能,返回一个复数。有两个可选参数。当两个参数都不提供时,返回复数 0j。 当第一个参数为字符串时,调用时不能提供第二个参数。...4.delattr(object,name) 函数作用用来删除指定对象的指定名称的属性,和setattr函数作用相反。 当属性不存在的时候,会报错。不能删除对象的方法。...5.dict() 字典类的构造函数。不传入任何参数时,返回空字典。 可以传入键值对创建字典。 可以传入映射函数创建字典。 可以传入可迭代对象创建字典。...6.dir([object]) 返回当前的变量、方法和定义的类型列表的函数。 7.divmod(a,b) 接受两个数值(非复数),返回两个数值的相除得到的商,和余数组成的元组。...8.enumerate(iterable,start=0) 接受一个可迭代对象(序列或者迭代器),返回一个可枚举对象(同时返回索引和值,其中索引可以指定起始值)。
一个简单的集合可以包含任何数据类型的值。如果有两个集合,则可以执行像联合、交集以及集合求差等标准集合运算 1. 该如何创建集合 set ? 1....目前而言,仅需知道 set() 行为与函数类似,以及它返回一个集合) 2. 正如我之前提到的,简单的集合可以包括任何数据类型的值。而且,如我之前所提到的,集合是 无序的。...1. add() 方法接受单个可以是任何数据类型的参数,并将该值添加到集合之中 2. 集合是装 唯一值 的袋子。如果试图添加一个集合中已有的值,将不会发生任何事情。...如果调用时传递了两个集合, update() 将会被每个集合中的每个成员添加到初始的集合当中(丢弃重复值) 6. update() 方法还可接受一些其它数据类型的对象作为参数,包括列表如果调用时传入列表...:对称差相当于两个相对补集的并集 注:空集属于任何集合,但它不属于任何元素.
并按照指定的 encoding 将字符串转换为字节序列; 如果 source 为可迭代类型,则元素必须为[0 ,255] 中的整数; 如果 source 为与 buffer 接口一致的对象,则此对象也可以被用于初始化...如果对象允许,该函数将删除指定的属性。...带参数时,返回参数的属性、方法列表 18.divmod() 语法 divmod(a, b),函数接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b)。...该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。...68. zip() 语法 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象 可以使用 list() 转换来输出列表, 如果各个迭代器的元素个数不一致,则返回的列表长度以最短的对象为准
每个值可以是简单值,也可以是复杂类型; 数组:第二种复杂数据类型,数组表示可以通过数值索引访问的值的有序列表。数组的值可以是任意类型,包括简单值、对象,甚至其他数组。...这两个参数可以用于指定其他序列化 JavaScript 对象的方式: 第一个参数是过滤器,可以是数组或函数; 第二个参数是用于缩进结果 JSON 字符串的选项。 1....提供的函数接收两个参数:属性名(key)和属性 值(value)。可以根据这个 key 决定要对相应属性执行什么操作。...2.3 解析选项 JSON.parse()方法也可以接收一个额外的参数,是一个函数,该函数也接收两个参数,属性名(key)和属性值(value),另外也 需要返回值。...如果此函数返回 undefined,则结果中就会删除相应的键。如果返回了其他任何值,则该值就 会成为相应键的值插入到结果中。该函数经常被用于把日期字符串转换为 Date 对象。
get()方法接受两个参数一个是key,另一个是default,其中default可以省略 该方法返回字典中键key对应的值时,返回default指定的值 ?...2. pop()方法可以删除并返回指定索引位置的元素,与之类型,字典的pop()方法删除并返回指定的键的值。...如果给定的键不存在,方法返回default参数指定的值 也可以用del关键字删除字典中的元素 ? 也可以用del关键字删除字典中的元素 ? 3. update()来次更新多个键值对 ?...8 .popitem方法:删除字典中某一键值对,并以元组的形式返回这一键值对 ? 9. setdefault方法:接受两个参数,第一个参数是键,若字典中存在此键,则调用该方法得到该键的值。...若字典中不存在此键,则将第二个参数作为此键的值,并添加到字典中,第二个参数默认为None ? 10.
例如sort 算法默认使用元素类型的 < 运算符,但是可以使用sort的重载版本,额外定义比较的规则 向算法传递参数 标准库中可以接受的比较函数一般返回一个bool值,表示是否小于或者是否相等。...函数接受一个参数或者两个参数。在c++新标准中将这个函数叫做谓词,接受一个参数的函数被成为一元谓词,接受两个参数的函数叫做二元谓词。...parameter list 函数的参数列表 return type 是函数返回值类型 function body 是函数体,需要执行的具体代码段 与普通函数不同的是 lambda 必须使用尾置返回来指定返回类型...我们可以忽略参数列表和返回值,但是必须包含捕获列表和函数体 auto f = [] {return 42;}; 如果lambda 表达式中没有明确指定返回类型,函数体中包含任何单一 return 语句之外的内容...的第二个参数绑定到sz的值,当find_if 对words中的string调用这个对象的时候,这些对象会调用check_size 将给定的string 和 sz 传递给它,因此 find_if 可以有效的对输入序列中的每一个
(dec 5) -> 4 商 商函数 (quot) 接受两个数值类型参数并返回第一个参数除以第二个参数的整数商。...(quot 5 2) -> 2 余 余数/模数函数 (rem) 接受两个数值类型参数并返回第一个参数除以第二个参数的余数。...keyword 关键字函数 (keyword) 接受一个字符串参数,并返回一个同名的关键字。如果有两个参数,返回一个带命名空间的关键字。...如果这些数据类型中的任何一种都不足以表示某种数据结构,那么我们可以通过任何方式来组合它们。 这些数据类型都具有如下性质: 都不可变。...(list 1 2 3) --> (1 2 3) peek peek函数操纵一个单一的列表作为参数并返回列表中的第一个值。
有一些算法比如equal可以用于确定两个序列是否保存相同的值,接收三个迭代器,前两个表示第一个序列中的元素范围,第三个参数表示第二个序列的首元素: // roster2中的元素数目至少要和roster1...type { function body } 我们可以忽略参数列表和返回类型,但必须包括捕获列表和函数体,我们定义一个可调用对象f,它不接受参数直接返回42: auto f = [] { return...string &a) { return a.size() >= sz; }); 3. for_each算法 for_each算法接受一个可调用对象,并对输入序列中每个元素调用此对象: /...bind函数可以看成一个通用的函数适配器,它接收一个可调用对象,生成一个新的可调用对象来“适应”原对象的参数列表,一般形式为: auto NewCallable = bind(callable, arg_list...,比如remove的链表版本会删除指定的元素,unique的链表版本会删除第二个和后续的重复元素。
尽管可以通过第二个参数(以 0 为基点的)索引值来指定 起点,通过第三个参数(以 0 基点的)索引来指定搜索终点, 但缺省情况下它将搜索整个列表, 4....还可以通过 remove() 方法从列表中删除某个元素。remove() 方法接受一个 value 参数,并删除列表中该值的第一次出现。...如果不带参数调用, pop() 列表方法将删除列表中最后的元 素,并返回所删除的值。 2. 可以从列表中 pop [弹出]任何元素。...☞不带参数调用的 pop() 列表方法就像 Perl 中的 pop() 函数。它从列表中删除最后一个元素并返回 所删除元素的值。...内建 的 tuple() 函数接受一个列表参数,并返回 一个包含同样元素的元组,而 list() 函数 接受一个元组参数并返回一个列表。
: a.每一项都可以保存任何类型的数据。...); //briup||terry||jacky 5) 栈,队列方法 1.栈 LIFO (Last-In-First-Out) push() 可接受任意类型的参数,将它们逐个添加到数组的末尾,并返回数组的长度...,比较函数有两个参数 b.如果第一个参数位于第二个参数之前,返回负数 c.如果第一个参数位于第二个参数之后,返回正数 var arr = [11,5,23,7,4,1,9,1]; console.log...(返回项的起始位置,结束位置) 当接受一个参数,从该参数指定的位置开始,到当前数组末尾的所有项 当接受两个参数,起始到结束之间的项,但是不包含结束位置的项 例如: var arr = ["aa"...删除:指定两个参数(删除第一的起始位置,要删除的项数) 插入:指定三个参数(起始位置,0,要插入的项任意数量的项) 替换:指定三个参数(起始位置,要删除的项,要插入的任意数量的项) 例如: var
如果范围内无匹配元素,则find返回第二个参数来表示搜索失败 */ void find_value() { //find函数的返回值类型是迭代器类型 //在vector中查找值 int...,它是一个可以调用的表达式,其返回结果是一个能用作条件的值 接受谓词参数的算法对输入序列中的元素调用谓词。...因此元素类型必须能转换成谓词的参数类型 标准库算法所使用的谓词分为两类: 1.一元谓词:它们只接受一个参数 2.二元谓词:它们接受两个参数 //定制操作,按照长度重新排vector bool isShorter...{function body} capture list(捕获列表): 一个lambda所在函数中的定义的局部变量的列表(通常为空) parameter list(参数列表) return type(返回类型...//算法for_earch接受一个可调用对象,并对输入序列中的每个元素调用此对象 for_each(wc,words.end(),[](const string &s){ cout<<s<<"
而在模板定义内,可以将这个非类型参数用在任何需要常量表达式的地方,如指定数组大小。...shared_ptr,因为不同对象可以共享指针所有权,需要在运行时可以方便的重载删除器;unique_ptr,独占指针,不需要重载删除器,自定义删除器的类型需要在定义 unique_ptr时一并给出。...对于这种参数,对实参进行正常的类型转换。 当函数返回类型与参数列表中任何类型都不相同时,编译器无法推断出模板实参的类型或者希望允许用户控制模板实例化,可以指定显式模板实参。...此时,3个候选函数都是可行的。普通函数由于需要进行类型转换,可以首先排除掉。而剩下两个模板函数,后者更特例化,所以编译器实际执行的是后者。 在定义任何函数之前,记得声明所有重载的函数版本。...在函数参数列表中,如果一个参数的类型是一个模板参数包,则此参数也是一个函数参数包。
如果第一个参数是个字符串,它将被解释成复数,同时函数不能有第二个参数。第二个参数不能是字符串。每个参数必须是数值类型(包括复数)。...如果有局部变量,locals可以是任何映射类型对象。...返回一个迭代器,对iterable的每个项应用function,并yield结果。如果传递多个iterable参数,function必须接受这么多参数,并应用到从iterables并行提取的项中。...对于int操作数,结果具有与操作数相同的类型(强制后),除非第二个参数为负;在这种情况下,所有参数都转换为float,并传递float结果。...如果两个参数的形式指定准确的参数,就能进行正确的引用。零个参数的形式只在类定义中工作,因为编译器填充必要的细节以正确检索正在定义的类,原理类似访问当前实例的普通方法。
你可能还记得,函数re.sub可通过第二个参数接受一个函数(替换函数)。这样将对匹配的对象调用这个函数,并将返回值插入文本中。这与前面讨论的处理程序理念很匹配——你只需让处理程序实现替换函数即可。...它不直接调用callback,而是返回一个函数,这个函数将作为替换函数传递给re.sub(这就是它只接受一个匹配对象作为参数的原因所在)。 下面来看一个示例。...因此每个规则对象都必须包含两个方法:condition和action。 方法condition只需要一个参数:待处理的文本块。它返回一个布尔值,指出当前规则是否适用于处理指定的文本块。...过滤器就是一个函数,它调用re.sub并将参数指定为合适的正则表达式(模式)和处理程序中的替换函数(handler.sub(name))。...相比于Rule的方法action,这个方法唯一的不同之处在于,它删除了文本块中的第一个字符(连字符),并删除了余下文本中多余的空白。标记会生成列表项目符号,因此不需要连字符。
谓词是一个可调用的表达式,标准库中的谓词分接受一个参数的一元谓词和接受两个参数的二元谓词 lambda有时被叫做匿名函数,是C++四种可调用对象之一(函数,函数指针,lambda,重载了调用运算符的类)...,它可以理解为一个未命名的内联函数,特点是可以高效地运算并调用函数体外的一些局部变量 lambda的格式如下,其中参数列表和返回类型是可以忽略的: [ 捕获列表 ] ( 参数列表 ) -> 返回类型 {...make_shared函数,它使用参数args初始化类型为T的对象并返回指向这个对象的智能指针,当我们想要用new的时候可以用这个函数来替代 由于智能指针内有引用计数,所以可以让多个智能指针指向同个对象共享数据...,因为这样引用计数无法传递,get函数是用来适配一些无法传入智能指针的函数而出现的 如果要给智能指针调用新的的删除器函数,需要在构造指针时第二个参数传入一个可调用对象,且此对象的参数必须是一个该类型元素的指针...函数来转移它的所有权 我们同样可以像shared_ptr那样自定义指针的删除器,但是我们必须类似指定关联容器的比较器一样在模板尖括号中指出删除器的类型 弱指针的是一种不会影响对象生存期的指针,一般用来引用和标识
const int _a; }; 除此之外,在上一篇文章中,我提到过内置类型成员在类中声明时可以给默认值,这个默认值相当于与函数的缺省参数,只不过上一篇没讲初始化列表,我没提。...本质其实是初始化列表的缺省,在初始化时,成员变量也和普通内置类型的变量一样,可以使用值初始化,也可以调用函数并使用其返回值初始化。...隐式类型转换中的构造与explicit关键字 构造函数不仅可以构造与初始化,对于单个参数或者除第一个参数无默认值其余均有默认值的构造函数,还具有类型转换的作用。...); d = 2023; return 0; } class date { public: //2.虽然有多个参数,但是创建对象时后两个参数可以不传递,没有使用explicit修饰,具有类型转换作用...return 0; } 运行截图: 而友元函数可以直接访问类的私有成员,它是定义在类外部的普通函数,不属于任何类,但需要在类的内部声明,声明式需要加friend关键字。
第二个参数,要删除的元素数量,如果为 0,则表示不删除任何元素,只进行插入操作。 ️第三个参数及以后,要插入到数组中的新元素,可以插入任意数量的元素。...删除元素 如果想从数组中删除元素,可以将第二个参数设为要删除的元素数量,而后面不传其他的插入元素: const arr = [1, 2, 3, 4, 5]; arr.splice(2, 2); // 从下标为...我们可以看到,slice()方法不会修改原始数组,并且可以接受两个可选的参数,用于指定开始和结束提取的索引位置。 注意:如果只传入一个参数,则提取从该索引开始到数组末尾的所有元素。...它接受两个参数,第一个参数表示目标长度,第二个参数表示用于填充字符串的字符,默认为空格。...它接受两个参数,第一个参数表示目标长度,第二个参数表示用于填充字符串的字符,默认为空格。
领取专属 10元无门槛券
手把手带您无忧上云