位置参数

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

位置参数也称必备参数,是必须按照正确的顺序传到函数中,即调用时的数量和位置必须和定义时是一样的。

(1)数量必须与定义时一致

在调用函数时,指定的实际参数的数量必须与形式参数的数量一致,否则将抛出TypeError异常,提示缺少必要的位置参数。

例如,调用根据身高、体重计算BMI指数的函数fun_bmi(person,height,weight),将参数少传一个,即只传递两个参数,代码如下:

def fun_bmi(person,height,weight):

    '''功能:根据身高和体重计算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.83)           # 计算路人甲的BMI指数

函数调用后,将显示如图8所示的异常信息。

图8  缺少必要的参数时抛出的异常

从图8所示的异常信息中可以看出,抛出的异常类型为TypeError,具体是指“fun_bmi()方法缺少一个必要的位置参数weight”。

(2)位置必须与定义时一致

在调用函数时,指定的实际参数的位置必须与形式参数的位置一致,否则将产生以下两种结果。

l  抛出TypeError异常

抛出异常的情况主要是因为实际参数的类型与形式参数的类型不一致,并且在函数中,这两种类型还不能正常转换。

例如,调用fun_bmi(person,height,weight)函数,将第1个参数和第2个参数位置调换,代码如下:

def fun_bmi(person,height,weight):

    '''功能:根据身高和体重计算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(60,"路人甲",1.83)     # 计算路人甲的BMI指数

函数调用后,将显示如图9所示的异常信息。主要是因为传递的整型数值不能与字符串进行连接操作。

图9  提示不支持的操作数类型

l  产生的结果与预期不符

在调用函数时,如果指定的实际参数与形式参数的位置不一致,但是它们的数据类型一致,那么就不会抛出异常,而是产生结果与预期不符的问题。

例如,调用fun_bmi(person,height,weight)函数,将第2个参数和第3个参数位置调换,代码如下:

def fun_bmi(person,height,weight):

    '''功能:根据身高和体重计算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("路人甲",60,1.83)                       # 计算路人甲的BMI指数

函数调用后,将显示如图10所示的结果。从结果中可以看出,虽然没有抛出异常,但是得到的结果与预期不一致。

图10  结果与预期不符

说明:由于调用函数时,传递的实际参数的位置与形式参数的位置不一致时,并不会总是抛出异常,所以在调用函数时一定要确定好位置,否则产生Bug,还不容易被发现。

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

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

相关文章

stack和queue(1)

一、stack的简单介绍和使用 1.1 stack的介绍 1.stack是一种容器适配器&#xff0c;专门用在具有先进后出&#xff0c;后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入和弹出操作。 2.stack是作为容器适配器被实现的&#xff0c;容器适配器即是…

信号与槽函数的魔法:QT 5编程中的核心机制

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、信号与槽函数的基本概念 二、信号与槽函数的实现原理 三、信号与槽函数的代码实例 四…

搭载算能 BM1684 芯片,面向AI推理计算加速卡

搭载算能 BM1684 芯片&#xff0c;是面向AI推理的算力卡。可集成于服务器、工控机中&#xff0c;高效适配市场上所有AI算法&#xff0c;实现视频结构化、人脸识别、行为分析、状态监测等应用&#xff0c;为智慧城市、智慧交通、智慧能源、智慧金融、智慧电信、智慧工业等领域进…

实用软件分享---- i茅台 在windows上自动预约和自动获取小茅运的软件

专栏介绍:本专栏主要分享一些实用的软件(Po Jie版); 声明1:软件不保证时效性;只能保证在写本文时,该软件是可用的;不保证后续时间该软件能一直正常运行;不保证没有bug;如果软件不可用了,我知道后会第一时间在题目上注明(已失效)。介意者请勿订阅。 声明2:本专栏的…

计算机基础学习路线

计算机基础学习路线 整理自学计算机基础的过程&#xff0c;虽学习内容众多&#xff0c;然始终相信世上无难事&#xff0c;只怕有心人&#xff0c;期间也遇到许多志同道合的同学&#xff0c;现在也分享自己的学习过程来帮助有需要的。 一、数据结构与算法 视频方面我看的是青…

C++_list简单源码剖析:list模拟实现

文章目录 &#x1f680;1. ListNode模板&#x1f680;2. List_iterator模板(重要)&#x1f331;2.1 List_iterator的构造函数&#x1f331;2.2 List_iterator的关于ListNode的行为 &#x1f680;3. Reverse_list_iterator模板(拓展)&#x1f680;4. List模板(核心)&#x1f331…

【计算机毕设】基于SpringBoot的房产销售系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 随着房地产市场的发展和互联网技术的进步&#xff0c;传统的房产销售模式逐渐向线上转移。设计并实现一个基于Spring Boot的房产销售系统&#xff0…

SpringCloud学习笔记(一)

SpringCloud、SpringCloud Alibaba 前置知识&#xff1a; 核心新组件&#xff1a; 所用版本&#xff1a; 学习方法&#xff1a; 1.看理论&#xff1a;官网 2.看源码&#xff1a;github 一、微服务理论知识 二、关于SpringCloud各种组件的停更/升级/替换 主业务逻辑是&#x…

尝试用智谱机器人+知识库,制作pytorch测试用例生成器

尝试用智谱机器人知识库,制作pytorch测试用例生成器 1 保存pytorch算子文档到txt2 创建知识库3 创建聊天机器人4 测试效果5 分享 背景:是否能将API的接口文档和sample放到RAG知识库,让LLM编写API相关的程序呢 小结:当前的实验效果并不理想,可以生成代码,但几乎都存在BUG 1 保存…

星闪在智能汽车端的应用

随着智能汽车、智能终端、智能家居和智能制造等多产业的快速发展&#xff0c;多应用领域对无线短距通信技术在低延时、高可靠、低功耗等方面提出共性要求&#xff0c;现有主流无线短距通信技术的先天局限和技术潜力无法满足新应用的技术要求&#xff0c;针对解决行业技术痛点的…

StrApi基本使用

1.创建项目(这里只使用默认的sqllite) 点击链接进入官网查看先决条件,看看自己的node,python等是否符合版本要求 运行以下命令进行创建项目(网慢导致下载失败的话可以尝试使用手机热点给电脑使用,我就是这样解决的,也可以看我csdn的资源这里进行下载) yarn create strapi-ap…

5.25.1 用于组织病理学图像分类的深度注意力特征学习

提出了一种基于深度学习的组织病理学图像分类新方法。我们的方法建立在标准卷积神经网络 (CNN) 的基础上,并结合了两个独立的注意力模块,以实现更有效的特征学习。 具体而言,注意力模块沿不同维度推断注意力图,这有助于将 CNN 聚焦于关键图像区域,并突出显示判别性特征通…

基于Python的校园预约打印网站的实现

基于Python的校园预约打印网站的实现 开发语言:Python 数据库&#xff1a;MySQL所用到的知识&#xff1a;Django框架工具&#xff1a;pycharm、Navicat、Maven 系统功能实现 注册 新用户首先要进行注册信息填写&#xff0c;填写完成以后进行登录即可使用此网站 打印社 分别有…

同元软控受邀出席2024工业软件创新发展学术会议

5月24日至26日&#xff0c;以“工业软件与新质生产力”为主题的2024工业软件创新发展学术会议在武汉顺利召开。会议由《软件导刊》编辑部主办&#xff0c;复杂关键软件环境全国重点实验室、武汉人工智能研究院、武汉轻工大学电气与电子工程学院承办&#xff0c;百度公司等单位协…

RandLA-Net 训练自定义数据集

https://arxiv.org/abs/1911.11236 搭建训练环境 git clone https://github.com/QingyongHu/RandLA-Net.git搭建 python 环境 , 这里我用的 3.9conda create -n randlanet python3.9 source activate randlanet pip install tensorflow2.15.0 -i https://pypi.tuna.tsinghua.e…

数据结构与算法 :数据结构绪论,时间和空间复杂度 推导大O阶

各位少年 大家好 我是博主那一脸阳光&#xff0c;今天开始给大家分享数据结构&#xff0c;由于我个人当初学的时候是自学&#xff0c;并没有看培训机构的视频 所以接下来我分享的数据结构的内容&#xff0c;源头来自一本书叫做大话数据结构。顺便一提为了方面大家理解&#xff…

unicloud 云对象

背景和优势 20年前&#xff0c;restful接口开发开始流行&#xff0c;服务器编写接口&#xff0c;客户端调用接口&#xff0c;传输json。 现在&#xff0c;替代restful的新模式来了。 云对象&#xff0c;服务器编写API&#xff0c;客户端调用API&#xff0c;不再开发传输json…

二叉树—堆(C语言实现)

一、树的概念及结构 1.树的概念 树是一种非线性的数据结构&#xff0c;它是有n&#xff08;n > 0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一颗倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下。 ● 有一个特殊的结点…

结构设计模式 - 代理设计模式 - JAVA

代理设计模式 一. 介绍二. 代码示例2.1 定义 CommandExecutor 类2.2 定义 CommandExecutorProxy代理类2.3 模拟客户端2.4 测试结果 三. 结论 前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子…

虚幻引擎5 Gameplay框架(四)

Gameplay重要类及重要功能使用方法&#xff08;三&#xff09; 虚幻的委托机制 虚幻委托之间的区别序列化就是是否可以在蓝图中执行 多播与单播的创建 制作功能&#xff1a;使用多播与单播将血条与血量进行实时更新首先新建一个单播与一个多播委托 实例化这两个委托的标签…