#! /usr/bin/env pyhton # -*- coding:utf-8 -*- # author:jeff.xie # datetime:2024/1/16 13:57 # software:PyCharm # 定义传进来的参数为int类型 # -> int 表示这个方法的返回值数据类型为int def a(b: int) -> int: print(b) a(12) a("rr") # 一、类型提示 # 在python中,我们定义一个有参函数,调用该函数时需要传入参数,如下所示: # 定义一个简单的函数 def get_full_name(first_name, last_name): full_name = first_name.title() + " " + last_name.title() return full_name print(get_full_name("john", "doe")) # 正常运行,结果:John Doe # print(get_full_name(1,2)) # 报错 因为int类型的数据没有title()这个方法 # 上面的函数中有两个参数,但是没有说明参数的数据类型, # 所以如果我们传入的类型不是str类型就会报错 # 所以代码修改为以下 # 注意函数参数后面的 ':str', 就表示该参数需要的是str类型的数据 def get_full_name(first_name: str, last_name: str): full_name = first_name.title() + " " + last_name.title() return full_name print(get_full_name("john", "doe")) def get_items(item_a: str, item_b: int, item_c: float, item_d: bool, item_e: bytes): return item_a, item_b, item_c, item_d, item_d, item_e # 嵌套类型 # 有些容器数据结构可以包含其他的值,比如 dict、list、set 和 tuple。它们内部的值也会拥有自己的类型。 # 你可以使用 Python 的 typing 标准库来声明这些类型以及子类型。它专门用来支持这些类型提示。 # 列表类型 # 例如,让我们来定义一个由 str 组成的 list 变量。 # 从 typing 模块导入 List(注意是大写的 L): from typing import List def process_items(items: List[str]): for item in items: print(item) # 同样以冒号(:)来声明这个变量。输入 List 作为类型。由于列表是带有"子类型"的类型,所以我们把子类型放在方括号中。 # 元组和集合类型 # 声明 tuple 和 set 的方法也是一样的: from typing import Set, Tuple def process_items(items_t: Tuple[int, int, str], items_s: Set[bytes]): return items_t, items_s # 变量 items_t 是一个 tuple,其中的前两个元素都是 int 类型, 最后一个元素是 str 类型。 # 变量 items_s 是一个 set,其中的每个元素都是 bytes 类型。 # 字典类型 # 定义 dict 时,需要传入两个子类型,用逗号进行分隔。 # 第一个子类型声明 dict 的所有键。 # 第二个子类型声明 dict 的所有值: from typing import Dict def process_items(prices: Dict[str, float]): for item_name, item_price in prices.items(): print(item_name) print(item_price) # 这表示: # 变量 prices 是一个 dict: # 这个 dict 的所有键为 str 类型(可以看作是字典内每个元素的名称)。 # 这个 dict 的所有值为 float 类型(可以看作是字典内每个元素的价格)。 # 二、'->'的用法 # 使用上面的例子,如下: def get_full_name(first_name: str, last_name: str): full_name = first_name.title() + " " + last_name.title() return full_name # 可以看到,如果不看内部代码,我们并不知道这个函数返回值的数据类型,所以我们做如下改动: # 注意函数形参后面有个: -> str def get_full_name(first_name, last_name) -> str: full_name = first_name.title() + " " + last_name.title() return full_name # 我们可以看到,在上面的函数中,我们在形参后面添加了 '-> str' ,这个指的是函数的返回值为数据类型,告诉函数调用者这个函数的返回值为 str 类型的数据。