为参数设置默认值

2024-06-01 00:20
文章标签 参数设置 默认值

本文主要是介绍为参数设置默认值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

调用函数时,如果没有指定某个参数将抛出异常,为了解决这个问题,我们可以为参数设置默认值,即在定义函数时,直接指定形式参数的默认值。这样,当没有传入参数时,则直接使用定义函数时设置的默认值。定义带有默认值参数的函数的语法格式如下:

def functionname(…,[parameter1 = defaultvalue1]):

    [functionbody]

参数说明:

l  functionname:函数名称,在调用函数时使用。

l  parameter1 = defaultvalue1:可选参数,用于指定向函数中传递的参数,并且为该参数设置默认值为defaultvalue1。

l  functionbody:可选参数,用于指定函数体,即该函数被调用后,要执行的功能代码。

注意:在定义函数时,指定默认的形式参数必须在所有参数的最后,否则将产生语法错误。

例如,修改根据身高、体重计算BMI指数的函数fun_bmi(),为其第一个参数指定默认值,修改后的代码如下:

def fun_bmi(height,weight, person = "路人"):

    '''功能:根据身高和体重计算BMI指数

       person:姓名

       height:身高,单位:米

       weight:体重,单位:千克

    '''

    print(person + "的身高:" + str(height) + "米 \t 体重:" + str(weight) + "千克")

    bmi=weight/(height*height)                  # 用于计算BMI指数,公式为:BMI:体重/身高的平方

    print(person + "的BMI指数为:"+str(bmi))    # 输出BMI指数

    # 判断身材是否合理

    if bmi<18.5:

        print("您的体重过轻 ~@_@~\n")

    if bmi>=18.5 and bmi<24.9:

        print("正常范围,注意保持 (-_-)\n")

    if bmi>=24.9 and bmi<29.9:

        print("您的体重过重 ~@_@~\n")

    if bmi>=29.9:

        print("肥胖 ^@_@^\n")

然后调用该函数,不指定第一个参数,代码如下:

fun_bmi(1.73,60)                       # 计算BMI指数

执行结果如下:

路人的身高:1.73米      体重:60千克

路人的BMI指数为:20.04744562130375

正常范围,注意保持 (-_-)

多学两招:在Python中,可以使用“函数名.__defaults__”查看函数的默认值参数的当前值,其结果是一个元组。例如,显示上面定义的fun_bmi()函数的默认值参数的当前值,可以使用“fun_bmi.__defaults__”,结果为“('路人',)”。

另外,使用可变对象作为函数参数的默认值时,多次调用可能会导致意料之外的情况。例如,编写一个名称为demo()的函数,并为其设置一个带默认值的参数,代码如下:

def demo(obj=[]):          # 定义函数并为参数obj指定默认值

    print("obj的值:",obj)

    obj.append(1)

调用demo()函数,代码如下:

demo()               # 调用函数

将显示以下结果:

obj的值: []

连续两次调用demo()函数,并且都不指定实际参数,代码如下:

demo()               # 调用函数

demo()               # 调用函数

将显示以下结果:

obj的值: []

obj的值: [1]

从上面的结果看,这显然不是我们想要的结果。为了防止出现这种情况,最好使用None作为可变对象的默认值,这时还需要加上必要的检查代码。修改后的代码如下:

def demo(obj=None):

    if obj==None:

        obj = []

    print("obj的值:",obj)

    obj.append(1)

连续两次调用demo()函数,并且都不指定实际参数,代码如下:

demo()               # 调用函数

demo()               # 调用函数

将显示以下运行结果:

obj的值: []

obj的值: []

说明:定义函数时,为形式参数设置默认值要牢记一点:默认参数必须指向不可变对象。

这篇关于为参数设置默认值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1019455

相关文章

wolfSSL参数设置或配置项解释

1. wolfCrypt Only 解释:wolfCrypt是一个开源的、轻量级的、可移植的加密库,支持多种加密算法和协议。选择“wolfCrypt Only”意味着系统或应用将仅使用wolfCrypt库进行加密操作,而不依赖其他加密库。 2. DTLS Support 解释:DTLS(Datagram Transport Layer Security)是一种基于UDP的安全协议,提供类似于

el-date-picker年份选择默认值为当前年,并且将获取时间转为年月日格式

<el-date-pickervalue-format="yyyy"v-model="leftQuery.year":disabled="timeArr && timeArr.length != 0 ? true : false"type="year"placeholder="选择年"@change=changeYear:picker-options="pickerOptions"></el-da

urdf ( xacro ) 的 collision碰撞参数设置

目录 写在前面的话整体流程1 URDF 文件结构2 查看原始碰撞形状描述3 加入简单碰撞形状描述方法一 Meshlab 自动测量方法二 人为测量 4 加入XACRO函数简化描述 最终结果展示侧视图正视图碰撞几何体中心点设置不对出现的结果 写在前面的话 本文使用的 URDF 文件是由 solidworks 的 URDF export 插件生成,详情请看上一篇文章:solidwor

Django:Python高级Web框架详解及参数设置

Django是一个高级的Python Web框架,它鼓励快速开发和简洁实用的设计。Django遵循MVC设计模式,提供了一套完整的解决方案,用于构建复杂的、数据库驱动的网站。 Django的主要特点 自动管理数据库:通过ORM(对象关系映射)自动管理数据库。自动生成站点地图:支持搜索引擎优化(SEO)。用户身份认证:内置用户认证系统。中间件支持:强大的中间件支持,可以处理请求和响应。跨站请求伪

extjs中grid,设置CheckboxSelectionModel的默认值

Grid(命名为BasicGrid)中定义了:this.sm = new Ext.grid.CheckboxSelectionModel();。表示一列checkBox。 情景:上面Grid所在的窗口弹出之后,选择一项(我这里是只选一项)点击确定之后关闭该窗口。当需要再次弹出该窗口时,把刚刚已经选择的那一项打上勾。下面是方法:我是写在弹出该窗口的方法中的。

大数据系列之:查看Centos服务器系统日志,排查应用进程oom情况,查看进程堆内存信息,查看进程启动参数设置

大数据系列之:查看Centos服务器系统日志,排查应用进程oom情况,查看进程堆内存信息,查看进程启动参数设置 查看Centos服务器系统日志查看应用进程oom日志查看进程堆内存信息查看进程启动参数设置 查看Centos服务器系统日志 cat /var/log/messages /var/log/messages是一个系统日志文件,用于记录系统的各种消息、事件和错误信息。

C++入门基础知识47——【关于C++函数】之函数参数及参数默认值

成长路上不孤单😊【14后,C++爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊!!!!!!今日分享关于C++函数之函数参数及参数默认值的相关内容! (接上篇……) 四、函数参数 如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。 形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。 当调用函数时,有两种向函数传递

Android系统中默认值的意义列表

在SettingsProvider中设置系统中默认值,我们可以在frameworks\base\packages\SettingsProvider\res\values\default.xml文件中看到常用的一些默认值,这次我就来详细解释下这里面默认的意义。当然,这不是全部的默认值,全部默认值得定义要在frameworks\base\core\java\android\provider\Setti

为mysql中查出为空的内容赋默认值

前言 表之间进行连表查询,比如左连接,可能右表没有数据,就会出现为空的情况,想让为空的有个默认值,于是就用到了IFNULL关键字。 1.表结构 tschooluser表 tschoolinfo表 这两个表通过username进行关联 2.sql语句 SELECT a.username,a.sch_name,b.state  FROM tschooluser a LEF

sqlite3 db.configure方法详解:设置项与默认值

在Node.js环境中,sqlite3库为开发者提供了一个与SQLite数据库进行交互的简洁API。除了基本的数据库操作外,sqlite3还允许开发者通过db.configure方法来配置数据库的一些底层参数和行为。本文将深入解析db.configure方法,包括其API函数定义、所有可用的设置项及其默认值,以及相应的代码示例解释。 一、db.configure方法简介 db.configur