59 函数参数——默认值参数

news2024/11/28 4:38:57

在定义函数时,Python 支持默认值参数,在定义函数时可以为形参设置默认值。

在调用带有默认值参数的函数时,可以不用为设置了默认值的形参进行传递,此时函数将会直接使用函数定义时设置的默认值,当然也可以通过显式赋值来替换其默认值。也就是说,在调用函数时是否为默认值参数传递实参是可选的,具有较大的灵活性,在一定程度上类似于函数重载的功能。

在定义带有默认值参数的函数时,任何一个默认值参数右边都不能再出现没有默认值的普通位置参数,否则会提示语法错误。

① 可以使用 “函数名. _ _ default _ _ ” 随时查看函数所有默认值参数的当前值,其返回值为一个元组,其中的元素依次表示每个默认值参数的当前值。

def say(message, times=1):
    print((message + ' ') * times)


print(say.__defaults__)
say('hello')
say('hello', 3)

在这里插入图片描述

多次调用函数并且不为默认值参数传递值时,默认值参数只在定义时进行一次解释和初始化。 对于列表、字典这样可变类型的默认值参数,这一点可能会导致很严重的逻辑错误,而这种错误或许会耗费大量精力来定位和纠正。

def func(v, s=[]):
    s.append(v)
    return s


print(func('5', [1, 2, 3, 4]))
print(func('c', ['a', 'b']))
print(func('a'))
print(func('b'))  # 注意这里的输出结果

在这里插入图片描述

使用列表作为默认参数,由于其可记忆性,连续多次调用该函数而不给该参数传值时,再次调用将保留上一次调用的结果。一般来说,要避免使用列表、字典、集合或其他可变序列作为函数参数默认值。

def func(v, s=None):
    if s is None:
        s = []
    s.append(v)
    return s


print(func('5', [1, 2, 3, 4]))
print(func('c', ['a', 'b']))
print(func('a'))
print(func('b'))  # 注意这里的输出结果

在这里插入图片描述

③ 如果在定义函数时某个参数的默认值为另一个变量值,那么参数的默认值只依赖于函数定义时该变量的值,或者说函数的默认值参数是在函数定义时确定值的,所以只会被初始化依次。

i = 3


def func(n=i):  # 参数n的值取决于i的当前值
    print(n)


func()

i = 5
func()

i = 7
func()


def func(n=i):  # 重新定义函数
    print(n)


func()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1985193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第四届机械制造与智能控制国际学术会议(ICMMIC 2024,9月27-29)

2024年第四届机械制造与智能控制国际学术会议(ICMMIC 2024)将于2024年9月27-29日在中国沈阳沈阳理工大学举行。 本会议将围绕“机械制造、智能控制”的最新研究领域,促进机械工程、兵器科学与技术、控制科学与工程等相关学科的发展与交叉融合…

AUTOSAR之ECUM

1、EcuM简介 EcuM(ECU State Management)ECU状态管理模块属于AUTOSAR系统服务中模式管理部分,主要功能是管理ECU的上下电,初始化和反初始化OS,SchM,BswM以及其他一些驱动模块。 AUTOSAR 4.4版本前Ec…

WPF学习(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说,Border并不是一个布局控件,因为它并不是Panel的子类,而是Decorator装饰器的子类,而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。 public class Decorator : FrameworkElement, IAddChild {public…

【区块链+医疗健康】医保监管飞检魔方可信链 | FISCO BCOS应用案例

《“十四五”全民医疗保障规划》提出加快健全基金监管体制机制,要求飞行检查全覆盖。近年来,国家医保局 飞行检查专项行动,累计发现问题 70 多万家次,累计追回医保基金 340 多亿元。而飞行检查面临检查时间短、 工作任务重、数据多…

Linux 使用kickstart创建脚本实现新建虚拟机自动安装

Linux版本:红帽7.9 确保网络配置可用,本地仓库可用,同时已经挂载/dev/cdrom,可用yum list查看 一、环境配置: 1、首先保证是有图形界面 利用hostnamectl 查看 如果没有安装图形界面可以使用yum group install "Server wi…

源码编译安装LAMP(HTTP服务,MYSQL ,PHP)

一、安装Apache 可在生产环境使 下载在 下面两个插件是httpd2.4以后的版本所需要 tar xf apr-1.6.2.tar.gz tar xf apr-util-1.6.0.tar.gz 虽然xf通常足够,但使用与压缩算法对应的选项可以提供更好的控制。 tar xjf httpd-2.4.29.tar.bz2 mv apr-1.6.2 httpd-2.4.…

How to run OpenAI Gym .render() over a server

题意:怎样在服务器上运行 OpenAI Gym 的 .render() 方法 问题背景: I am running a python 2.7 script on a p2.xlarge AWS server through Jupyter (Ubuntu 14.04). I would like to be able to render my simulations. 通过 Jupyter(在 U…

鸿蒙Navigator跳转不生效的问题

新增配置文件: 注意:该文件要在moudle中配置引用,非则跳转无法生效:

[Meachines] [Easy] Sunday Finger网络用户枚举+Wget文件覆盖权限提升

信息收集 IP AddressOpening Ports10.10.10.76TCP:79, 111, 515, 6787, 22022 $ nmap -p- 10.10.10.76 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 79/tcp open finger? | fingerprint-strings: | GenericLines: | No one logged on | GetReque…

黑马Java零基础视频教程精华部分_14_正则表达式

系列文章目录 文章目录 系列文章目录一、先爽一下正则表达式不使用正则的情况下使用正则的情况下 二、正则表达式的作用三、正则表达式具体表达1、规则2、字符类示例3、预定义字符示例首先学习转义字符 示例练习 四、基本练习1、快捷方法:2、验证手机号3、验证座机电…

JavaEE 第4节 线程安全问题

小贴士: 本节题目所述的主题其实非常的庞大,如果要细讲起来,一篇博客远远不够,本篇博客只会每个方面的内容做一个简要描述,详细的内容在后续同专栏博客中都会涉及到的,如果有需要可以一步到本专栏的其他博客…

Flows.network

Flows.network是什么 Flows.network 是一个 Severless 平台,用 Rust 和 Wasm 构建 LLM Agent 和机器人。flows.network 平台允许开发者将像 ChatGPT 和 Claude 的大模型连接到不同的 SaaS 提供商。由于模型已经具备与 OpenAI 兼容的 API,我们可以像在 O…

Photoneo PhoXi 3D Scanner XS

静态场景快照式3D扫描仪 PhoXi 系列是Photoneo公司专为静态场景高分辨率和高精度扫描工业场景应用设计生产的3D扫描仪,PhoXi 3D Scanner XS 型号专为精确地输出而设计,主要应用于印刷电路板、小部件的检测等。 产品特点 红色激光扫描,所见即…

商家转账到零钱现金营销场景申请一次通过攻略

商家转账到零钱现金营销场景是微信支付商家申请最多的场景之一,微信支付平台对申请材料的要求较多从而导致商家很容易被驳回,根据我们上万次成功申请的经验,申请该功能时商家要确保一次过审,需要遵循以下详细步骤和注意事项&#…

AR眼镜:重型机械维修保养新利器

重型机械作为工业与建设领域的重要支柱,其稳定运行直接影响效率与成本。然而在偏远地区,面临复杂故障和高昂维修成本,传统维修方式常显得力不从心。如今,安宝特的AR远程协助解决方案结合Vuzix AR眼镜,正悄然改变这一现…

人工智能系统测试中,A/B测试的流程、技术方法与策略

模型的迭代和优化是推动人工智能技术进步的核心动力。如何准确地评估模型更新前后的性能提升,是人工智能测试中的一个难点。A/B测试,作为一项科学且客观的测试方法,在此过程中发挥着至关重要的作用。本文我们继续为大家介绍人工智能系统测试方…

数据中台之数据开发,数据开发概述与数据计算能力的类型

目录 一、数据开发概述 二、数据计算能力的类型 2.1 概述 2.2 批计算 2.2.1 概述 2.2.2 批计算模型 2.2.2.1 传统数据处理方案的问题 2.2.2.2 MapReduce模型 2.2.2.3 Spark框架 2.3 流计算 2.4 批流一体 2.5 在线查询 2.6 即席分析 一、数据开发概述 数据开发是数…

做空日经指数的策略与时机

一、市场背景分析 在全球股市的剧烈波动中,日本股市的表现尤为引人关注。日经225指数在经历一轮暴跌后,又出现了大幅反弹,这种剧烈的波动为投资者提供了做空日经指数的机会。近期,日本股市受到日元汇率波动、日本央行货币政策以及…

文章复现 创新点 代码改进跑通 深度学习

文章复现 创新点 代码改进跑通 深度学习 SCI代码复现 文章复现 数据处理、数据分析、算法、数据结构data structure、机器学习machine learning、深度学习deep learning。创新改进,算法提升 python环境配置 ,深度学习代码调试 、代码复现,py…

WebStorm格式化JSON,将一行很长的JSON展开

webstorm json格式化插件将一行很长的json展开 在WebStorm中,要展开很长的JSON行,可以使用内置的JSON格式化功能。 打开WebStorm,并打开包含JSON的文件。 选择JSON文件中的任意部分。 按下快捷键 CtrlAltL (Windows/Linux) 或 CmdAltL (Ma…