Python定义函数时可以为参数指定名称、类型提示和默认值

news/2024/12/22 19:33:07/

1. 形参名称

在函数定义中,形参是用于指定函数接收的参数的名称。形参在函数内部用于引用传递的值。

python">def foo(name):print(f'name = {name}')foo('John')  # name = John

在这个示例中,name是一个形参,当调用函数时,传入的值会绑定到这个形参上。

2. 类型提示(Type Hints)

类型提示不是强制的类型检查,但它为代码提供了可读性和类型提示的帮助。可以通过在参数名后加上冒号和类型来指定参数的类型提示。返回值类型可以在函数声明后使用箭头->指定。

此示例中:
tag:str表示tag预期是str类型。a: intb: int表示ab预期是整数类型。-> int表示函数的返回值类型是整数。

python">def foo(tag:str, a:int, b:int) -> int:print(f'tag = {tag}')return a+bprint(foo('garry', 4, 6))    # 10
print(foo('garry', 4, 6.6))  # 10.6, 类型提示并不会强制 Python 进行类型检查,它只是一个提示功能

输出:

tag = garry
10
tag = garry
10.6

3. 默认值

在函数定义中,可以为参数指定默认值。如果调用函数时没有为某个参数提供值,则会使用该参数的默认值。

python">def foo(name:str='defaultName'):print(f'name = {name}')foo()           # name = defaultName
foo('garry')    # name = garry

输出:

name = defaultName
name = garry

4. 结合使用:形参名称、类型提示、默认值

python">def display_info(name:str, age:int=30, job:str="Doctor"):print(f'name = {name}, age = {age}, jog = {job}')display_info('garry')
display_info('garry', 20)
display_info('garry', 20, 'Engineer')

输出:

name = garry, age = 30, jog = Doctor
name = garry, age = 20, jog = Doctor
name = garry, age = 20, jog = Engineer

name: str表示name需要是一个字符串类型,并且没有默认值。
age: int = 30表示age需要是一个整数类型,并且默认值是30
job: str = "Doctor" 表示job需要是一个字符串类型,并且默认值是 "Doctor"
-> None表示函数不返回任何值。

形参名称用于引用传递给函数的值。
类型提示 提供代码的可读性和类型安全性,但不强制执行类型检查。
默认值 用于在调用函数时未传入参数时提供默认值。

5. Optional

在Python中,Optionaltyping模块中的一种类型提示,表示某个参数可以是指定类型,也可以是NoneOptional常用于函数参数中,帮助清晰地表明某个参数是可选的,也即可以传递一个值,也可以传递None

当一个函数参数的值可以是某种类型或None 时,使用Optional来明确这一点。
Optional[X]实际上是Union[X, None]的一种简写方式,表示这个参数的值可以是类型XNone

python">from typing import Optionaldef foo(name:Optional[str]=None)->None:if name is None:print("name is not provided.")else:print("name is", name)def bar(name:Optional[str])->None:if name:print(f"name = {name}")else:print("name not provided")foo()
bar(None)

输出:

name is not provided.
name not provided

http://www.ppmy.cn/news/1533227.html

相关文章

网站集群批量管理-密钥认证与Ansible模块

一、集群批量管理-密钥认证 1、概述 管理更加轻松:两个节点,通过密钥形式进行访问,不需要输入密码,仅支持单向. 服务要求(应用场景): 一些服务在使用前要求我们做秘钥认证.手动写批量管理脚本. 名字: 密钥认证,免密码登录,双机互信. 2、原理 税钥对…

NAND Flash虚拟层索引表机制

​​​​​ NAND Flash虚拟层的索引表用于建立逻辑块与数据块、日志块之间的关系,用于NAND Flash虚拟层在运行过程中的读写、擦除操作;由于NAND Flash虚拟层采用集中索引的方式,因此在NAND Flash虚拟层启动时需要在NAND Flash存放索引表区域扫描并确定NAND Flash中存…

完整网络模型训练(一)

文章目录 一、网络模型的搭建二、网络模型正确性检验三、创建网络函数 一、网络模型的搭建 以CIFAR10数据集作为训练例子 准备数据集: #因为CIFAR10是属于PRL的数据集,所以需要转化成tensor数据集 train_data torchvision.datasets.CIFAR10(root&quo…

前端Vue.js与后端Flask/Django协同开发指南

1. 为什么选择Vue.js + Flask/Django? Vue.js的优势: 轻量级:Vue.js核心库体积小巧,加载速度快,性能优越。渐进式框架:Vue.js既可以作为简单的库用于开发小型组件,也可以扩展为大型的前端框架用于构建复杂的SPA应用。灵活的组件系统:Vue.js的组件化开发模式支持高度的…

Windows 10 系统安装 FFmpeg 查看、转换、编辑音频文件

1、FFmpeg官网:FFmpeg 点击下载 可以选择下载full版本 下载之后解压到指定目录,在系统环境变量 Path 里面新增环境变量 打开CMD终端运行 ffmpeg -version 查看是否安装成功。 2、基本命令 查看音频基本信息 ffprobe 1.mp3 ##输出 [mp3 000002ab334405…

Windows Subsystem for Linux——支持cuda能力

CUDA(Compute Unified Device Architecture,统一计算设备架构)是一种由NVIDIA公司推出的并行计算平台和编程模型,它特别适用于需要高性能计算(HPC)和大规模并行处理的场景。当我们在WSL2中开发深度学习与机…

5G N2 N3 N6 NB口

在5G架构中,N2、N3和N6是三种关键的接口,每个接口都有其特定的功能和应用场景。 N2接口: N2接口是5G无线接入网(RAN)与5G核心网(5GC)之间的控制面接口。它主要负责传递控制平面消息&#xff0c…

关于KKT条件的线性约束下非线性问题-MATLAB

KKT背景 KKT条件得名于三位数学家:Karush(1939)、Kuhn(1951)和Tucker(1952),他们分别提出了类似的优化条件,并在后续研究中被统一和扩展。KKT条件是一种用于判断约束优化…