python的函数参数你了解吗
作者:lishuaigell 发布时间:2021-11-08 16:15:59
前言
python参数类型和参数传递形式多样,相对于其他语言python使用会更加灵活。它传参形式一般分为两种:位置传参,关键字传参。传参形式是相对于实参而言,在函数调用时使用。参数类型一般也分为两种:默认参数,不定长参数。参数类型是相对形参而言,在函数创建时定义。
位置传参
位置传参,我们经常使用的一种函数传参形式,它根据实参的位置传递给对应位置的形式参数。在与其他传参形式混合使用时,必须优先输入位置参数。
def func(a, b, c):
print(a, b, c)
# 位置参数
if __name__ == '__main__':
func(1, 6, 7) # 打印结果是1 6 7 位置一一对应
func(6, 1, 7) # 打印结果是6 1 7
# func(6, 1) # 实参与形参数量必须一致
# func(6, 1, 7, 9) # 不能多也不能少
关键字传参
关键字传参,根据形式参数的名字来进行对应的赋值。
def func(a, b, c):
print(a, b, c)
# 关键字参数
if __name__ == '__main__':
func(1, b=6, c=7) # 打印结果是1 6 7
func(c=3, b=1, a=7) # 打印结果是7 1 3
# func(c=2, b=3) # 不能少赋值
# func(c=2, b=3,a=6,c=5) # 不能多赋值
# func(c=2, b=3,a=5,qq=3) # 也不能无关赋值
# func(1, b=6, 7) # 与位置传参混合使用时,必须位置参数在前,而且不能交替使用
默认参数
默认参数,就是形参会有个默认值,如果有新值传入就使用新值,否则使用默认值。形参使用默认参数时同样需要注意位置,必须写在位置参数后面(其实不能叫位置参数,但是为了理解就把没有赋值的普通形参叫做位置参数),否则会报错。如下方ab必须写在c后面。
# 默认参数必须要写在右侧
def func(a, b=5, c=3):
print(a, b, c)
# 默认参数
if __name__ == '__main__':
func(1) # 打印的结果是 1 5 3
func(1, 6) # 打印的结果是 1 6 3
func(1, 2, 7) # 打印结果是1 2 7
func(b=1, a=4) # 打印结果是4 1 3
不定长参数
不定长参数有两种表现形式。
在形参前面加个*(*args),表示不定长元组形参,可以接收所有通过位置传参进来的实参,将其存入元组里面。
在形参前面加两个*(**kwargs),表示不定长字典形参,可以接收所有通过关键字传参进来的实参,将其存入字典里面。
# 不定长参数
def func(*args, **kwargs):
print(args)
print(kwargs)
if __name__ == '__main__':
func(1, 4, 8, 7, a=5, h=6, l=15) # 注意实参形参顺序要对应
结果
(1, 4, 8, 7) # 元组
{'a': 5, 'h': 6, 'l': 15} # 字典
混合使用问题
创建时
def func1(a, b=5, *args, c=7, **kwargs):
print(a, b, args, c, kwargs)
我们先给它们一个称呼方便引用。就称a为普通参数,b为默认参数,*args为可变参数(因为它能接收多个实参),**kwargs为可变关键字参数(因为它能接收多个通过关键字传参进来的实参)。
普通参数必须写在最前面(写在其他类型参数前面)
可变关键字参数必须写在最后面(写在其他参数类型后面)
可变参数与可变关键字参数只能出现一次。
引用时
位置传参必须写在关键字参数前面,他们俩不能交替使用。关键字传参什么时候出现合适?出现在可变参数之后,相当于终止条件。
def func1(a, b=5, *args, c=7, **kwargs):
print(a, b, args, c, kwargs, sep='\n')
if __name__ == '__main__':
func1(5, 6, 8, 7, 1, 5, 6, 8, c=4, r=2, s=3)
结果为
5
6
(8, 7, 1, 5, 6, 8)
4
{'r': 2, 's': 3}
来源:https://blog.csdn.net/lishuaigell/article/details/122663663
猜你喜欢
- 一、argparse简介argparse 是 python 自带的命令行参数解析包,可以用来方便的服务命令行参数,使用之前需要先导入包 im
- 首先我的环境已配置好:GO的目录结构是:add.gopackage calc//函数名必须大写首字母,不然外部包找不到func Add(a
- 经过上一章的内容,其实就页面层来说已结可以很轻松的实现功能了,但是很明显美观上还有很大的欠缺,现在有一些很好的前端css框架,如AmazeU
- 程序流Python 解释器在其最简单的级别,以类似的方式操作,即从程序的顶端开始,然后一行一行地顺序执行程序语句。例如,清单 1 展示了几个
- golang的单引号转义如题,golang中有时候需要将一个字符串中的单引号再转义一次,比如在两个单引号之间包含一个含有单引号的字符串的情形
- 看了好多登录注册和注销的教程,很乱,很迷,然后总结了一下,简单的做了一个登录,注册和注销的页面。1,首先,使用pycharm创建一个项目单击
- 延时摄影(英语:Time-lapse photography)是以一种较低的帧率拍 下图像或者视频,然后用正常或者较快的速率播放画面的摄影技
- 本文实例讲述了Python遍历指定文件及文件夹的方法。分享给大家供大家参考。具体如下:初次编写:import osdef searchdir
- 最近接触了一些selenium模块的相关知识,觉得还挺有意思的,于是决定亲自尝试写一些爬虫程序来强化selenium模块(一定要多尝试、多动
- 最近准备做一个关于scrapy框架的实战,爬取腾讯社招信息并存储,这篇博客记录一下创建项目的步骤pycharm是无法创建一个scrapy项目
- 进入sqlplus SQL> set timing on SQL> SQL> select count(*) from c
- 基于邮件通知的服务监控和告警系统主要功能点:配置专用日志格式记录耗时日志格式:'simple':{'format
- 一、Ajax简介Ajax被认为是(Asynchronous JavaScript and XML)的缩写,允许浏览器与服务器通信而无需刷新当
- k-means算法思想较简单,说的通俗易懂点就是物以类聚,花了一点时间在python中实现k-means算法,k-means算法有本身的缺点
- 通常程序会被编写为一个顺序执行并完成一个独立任务的代码。如果没有特别的需求,最好总是这样写代码,因为这种类型的程序通常很容易写,也很容易维护
- python中查找指定的字符串的方法如下:code#查询def selStr(): sStr1 = 'jsjtt.com
- 概述我在教学和实际设计中的一些心得。就不长篇大论了!让大家省些时间,捞干的。尽量通俗易懂。想知道怎样设计标志,就要知道什么是标志?标志:外来
- string模块可以追溯到早期版本的Python。以前在本模块中实现的许多功能已经转移到str物品。这个string模块保留了几个有用的常量
- 引入Gridgrid=Grid() # 可以分别调整上下左右的位置,可以是百分比,也可以是具体像素,如pos_top="50px&
- 一、基本使用selenium 的基本使用步骤:打开浏览器;获取浏览器页面的特定内容;控制浏览器页面上的控件,如向一个文本框中输入一个字符串;