首页 > 编程语言 >Python高级之函数参数进阶Optional

Python高级之函数参数进阶Optional

时间:2024-05-09 15:12:55浏览次数:15  
标签:None Python data 函数参数 int user str 类型 Optional

【一】引言

  • 在Python 3.5版本后引入的typing模块为Python的静态类型注解提供了支持。
  • 这个模块在增强代码可读性和维护性方面提供了帮助。
  • 本文将深入探讨typing模块,介绍其基本概念、常用类型注解以及使用示例,以帮助读者更全面地了解和应用静态类型注解。

【二】基本类型注解

【1】基础语法

def example(参数名: 参数类型) -> 返回值类型:
    代码块
    return  返回值

【2】内置类型

  • typing模块中提供了与Python内置类型相对应的类型提示,比如int、float、str、bool等
def user(name: str, password: int, salary: float, tag: bool):
    print(name, type(name))  # 字符串类型
    print(password, type(password))  # 整数类型
    print(salary, type(salary))  # 浮点数类型
    print(tag, type(tag))  # 布尔类型


user('ligo', 123, 3000.5, True)
# ligo <class 'str'>
# 123 <class 'int'>
# 3000.5 <class 'float'>
# True <class 'bool'>

【3】类型别名

  • typing模块中有多种内置的类型别名,比如List、Dict、Tuple、Set等,用于注解变量和函数的预期类型

(1)列表类型

from typing import List

# 定义一个名为user的函数,接收一个整数列表(List[int])类型的参数user_data,并无返回值(None)
# 函数作用:打印传入数据user_data是一个整数列表,以及列表中的每个元素都是整数类型,同时输出数据本身
def user(user_data: List[int]) -> None:
    print(user_data, type(user_data))


user(['ligo', 123]) #['ligo', 123] <class 'list'>

(2)字典类型

from typing import Dict

# 定义一个名为user的函数,接收一个字典(Dict[str, int])类型的参数user_data,其中键为字符串(str),值为整数(int),并无返回值(None)
# 函数作用:打印传入数据user_data是一个字典,键为字符串类型,值为整数类型,同时输出数据本身
def user(user_data: Dict[str, int]) -> None:
    print(user_data, type(user_data))


user({'password': 123}) #{'password': 123} <class 'dict'>

(3)元祖类型

from typing import Tuple

# 定义一个名为user的函数,接收一个元组(Tuple[str])类型的参数user_data,其中元素为字符串(str),并无返回值(None)
# 函数作用:打印传入数据user_data是一个元组,所有元素均为字符串类型,同时输出数据本身
def user(user_data: Tuple[str]) -> None:
    print(user_data, type(user_data))


user(('1', '2', '3'))  # ('1', '2', '3') <class 'tuple'>

(4)集合类型

from typing import Set

# 定义一个名为user的函数,接收一个集合(Set[int])类型的参数user_data,其中元素为整数(int),并无返回值(None)
# 函数作用:打印传入数据user_data是一个集合,所有元素均为整数类型,同时输出数据本身
def user(user_data: Set[str]) -> None:
    print(user_data, type(user_data))


user({1, 2, 3})  #{1, 2, 3} <class 'set'>

【4】Any

  • Any表示任意类型,用于无法确定具体类型或者希望允许任何类型的情况
#Any表示允许任何类型的数据
from typing import Any

# 定义一个名为user的函数,接收一个Any类型的参数user_data,表示该参数可以是任何类型的数据
# 函数没有返回值,声明为None
def user(user_data: Any) -> None:
    print(user_data,type(user_data))


user('ligo')  
user(123)  
user({1, 2, 3}) 
user(1.23)  
# ligo <class 'str'>
# 123 <class 'int'>
# {1, 2, 3} <class 'set'>
# 1.23 <class 'float'>

【5】Union类型

  • Union允许参数接受多种不同类型的数据
#Union允许函数接收多种类型作为参数或返回值
from typing import Union

# 定义一个名为number的函数,接收一个联合类型(Union[int, float, str])的参数number,可以是整数(int)、浮点数(float)或字符串(str)
# 函数返回值也为联合类型(Union[int, float, str]),即返回结果可能是整数、浮点数或字符串
def number(num: Union[int, float, str]) -> None:
    print(num, type(num))


number('ligo')  # ligo
number(123)  # 123
number(1.23)  # 1.23
# ligo <class 'str'>
# 123 <class 'int'>
# 1.23 <class 'float'>

【6】Optional类型

  • Optional表示参数可以是指定类型或者None
# Optional[str]表示字符串类型或None
from typing import Optional


# 定义一个名为user的函数,接收一个Optional[str]类型的参数name,表示该参数可以是字符串类型或None
# 函数返回一个str类型的结果
def user(userdata: Optional[str]) -> int:
    print(userdata, type(userdata))


user('ligo')  # ligo <class 'str'>


# 定义一个名为user的函数,接收一个Optional[int]类型的参数name,表示该参数可以是字符串类型或None
# 函数返回一个int类型的结果
def user(userdata: Optional[int]) -> int:
    print(userdata, type(userdata))


user(123)  # 123 <class 'int'>

标签:None,Python,data,函数参数,int,user,str,类型,Optional
From: https://www.cnblogs.com/ligo6/p/18179997

相关文章

  • Python高级之名称空间和作用域
    【一】名称空间【1】什么是名称空间名称空间就是存放函数名与函数值对应关系的地方内存空间就是申请一块内存空间,然后将函数值放到内存空间里再将变量名和变量值绑定存到名称空间里程序执行期间最多会存在三种名称空间【2】内置名称空间会跟着python解释器的启动而生成,......
  • Python高级之匿名函数
    【一】匿名函数的定义在Python里有两类函数:用def关键词定义的正规函数用lambda关键词定义的匿名函数lambda参数:表达式lambda:定义匿名函数的关键词。函数参数它们可以是位置参数、默认参数、关键字参数表达式,输入函数参数,输出一些值,表达式本身结果就是返回......
  • Python高级之函数对象与闭包函数
    【一】函数对象函数对象是指函数可以被当成数据来处理,python中一切皆为对象【1】函数可以被引用defadd(a,b):returna+bres=add(3,4)print(res)#7【2】函数作为容器类型的元素defadd(a,b):returna+bnum_list=[add,1]res=num_list[0......
  • Python高级之函数的参数
    【一】形参和实参函数的参数分为形参和实参,形参就是定义在函数名后面括号里的参数(用来接收外部传来的值),实参就是调用函数时,括号里传进去的值(值可以是常量、变量、表达式)defadd(x,y):returnx+y#实参是常量print(add(3,4))#输出7#实参是变量x=3y=4prin......
  • Python高级之函数
    【一】函数的基本使用我们在前面的学习中,所有的功能代码都集中在一块,需要使用同一功能时,需重复编写该功能的代码,这样比较麻烦,当我们到后面代码变得越来越长,也不利于我们修改其中一个小功能的代码我们完全可以从现实生活中找到简化程序设计的方案:比如一个修理工会事先准备好螺......
  • xlwings:在Excel中集成Python
    Github地址:https://github.com/xlwings/xlwings在现代数据分析和报表生成中,MicrosoftExcel仍然是一款非常流行和强大的工具。与此同时,Python作为一种高级编程语言,具备出色的数据处理和分析能力。那么,有没有一种方法可以将Excel和Python完美结合,以发挥它们各自的优势?答案是肯定的......
  • pybuilder:Python项目构建、测试、文档、发布
    Github地址:https://github.com/pybuilder/pybuilder在Python项目开发中,良好的构建和自动化流程是非常重要的。PyBuilder是一个用于构建Python项目的工具,它提供了简单易用的方式来定义和管理项目的构建过程,包括依赖管理、测试、代码质量检查等。本文将深入探讨PyBuilder库的使用......
  • Python 如何优雅的操作 PyMySQL
    一、PyMysql在使用Python操作MySQL数据过的过程中,基本的增删改查操作如何更加高效优雅的执行。这里将以PyMySQL为例,介绍一下如何使用Python操作数据库。Python对MySQL数据库进行操作,基本思路是先连接数据库Connection对象,建立游标Cursor对象,然后执行SQL语句对数据库进行操作......
  • 7个鲜为人知的 Python 好库!
    https://mp.weixin.qq.com/s/eY1QXpwbTNSOd08Wfpg4sQ①-PivotTableJS无需任何代码就可以在JupyterNotebook中交互式地分析数据。https://pypi.org/project/pivottablejs/②-PyTube只需5行代码就可以下载油管视频。可能这个是国内用户最用不到的Python库了。https://pytu......
  • 四款强大的 Python 可视化库
    ......