美文网首页
pydantic 拆包解包

pydantic 拆包解包

作者: hehehehe | 来源:发表于2021-02-22 18:04 被阅读0次
    一个星号可作用于所有的可迭代对象,称为迭代器解包操作,作为位置参数
    传递给函数,两个星号只能作用于字典对象,称之为字典解包操作,作为关
    键字参数传递给函数。使用 *和 ** 的解包的好处是能节省代码量
    

    打包 tuple

    def pack(a, *b):
            print type(a), a
            print type(b), b
     
    pack(1, 2, 3, 4, 5)
    <type 'int'> 1
    <type 'tuple'> (2, 3, 4, 5)
    

    打包 dict

    def pack(a, **b):
            print type(a), a
            print type(b), b
     
    pack(1, a1=2, a2=3)
    <type 'int'> 1
    <type 'dict'> {'a1': 2, 'a2': 3}
    

    解包

    def pack(a, b, *c):
            print type(a), a
            print type(b), b
            print type(c), c
     
    score = [1.0, 2.0, 3.0, 4.0]
    pack(*score)
    
    <type 'float'> 1.0
    <type 'float'> 2.0
    <type 'tuple'> (3.0, 4.0)
    
    def pack(*c):
            print type(c), c
     
    student = {'score' : 1.0, 'id' : 2, 'name' : 'xiaoxiao'}
    pack(*student)
    
    <type 'tuple'> ('score', 'id', 'name')
    
    def pack(*a, **b):
            print type(a), a
            print type(b), b
     
    age = [1, 2, 3]
    student = {'score' : 1.0, 'id' : 2, 'name' : 'xiaoxiao'}
    pack(*age, **student)
    
    <type 'tuple'> (1, 2, 3)
    <type 'dict'> {'score': 1.0, 'id': 2, 'name': 'xiaoxiao'}
    
    from pydantic import BaseModel
    from typing import Dict, List, Sequence, Set, Tuple
    
    class Demo(BaseModel):
        a: int # 整型
        b: float # 浮点型
        c: str # 字符串
        d: bool # 布尔型
        e: List[int] # 整型列表
        f: Dict[str, int] # 字典型,key为str,value为int
        g: Set[int] # 集合
        h: Tuple[str, int] # 元组
    
    from typing import Union
    from pydantic import BaseModel
    
    class Time(BaseModel):
        time: Union[int, str]
            
    t = Time(time=12345)
    print(t.json()) # {"time": 12345}
    t = Time(time = "2020-7-29")
    print(t.json()) # {"time": "2020-7-29"}
    

    可选数据类型

    from typing import Optional
    from pydantic import BaseModel
    
    class Person(BaseModel):
        name: str
        age: Optional[int]
    

    相关文章

      网友评论

          本文标题:pydantic 拆包解包

          本文链接:https://www.haomeiwen.com/subject/ylekfltx.html