Python 程序设计讲义(55):Python 的函数——函数的参数

Python 程序设计讲义(55):Python 的函数——函数的参数

目录

  • Python 程序设计讲义(55):Python 的函数——函数的参数
    • 一、声明形参
    • 二、传递实参(位置参数)
        • 1、在调用函数进行传递参数时,使用的实参要与形参的数量一致
        • 2、在调用函数进行传递参数时,实参与形参的顺序要对应
        • 3、在调用函数进行传递参数时,实参与形参的数据类型要一致
    • 三、为形参设置默认值
    • 四、使用参数名称传递实参(关键字参数)

在定义函数时,可以在函数名后面的括号中设置参数。设置参数之后,调用函数时可以对函数的参数赋予不同的数值,函数的每次调用执行结果就可能不同。

一、声明形参

定义函数时,需要为函数声明参数,该参数相当于函数语句块中的变量,在函数内使用。定义函数时的参数常被称为形式参数,简称形参。其所用是在调用函数时专门为函数传递对应的值。形参在函数名后面的括号中定义。

声明形参的语法格式如下:

def 函数名(形参):函数体

当声明的参数为多个时,就构成了形参列表,每个形参之间用逗号(,)分割。

语法格式如下:

def 函数名(形参1, 形参2, ...):函数体

例如:定义一个函数area(),函数的功能是求长方体的面积,长方体的长、宽、高作为函数的形参。

代码如下:

def area(a,b,c):return a*b*c

二、传递实参(位置参数)

为函数声明形参以后,就可以在调用函数时进行参数传递。调用函数时传递的参数称为实际参数,简称实参。

传递实参相当于为形参赋值,调用函数时,传递实参,将实参值应用到函数中进行运算。

传递实参的语法格式如下:

函数名(实参)

如果实参有多个,实参之间用逗号隔开。

语法格式如下:

函数名(实参1, 实参2, ...)
1、在调用函数进行传递参数时,使用的实参要与形参的数量一致

例如:调用求长方体面积的函数area()

代码如下:

def area(a,b,c):return a*b*c
s=area(1,2,3)
print(s)程序的运行结果为:
6

如果调用函数时实参与形参的个数不一致,会报如下错误:

def area(a,b,c):return a*b*c
s=area(1,2,3,4)
print(s)程序的运行结果为:
Traceback (most recent call last):File "C:\Users\wgx58\PycharmProjects\PythonProject1\hello.py", line 3, in <module>s=area(1,2,3,4)
TypeError: area() takes 3 positional arguments but 4 were given
2、在调用函数进行传递参数时,实参与形参的顺序要对应

例如:

def addr(province,city):return province+cityprint(addr("河南省","新乡市"))
print(addr("新乡市","河南省"))#实参的顺序不对程序的运行结果为:
河南省新乡市
新乡市河南省
3、在调用函数进行传递参数时,实参与形参的数据类型要一致

调用函数时,如果实参与形参的数据类型不一致,可能会出现异常。

例如:

def area(a,b):return a*bx=input('请输入长方形的长度:')
y=input('请输入长方形的长度:')
print(area(x,y))程序的运行结果为:
请输入长方形的长度:20
请输入长方形的长度:15
Traceback (most recent call last):File "C:\Users\wgx58\PycharmProjects\PythonProject1\hello.py", line 6, in <module>print(area(x,y))~~~~^^^^^File "C:\Users\wgx58\PycharmProjects\PythonProject1\hello.py", line 2, in areareturn a*b~^~
TypeError: can't multiply sequence by non-int of type 'str'

三、为形参设置默认值

在调用函数时,实参的数量必须和形参的数量一致,否则将抛出异常。为了避免因为实参和形参数量不一致而出现错误,可以在定义函数时,为形参指定默认值。

这样,在调用函数时,如果没有为指定默认值的形参传递实参,则函数会使用形参的默认值,从而避免出错。

为形参设置默认值的语法格式如下:

def 函数名(形参1, 形参2, ... , 形参n=value)说明:
(1)形参n=value:表示为形参n指定默认值为value。
(2)在调用函数时,如果为形参n指定了实参,则把实参的值传递给形参n,如果没有为形参n指定实参,则使用默认值value作为形参n的值。
(3)指定默认值的形参必须放在所有形参的最后。

例如:

def area(a=1, b=1):#为形参a,b指定默认值1return a*bprint(area())  #调用时没有指定实参,在形参a和b的值都为1程序的运行结果为:
1

四、使用参数名称传递实参(关键字参数)

在调用函数时,实参与形参的顺序必须保持一致,否则得到的结果可能和预期的结果不相符。

为了避免因为实参和形参顺序不一致导致的问题,用户可以在调用函数时,使用形参名称传递实参。

语法格式如下:

函数名(形参1=value, 形参2=value, ... , 形参n=value)

例如:

def addr(province,city):return province+cityprint(addr("河南省","新乡市"))
print(addr(city="新乡市",province="河南省"))程序的运行结果为:
河南省新乡市
河南省新乡市

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

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

相关文章

机器学习sklearn:支持向量机svm

概述&#xff1a;现在就只知道这个svm可以画出决策边界&#xff0c;对数据的划分。简单举例就是&#xff1a;好的和坏的数据分开&#xff0c;中间的再验证from sklearn.datasets import make_blobs from sklearn.svm import SVC import matplotlib.pyplot as plt import numpy …

Django ORM 详解:从入门到进阶,掌握数据库操作的核心

在 Django 中&#xff0c;ORM&#xff08;Object Relational Mapping&#xff0c;对象关系映射&#xff09; 是框架的核心之一。它允许你使用 Python 代码来操作数据库&#xff0c;而无需编写原始 SQL 语句。Django ORM 不仅简化了数据库操作&#xff0c;还提升了代码的可读性、…

mac中使用gvm install没有效果

问题表现&#xff1a; mac使用了gvm install一直没有效果&#xff08;添加代理也没效果&#xff09;&#xff0c;效果如下图所示&#xff0c;始终卡在downloading&#xff0c;但是gvm version是正常的解决办法&#xff1a; 手动安装go的版本&#xff08;版本号自行选择&#xf…

【React】状态管理

两个状态管理工具&#xff1a; dva 是一个基于 Redux 和 React Router 的数据流方案&#xff0c;它提供了对 Redux 和 React Router 的封装&#xff0c;使得在使用 dva 时可以更方便地进行状态管理和路由操作。React Redux是一个JavaScript状态管理库&#xff0c;它的核心包括s…

⭐CVPR2025 FreeUV:无真值 3D 人脸纹理重建框架

&#x1f4c4;论文题目&#xff1a;FreeUV: Ground-Truth-Free Realistic Facial UV Texture Recovery via Cross-Assembly Inference Strategy ✍️作者及机构&#xff1a;Xingchao Yang、Takafumi Taketomi、Yuki Endo、Yoshihiro Kanamori&#xff08;CyberAgent、Universit…

Google Chrome <140.0.7297.0 MediaStreamTrackImpl UAF漏洞

【高危】Google Chrome <140.0.7297.0 MediaStreamTrackImpl UAF漏洞 漏洞描述 Google Chrome 是美国谷歌&#xff08;Google&#xff09;公司的一款Web浏览器。 受影响版本中&#xff0c;当处理媒体流时&#xff0c;MediaStreamTrackImpl 组件在销毁前&#xff0c;未能清…

在VSCode中定制C语言宏格式化

在编写C语言代码时,经常会遇到一些宏定义的问题,特别是当使用宏来简化变量声明时。假设你有一个宏定义如下: #define VAR(vartype, memclass) vartype VAR(float32, AUTOMATIC) var1; // 等同于 "float32 var1;"当你使用VSCode的Format Document</

LangChain4J入门:使用SpringBoot-start

这是连续的专栏内容 &#xff08;一&#xff09;提换依赖 将原有的 <!-- LangChain4j OpenAI 集成 --><dependency><groupId>dev.langchain4j</groupId><artifactId>langchain4j-open-ai</artifactId></dependency> 换成 <!…

AR-Align-NN-2024

文章目录An unsupervised multi-view contrastive learning framework with attention-based reranking strategy for entity alignment摘要1. 引言2. 相关工作2.1. 实体对齐2.2 对比学习中的数据增强3. 问题定义4. 方法论4.1 嵌入初始化4.2 图谱数据增强4.3 多视图对比学习4.4…

DeFi借贷协议深度解析:原理与Python实现

目录 DeFi借贷协议深度解析:原理与Python实现 1. DeFi借贷协议概述 2. 核心数学原理 2.1 抵押率计算 2.2 健康因子 2.3 利率模型 3. 协议核心组件 3.1 资金池架构 3.2 状态变量 4. 核心功能实现 4.1 存款功能 4.2 借款功能 4.3 利息计算与更新 5. 清算机制实现 5.1 清算逻辑 5…

信创及一次ORACLE到OB的信创迁移

信创及一次ORACLE到OB的信创迁移 1.信创是什么? 2.银行信创要求:核心目标与挑战 3.一次ORACLE到OceanBase(OB)的信创迁移方案 3.0.目标: 3.1.迁移评估OceanBase Migration Assessment (OMA) 3.2.数据对象迁移 3.3.数据迁移 3.4.OceanBase 导数工具 3.5.调用存储过程跑批 3…

[Python] -进阶理解10- 用 Python 实现简易爬虫框架

网络爬虫是自动抓取网页并提取数据的程序。本篇文章将基于 Python,从请求、解析和数据流控制三个核心模块出发,逐步构建一个简易爬虫框架,并辅以代码示例与扩展建议,适合初学者快速掌握爬虫架构设计。 一、爬虫架构总览 典型爬虫框架包含以下模块流程: Seed URLs:初始化…

oracle备库主机断电重启后IO异常报错

两节点rac adg环境4个实例&#xff0c;节点1异常重启后IO报错 检查控制文件为0字节&#xff0c;第一感觉是不是控制文件损坏了&#xff1f;但节点2说是没有报错&#xff0c;理论上如果控制文件坏了&#xff0c;库应该挂掉了。 尝试重启另外一共adg实例&#xff0c;发现读取其它…

简单线性回归模型原理推导(最小二乘法)和案例解析

线性回归是一种用于建模自变量与因变量之间线性关系的统计方法&#xff0c;核心是通过最小化误差平方和估计模型参数。以下从数学原理推导和案例两方面详细说明。 一、线性回归模型的数学原理推导 1. 模型定义 线性回归假设因变量 y 与自变量 x 存在线性关系&#xff0c;具体…

主成分分析法 PCA 是什么

主成分分析法 PCA 是什么 主成分分析法(Principal Component Analysis,简称PCA)是一种数据降维与特征提取方法,核心思想是通过线性变换将高维数据映射到低维空间,在尽可能保留原始数据“信息量”(即方差)的同时,减少数据维度,消除特征间的相关性。 主成分分析法(PC…

Elasticsearch太重?试试轻量、极速的Meilisearch

在构建现代化的应用时&#xff0c;“搜索”早已不再是锦上添花的功能&#xff0c;而是决定用户留存体验的关键一环。Meilisearch&#xff0c;作为一款专为速度、易用性与开发者体验而生的开源搜索引擎&#xff0c;正受到越来越多开发者的青睐。 本文将介绍 Meilisearch 的核心…

车载通信架构 ---车内通信的汽车网络安全

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…

MySQL: with as与with RECURSIVE如何混合使用?

文章目录一、with用法系列文章二、前言三、MySQL 普通CTE与递归CTE混合使用的严格规则四、解决方案4.1、方法1&#xff1a;嵌套查询4.2、方法2&#xff1a;使用临时表4.3、方法3&#xff1a;分开执行&#xff08;应用层处理&#xff09;本文主要探讨mysql中with普通cte与递归ct…

腕管综合征 : “鼠标手”| “数字时代工伤”,在我国视频终端工作者中患病率达12%到15%。“

文章目录 引言 I 预防“鼠标手” 肌腱的滑动 正中神经的滑动 II “鼠标手”是怎么发生的? 症状 “鼠标手”的高发人群 引言 “鼠标手”发展到晚期会对神经造成不可逆的损伤。 早期刚开始有症状,比如说轻微的麻木,持续的时间也不长,发作频率也不高的情况下,我们可以通过像…

#C语言——刷题攻略:牛客编程入门训练(三):输出格式化、基本运算符

&#x1f31f;菜鸟主页&#xff1a;晨非辰的主页 &#x1f440;学习专栏&#xff1a;《C语言刷题合集》 &#x1f4aa;学习阶段&#xff1a;C语言方向初学者 ⏳名言欣赏&#xff1a;"代码行数决定你的下限&#xff0c;算法思维决定你的上限。" 目录 1. 牛牛的空格分…