第55讲:Python函数形参、实参的语法格式汇总以及应用小案例

news2024/11/24 12:57:05

文章目录

    • 1.Python函数中各种参数的汇总
      • 1.1.常规参数
      • 1.2.参数设置默认值
      • 1.3.强制传参时使用关键字传参
      • 1.4.个数可变的形参
      • 1.5.将序列中的每个元素都转换为位置实参
      • 1.6.将字典中的每个元素都转换为关键字实参
    • 2.小案例练习Python中的各种函数参数
      • 2.1.案例一
      • 2.2.案例二

1.Python函数中各种参数的汇总

1.1.常规参数

常规参数也是必须指定的参数,如果不指定位置形参或者关键字形参,那么函数的功能就太单一了,只能做一件事。

1)位置形参

在定义函数时设置几个形参,然后调用时传入位置实参。

def pos_trans(pos1, pos2, pos3):
    posformat = 'pos1 = {}, pos2 = {}, pos3= {}'
    print(posformat.format(pos1, pos2, pos3))

pos_trans('jiangxl', 'K8S', 'Python')

2)关键字形参

在定义函数时还是设置几个形参,只是调用函数时传参的方式不同。

def para_trans(para1, para2, para3):
    paraformat = 'para1 = {}, para2 = {}, para3= {}'
    print(paraformat.format(para1.capitalize(), para2.capitalize(), para3.capitalize()))

para_trans(para1 = 'jiangxl', para2 = 'k8s', para3 = 'python' )

1.2.参数设置默认值

可以在定义函数时,为某个形参设置默认值,即使不给这个形参传入实参,也不会抛出异常,而是使用默认值,一般情况下,变动小的形参会为其设置一个默认值。

def fun1(para1, para2 = 'k8s'):
    funformat = 'para1为:{}, para2为:{}'
    print(funformat.format(para1, para2))

fun1('haha')

1.3.强制传参时使用关键字传参

在定义函数时使用*可以定义一个关键字形参,调用函数时就必须使用关键字传参的方式传递实参。

def fun1(para1, para2, *, para3, para4):
    funformat = 'para1为:{}, para2为:{}, para4为:{}, para5为:{}'
    print(funformat.format(para1, para2, para3, para4))

fun1('k8s', 'istio', para3 = 'helm',  para4 = 'rancher')

1.4.个数可变的形参

在函数定义时,形参前面添加一个*表示定义一个个数可变的位置形参,添加两个*表示定义一个个数可变的关键字形参。

1)个数可变的位置形参

def fun1(*args):
    print(args)

fun1(1)
fun1(1, 2)
fun1('jiangxl', 1, 2)

2)个数可变的关键字形参

def fun1(**kwargs):
    funformat = 'kwargs:{}'
    print(funformat.format(kwargs))

fun1()
fun1(user = 'jiangxl')
fun1(user = 'jiangxl', age = 26, passwd = '1234567')

1.5.将序列中的每个元素都转换为位置实参

在调用函数时,如果传入的参数是序列,并且希望将序列中的每个元素都转换为独立的位置实参,那么就在序列前添加一个*号。

def fun1(para1, para2, para3):
    funformat = 'para1为:{}, para2为:{}, para3为:{}'
    print(funformat.format(para1, para2, para3))

mylist = ['jiangxl', 'wangwu', 'zhangsan']    
fun1(*mylist)

1.6.将字典中的每个元素都转换为关键字实参

在调用函数时,如果传入的参数是字典,并且希望将字典中的每个元素都转换为独立的关键字实参,那么就在序列前添加两个*号。

def fun2(**kwargs):
    funformat = 'kwargs:{}'
    print(funformat.format(kwargs))

mydict = {'user': 'jiangxl', 'age': '26', 'passwd': '123456'}
fun2(**mydict)

2.小案例练习Python中的各种函数参数

2.1.案例一

在下面这个函数中,运用到了位置实参、默认值、个数可变的位置形参、个数可变的关键字形参。

def fun1(para1, para2='default', *args, **kwargs):
    funformat = 'para1为:{}, para2为:{}, args为:{}, kwargs为:{}'
    print(funformat.format(para1, para2, args, kwargs))

fun1('jiangxl', 'Python', 1, 2, 3, 4, 5, user='wanger', passwd='123456')
fun1('jiangxl', 'Python', *[1, 2, 3, 4, 5], **{'user': 'wanger', 'passwd': '123456'})

我们来分析传参的结果:

  • 首先jiangxl会传给para1形参。

  • para2形参定义了默认值,但是我们没有用,Python会传给para2形参

  • *args是个数可变的位置形参,可以接收0到多个位置实参,1, 2, 3, 4, 5这几个实参会传给args形参。

  • **kwargs是个数可变的关键字形参,可以接收0到多个关键字实参,user = ‘wanger’, passwd = '123456’会穿个kwargs形参。

image-20220822164517507

其中*[1, 2, 3, 4, 5]等同于1, 2, 3, 4, 5**{'user': 'wanger', 'passwd': '123456'}等同于user = 'wanger', passwd = '123456'因此调用函数时传参方法虽然看不同,但是返回值是一样的。

image-20220822163537881

如果调用函数时,只传入一个实参,那么这个实参就会传给para1实参,para2形参则会用指定的默认值作为实参,agrs则会返回一个空元组,kwargs则会返回一个空字典。

fun1(1)

#输出结果:para1为:1, para2为:default, args为:(), kwargs为:{}

2.2.案例二

在下面这个函数中,运用到了位置实参、默认值、强制使用关键字传参、个数可变的关键字形参。

def fun2(para1, para2='default', *, para3, **kwargs):
    funformat = 'para1为:{}, para2为:{}, para3为:{}, kwargs为:{}'
    print(funformat.format(para1, para2, para3, kwargs))

fun2(*('jiangxl', 'Python'), **{'para3': 'haha', 'user': 'wanger', 'passwd': '123456'})

我们来分析传参的结果:

  • 第一个参数*('jiangxl', 'Python'),这里利用*将序列中的元素转换成了位置实参,然后分别传给了para1形参和para2形参,para2形参设置了默认值,会覆盖掉其默认值。
  • 第二个参数**{'para3': 'haha', 'user': 'wanger', 'passwd': '123456'},这里利用两个*将字典中的键值对元素转换成了独立的关键字实参,分别传入函数中对于的形参中,第一组键值对'para3': 'haha'就会转换成para3 = haha,从而传递给para3实参,其余剩下的键值对会传给**kwargs个数可变的关键字形参。

image-20220822165716590

如果仅传入一个位置实参,后续全用关键字实参的话,para2形参将会使用默认值,因为第一个位置实参传递给了para1形参,后面全是关键字实参了,第一个关键字实参传递给para3,其余的关键字实参传递给kwargs形参。

fun2('jiangxl', **{'para3': 'haha', 'user': 'wanger', 'passwd': '123456'})

image-20220822165921591

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

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

相关文章

React-reacte-app项目实现antD按需加载(2023)

出现的问题: 项目打包后,由于引入了antD,所以打包后的mani.js体积会非常大。相当于引入了全部的antD的代码。所以可以做一个优化:通过script标签引入antD,将其挂载在window上。使用antD组件的使用,直接从w…

2.矢量分析

目录 一.标量函数和矢量函数 二.矢端曲线 三.矢量函数导数和微分 1.导数 2.导数的几何意义 3.微分 4.矢量导数性质 5.例题 四.矢量导数的应用 1.几何应用 1.曲线的切线和法平面 2.曲面的法线和法平面 2.物理应用 3.两大典型问题 五.矢量函数的积分 如果第一章我…

WOT全球技术创新大会开幕倒计时——好内容才是永远的底气

距离6月16日-17日召开的WOT全球技术创新大会还有半个月时间,所有讲师、议题均已就位。本届WOT不仅囊括2023年最火的技术——AIGC、大模型、大算力,也有被技术人永恒关注的热点话题——多云实践、业务架构演进、效能提升。 筹备数月之久,50来…

Intel® 以太网800 系列网络适配器 – DPDK上的性能演进

1. 介绍 Intel以太网800系列网络适配器提供卓越的性能,以满足各种工作负载的要求。800系列提供了数据包分类和排序优化、硬件增强的定时能力以及完全可编程的流水线。Intel的以太网产品组合始终提供可靠的体验和经过验证的互操作性。 在DPDK中,ICE轮询模…

CDN控制平台操作指引之账号注册及添加域名

一、注册账户及登录 (一)请确认您已经注册了火伞云账号并完成账号实名认证。如果未注册,请先完成账号注册和实名认证。 (二)登录火伞云融合CDN管理平台。 二、添加加速域名 使用火伞云融合CDN加速指定网站&#xff…

NodeJs之Ajax技术

1. 初识Ajax ./public/Ajax.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&qu…

ArcGIS Pro地图和场景

目录 1 地图和场景 1.1 地图 1.2 场景 2 图层 2.1 图层类型 2.1.1 要素图层&#xff08;Feature layers&#xff09; 2.1.2 栅格图层&#xff08;Raster layers&#xff09; 2.1.3 场景图层&#xff08;Scene layers&#xff09; 2.1.4 服务图层&#xff08;Service la…

机器视觉怎么对陶瓷板的外观尺寸进行自动检测?

随着工业自动化的不断发展&#xff0c;机器视觉技术在制造业中的应用越来越广泛。在陶瓷板行业中&#xff0c;机器视觉技术可以用于自动检测陶瓷板的外观尺寸&#xff0c;提高生产效率和产品质量。下面我们来介绍机器视觉如何对陶瓷板的外观尺寸进行自动检测。 一、检测原理 …

第2关:socket编程

第2关&#xff1a;socket编程 任务描述相关知识1、Socket2、socket函数3、bind函数4、listen、connetct函数5、accept函数6、read、write函数7、close、shutdown函数8、三次握手9、数据传输10、四次挥手 编程要求及注意事项测试说明参考代码 任务描述 本关任务&#xff1a; 编…

轻松掌握,板对板连接器选型指南

一、什么是板对板连接器&#xff1f; 板对板连接器(简称BTB)&#xff0c;是精密电路中电源和信号耦合连接必不可少的器件。随着产品复杂度和电路设计规模的不断提升&#xff0c;板对板连接器也沿着市场需求向着高速率&#xff0c;高功率密度&#xff0c;轻薄化几个方向发展。 …

chatgpt赋能python:为什么Python不适合做SEO?——解析

为什么Python不适合做SEO&#xff1f;——解析 Python作为一种非常方便的编程语言&#xff0c;在数据处理、人工智能等方面有着广泛的应用。然而&#xff0c;在SEO领域&#xff0c;Python似乎并不受欢迎。本文将从Python不适用于SEO的几个方面做出详细的介绍&#xff0c;并为读…

WPF .Net6中使用Prism

.NET 6 是微软长期支持&#xff0c;并在移动、桌面、IoT 和云应用之间统一了 SDK、基础库和运行时。 Prism为程序设计提供指导,旨在帮助用户更加容易的设计和构建丰富、灵活、易于维护WPF桌面应用程序。Prism使用设计模式&#xff08;如MVVM,复合视图,事件聚合器&#xff09;…

02 【el和data的两种写法 MVVM模型】

02 【el和data的两种写法 MVVM模型】 1.el和data的两种写法 el有2种写法 创建Vue实例对象的时候配置el属性 先创建Vue实例&#xff0c;随后再通过vm.$mount(‘#root’)指定el的值 data有2种写法 对象式&#xff1a;data&#xff1a; { }函数式&#xff1a;data() { retur…

国产给力啊啊啊----国产MCU-CW32F030开发学习

国产MCU-CW32F030开发学习 1. 相关资料下载 1.1 武汉芯源半导体 武汉芯源半导体官网 武汉芯源半导体 武汉芯源 21ic 电子论坛 21ic 电子论坛 1.2 CW32F030系列资料 CW32F030技术文档 • 内核&#xff1a;ARM Cortex-M0 – 最高主频64MHz • 工作温度&#xff1a;-40℃ 至…

Java Number Math character类

文章目录 一、Java Number& Math 类1、Java Math 类2、Number & Math 类方法3、Math 的 floor,round 和 ceil 方法实例比较 二、Java Character 类1、转义序列2、character 方法 总结 一、Java Number& Math 类 一般地&#xff0c;当需要使用数字的时候&#xff0…

掌握海外新闻发布技巧,媒介易助你在全球获得曝光

​海外新闻稿发布平台是企业在拓展海外市场、增加品牌曝光度和提升知名度方面非常重要的工具。本文将介绍海外新闻稿发布平台的作用和建议&#xff0c;并提供一些建议&#xff0c;帮助企业更好地利用海外新闻稿发布平台进行营销推广。 一、海外新闻稿发布平台的作用 海外新闻稿…

chatgpt赋能python:Python人脸验证:简介与应用

Python人脸验证&#xff1a;简介与应用 Python作为一种强大的脚本语言&#xff0c;正变得越来越流行。它是一种易于学习和使用的语言&#xff0c;不仅在科学计算领域有很大的用武之地&#xff0c;而且在机器学习和人工智能领域也变得越来越流行。本文将重点介绍Python在人脸验…

通过 Gorilla 入门机器学习

机器学习是一种人工智能领域的技术和方法&#xff0c;旨在让计算机系统能够从数据中学习和改进&#xff0c;而无需显式地进行编程。它涉及构建和训练模型&#xff0c;使其能够自动从数据中提取规律、进行预测或做出决策。 我对于机器学习这方面的了解可以说是一片空白&#xf…

电商API分享:获取淘宝商品历史价格api调用示例 参数说明

在网络购物中&#xff0c;TAO宝是相信许多人的首选平台之一&#xff0c;而对于一个谨慎的购物者来说&#xff0c;价格的变化是非常重要的。所以获取淘宝商品历史价格&#xff0c;可以帮助购物者更好地作出决策&#xff0c;实现理性消费。获取淘宝商品历史价格主要能帮助到我们做…

PLC信号发生器(SCL+梯形图)

信号发生器的应用请参看下面的博客文章,在演示滤波器的作用时,我们可能也会用到信号的叠加等。 博途PLC滤波指令 Filter_PT1、Filter_PT2、Filter_DT1详细使用说明(含Simulink+博途PLC仿真)_RXXW_Dor的博客-CSDN博客博途S7-1200/1500PLC的PID控制和详细使用说明,请参看下…