详解python函数的参数

标签: 自动化测试  python  开发语言  自动化  测试工程师

一、参数的定义

1、函数的参数在哪里定义

在python函数中,函数名后面括号里面的就是用来定义参数的。如果有多个参数,就用逗号进行隔开。

案例:

2、带参数的函数调用:

函数定义了参数,那么调用函数的时候就需要传入参数

上面的案列中,我们定义函数的时候在函数名后面的括号里定义的参数叫做形参

而我们调用函数的时候传入的参数叫做实参形参是用来接收实参的

二、参数分类

形参和实参在定义和调用的时候,根据形式不同可以分为几类

1、实参:位置参数、关键字参数

1.1、位置参数(未命名参数)

def func(a,b,c):
    print(a)
    print(b)
    print(c)

func(11,22,33)
# 定义函数的形参是按位置来接受传入的实参,我们把这样的传参形式叫做位置参数

1.2、关键字参数(命名参数)

def func(a,b,c):
    print(a)
    print(b)
    print(c)

func(11,c=22,b=33)

# 调用函数的时候,实参通过参数名指定传给某个形参,这样的传参形式,我们叫做关键字参数
# 注意:传参的时候先写位置参数,再写命名参数

2、形参:必备参数、默认参数、不定长参数

2.1、必备参数

在调用函数的时候必须要传的参数

def add(a,b):
    c=a+b
    print(c)
   
add(11,22)

上面函数中的a,b就是必备参数,在调用的函数的时候必须要传,不然就会报错

2.2、默认参数

调用函数的时候可传可不传的参数,不传就用默认值

def func(a,b,c=88):
    print(a)
    print(b)
    print(c)
func(1,2,3)
print("{:-^30}".format('区别'))
func(1,2)

'''
运行结果:
1
2
3
--------------区别--------------
1
2
88
'''

通过上述案列中我们可以发现,第一次调用的时候,我们传入了三个参数,c打印出来的是我们传入的值,第二次只传入了两个参数,这个时候c打印出来的是我们定义的时候给它设置的默认值
注意:带有默认值的参数一定要位于参数列表的最后面。

2.3 不定长参数*args和 **kwargs

调用函数的时候可以传0个或者多个

2.3.1、*args:接受多传入的位置参数、以元组的形式保存

def func(*args):
    print(args)

func(1,2,3,4)
func(*(1,2,3,4))
func(*[1,2,3,4])

*args,args接收的是一个元祖;

调用的时候可以直接传入:func(11,22,33,44,55,66,77)

也可以可以先组装list或tuple,再通过*拆包传入:func(*(11,22,33,44,55,66,77))

2.3.2、**kwargs:接收多传入的关键字参数,以字典的形式保存

def func(**kwargs):
    print(kwargs)

func(a=1,b=2,c=3)
func(**{"a":1,"b":2,"c":3})
def func(a,*args,**kwargs):
    print(f"{a}")
    print(f"{args}")
    print(f"{kwargs}")
func(1,2,3,4,f=6)

**kwargs,kw接收的是一个字典;

关键字参数既可以直接传入:func(e=33,h=44,f=55,d=66,c=77)

也可以先组装dict,再通过**kw传入:func(**{'e':33,'h':44,'d':66,'c':77})

**注意点:**使用*args**kwargs是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。

版权声明:本文为qq_49624649原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_49624649/article/details/126364716

智能推荐

Python 里 调用函数 定义函数 函数的参数

1、调用函数 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs 当你输入 abs(a /1,2 )这些时 会报错 因为abs只能有一个参数 而max函数max()可以接收任意多个参数,并返回最大的那个 定义函数 在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。 注意这个re...

新发的日常小实验——使用IETester测试不同IE版本的浏览器,测试网页JS的兼容性(console未定义兼容测试)

文章目录 一、痛点:IE兼容测试 二、关于IETester 三、IETester下载 四、写个html测试js的console接口 五、测试结果 六、js兼容处理 一、痛点:IE兼容测试 之前使用.Net的Winform桌面应用框架做了一个PC版的迷你浏览器(使用IE内核),方便拉起网页支付。 有用户反馈打开支付页面报了如下的错:“console”未定义 到底是多么老旧的I...

linux下搭建nginx及配置

文章目录 下载nginx 解压nginx资源包 准备编译环境 安装编译 查找安装路径并启动nginx 浏览器访问 下载nginx 下载地址:https://nginx.org/en/download.html 这里用的是nginx-1.16.1版本 解压nginx资源包 准备编译环境 安装编译 查找安装路径并启动nginx 浏览器访问 http://IP...

腾讯云+tipask快速搭建基于laravel的CMS网站

一、购买腾讯云服务器,服务市场->基础环境->选择WordPress平台镜像 二、按照tipask教程安装 tipask官方教程地址https://wenda.tipask.com/article/22 官方教程对新手不太友好,我整理如下: 1.ftp上传文件 云服务器镜像装载完毕后,浏览器访问服务器公网ip,点击获取权限后会下载服务器相关的文件 浏览器访问host url,根据所给的...

猜你喜欢

ElasticSearch入门教程

什么是ElasticSearch 基于Apache Lucene构建的开源搜索引擎 采用Java编写,提供简单易用的RESTFul API 轻松的横向扩展,可支持BP级的结构化和非结构化的数据处理 可应用场景 海量数据分析引擎 站内搜索引擎 数据仓库 一线公司实际应用场景 英国卫报 - 实时分析公众对文章的回应 维基百科、GitHub-站内实时搜索 百度 - 实时日志监控平台 安装 Windows...

小程序明明已经分包了,为啥没有大小没有变???

为什么要分包 真机预览时出现大于2M,无法预览。 对项目进行规整划分 如何分包 实际操作 先将需要分包的文件拷贝到小程序根目录下 在app.json中配置分包结构(如图) 修改被分包中的引用路径,如图片资源、导航URL 可以设置分包的在哪个页面加载 图中表示在进入login页面进行下载设置的分包,all表示在所有网络下。 失败解决!分包了为啥还是提示大小超过2M 分包的文件内所引用的外部文件也必须...

js pixi框架 极其详细到位(入门)-----转载

pixi是一个js 的轻量级的游戏类库框架,很适用于做H5的一些canvas动画特效。 这篇文章是关于pixi的入门教程 ,里面的讲解非常的到位细致,是我看到过的文章里讲解的算是最好的了。  去年快过年看的教程 ,今天再想看的时候发现没找到,不过经过不懈的搜索还是找到 ,那就赶紧给转过来吧。   pixi(入门) Pixi教程 基于官方教程翻译;水平有限,如有错误欢迎提PR,转...

sklearn支持向量机(SVM)多分类问题

模型 sklearn.svm中的支持向量机: Classify:SVC、nuSVC、LinearSVC Regression:SVR、nuSVR、LinearSVR OneClassSVM 本文采用Classify系列,classify三个模型的区别;参数详解 预处理 建模 训练 多种SVC、核函数对比 对比的结果: 优化linear核函数的SVC的惩罚系数 惩罚系数(C=)越高,对错误分类的惩罚...

第一阶段:CSS初步探讨

传统盒子和怪异盒子的初接触 作为一个小白,第一次碰到这种盒子,总算能对盒子变形有一点粗浅认识了,不多说,直接上代码观察 传统盒子的宽高等于内容区域的宽高,如果padding改变则会导致整个盒子变形,撑开来,如box1和box1-1所示 怪异盒子的宽高=内容的宽高+padding2+border2,所以改变padding时不会改变整个盒子的大小,不会变形...


http://www.vxiaotou.com