您的位置:

Python指定参数类型

一、python指定参数类型是一个函数

在Python中指定参数类型是通过函数实现的,通常使用typing模块中的注释来说明参数的类型。

例如下面的代码中,注释说明了参数x的类型为int,y的类型为float,返回值的类型为str。

    import typing
    
    def add(x: int, y: float) -> str:
        return str(x + y)

通过注释指定参数类型是一种较为常用的方式,但并不是Python强制执行的。

二、Python函数参数的四种类型

Python中函数参数有4种类型,分别是:位置参数、默认参数、关键字参数、可变参数。

1. 位置参数

位置参数就是以位置为依据来匹配参数值和形参,数量和位置都需要一一对应。

    def foo(x, y):
        print(x, y)
        
    foo(1, 2) # 1 2

2. 默认参数

默认参数指在定义函数时给参数设定一个默认值,在函数调用时可以不传递这个参数。

    def foo(x, y=2):
        print(x, y)
        
    foo(1) # 1 2
    foo(1, 3) # 1 3

3. 关键字参数

关键字参数指在函数调用时使用关键字来指定参数值,可以不按顺序传递参数。

    def foo(x, y):
        print(x, y)
        
    foo(y=2, x=1) # 1 2

4. 可变参数

可变参数指函数定义时不确定参数的个数,可以通过添加*args或**kwargs来处理。

    def foo(*args):
        for arg in args:
            print(arg)
        
    foo(1,2,3,4) # 1 2 3 4
        
    def bar(**kwargs):
        for k, v in kwargs.items():
            print(k, v)
        
    bar(a=1, b=2, c=3) # a 1 b 2 c 3

三、Python指定数据类型

为了保证代码的可读性和健壮性,Python提供了指定数据类型和函数返回值的方法。

1. Python规定参数类型

可以通过声明函数参数的类型来规定参数的类型,例如下面的代码中,参数x和y分别规定为int类型和float类型。

    def add(x: int, y: float) -> float:
        return x + y
        
    result = add(1, 2.0)
    print(result) # 3.0

2. Python怎么指定参数为列表

对于可变参数类型,可以使用List类型来规定参数为列表。

    from typing import List
    
    def foo(xs: List[int]):
        for x in xs:
            print(x)
        
    foo([1, 2, 3])

四、Python参数类型

在Python中,常用的参数类型包括:整数型、浮点型、字符串型、列表型、元组型、字典型和布尔型。

1. 整数型

整数型即整数类型,使用int进行定义,例如下面的代码中的参数x的类型为整数型。

    def foo(x: int):
        print(x)
        
    foo(1)

2. 浮点型

浮点型即小数类型,使用float进行定义,例如下面的代码中的参数y的类型为浮点型。

    def foo(y: float):
        print(y)
        
    foo(1.23)

3. 字符串型

字符串型即字符串类型,使用str进行定义,例如下面的代码中的参数text的类型为字符串型。

    def foo(text: str):
        print(text)
        
    foo('hello world')

4. 列表型

列表型即列表类型,使用List进行定义,例如下面的代码中的参数xs的类型为列表型。

    from typing import List
    
    def foo(xs: List[int]):
        for x in xs:
            print(x)
        
    foo([1, 2, 3])

5. 元组型

元组型即元组类型,使用Tuple进行定义,例如下面的代码中的参数xy的类型为元组型。

    from typing import Tuple
    
    def foo(xy: Tuple[int, float]):
        x, y = xy
        print(x, y)
        
    foo((1, 1.23))

6. 字典型

字典型即字典类型,使用Dict进行定义,例如下面的代码中的参数d的类型为字典型。

    from typing import Dict
    
    def foo(d: Dict[str, int]):
        for k, v in d.items():
            print(k, v)
        
    foo({'a': 1, 'b': 2})

7. 布尔型

布尔型即布尔类型,使用bool进行定义,例如下面的代码中的参数flag的类型为布尔型。

    def foo(flag: bool):
        if flag:
            print('True')
        else:
            print('False')
        
    foo(True)

五、Python类的参数

Python类也可以使用注释来指定参数类型,例如下面的代码中,使用注释指定参数a和b的类型均为整数。

    class Foo:
        def __init__(self, a: int, b: int):
            self.a = a
            self.b = b
        
        def add(self) -> int:
            return self.a + self.b
            
    f = Foo(1, 2)
    print(f.add()) # 3

六、Python的函数类型

Python中的函数类型包括普通函数、有返回值的函数、有注释的函数、匿名函数、装饰器函数等。

1. 普通函数

普通函数就是最常用的函数类型,例如下面的代码中的函数add就是普通函数。

    def add(x, y):
        return x + y
        
    print(add(1, 2)) # 3

2. 有返回值的函数

有返回值的函数指在函数体中使用return语句返回结果的函数,例如下面的代码中的函数add就是有返回值的函数。

    def add(x, y):
        return x + y
        
    print(add(1, 2)) # 3

3. 有注释的函数

在函数定义中,可以使用注释来指定函数的参数类型和返回值类型,例如下面的代码中的函数add就是有注释的函数。

    def add(x: int, y: int) -> int:
        return x + y
        
    print(add(1, 2)) # 3

4. 匿名函数

Python中的匿名函数使用lambda关键字定义,例如下面的代码中的函数f就是一个匿名函数。

    f = lambda x, y: x + y
        
    print(f(1, 2)) # 3

5. 装饰器函数

装饰器函数是一种高阶函数,用于对其他函数进行添加功能或修改行为,例如下面的代码中的函数log就是一个装饰器函数。

    def log(func):
        def wrapper(*args, **kwargs):
            print('start at:', time.time())
            func(*args, **kwargs)
            print('end at:', time.time())
        return wrapper
        
    @log
    def add(x, y):
        print(x + y)
        
    add(1, 2)