Python位置参数、默认参数、可变参数、关键字参数、命名关键字参数、命名位置参数

news/2024/10/17 10:34:42/

前言

    定义一个名为temp的函数,参数列表共4个参数

def temp(first,second="Hello World",*args,**kwargs)print(first)print(second)print(args)print(kwargs)

1、参数first称为位置参数

2、参数second称为默认参数

3、参数*args称为可变参数

4、参数**kwargs也称为可变参数

接下来我们展开讨论这些术语

位置参数

1、位置参数的中文名非常多……以下都是我见过的名称,它们指的都是位置参数,共计8个别称……

a、必选参数

b、必备参数

c、固定参数

d、定位参数

e、选中参数

f、普通参数

g、一般参数

h、常规参数

2、英文名:positional parameter

3、特点:函数的参数列表中定义x个位置参数,函数调用时就必须传入x个参数,参数数量必须保持一致

4、举例说明↓

定义一个temp函数,它包含3个位置参数,调用temp函数时,必须传入3个参数

def temp(first,second,third):print(first)print(second)print(third)

调用temp函数的代码

temp("hi","ni","hao")#等同于temp(first="hi",second="ni",third="hao")#等同于my_str = ("hi","ni","hao")
temp(*my_str)

5、位置参数的使用率:Python代码中最常使用的参数就是位置参数了

接下来学习一下默认参数

默认参数

1、中文别称,同样指的都是默认参数

a、可选参数

b、默认值参数

2、英文名:Default Argument Values或者optional arguments

3、个人理解:将默认参数称为具有默认值的位置参数更为准确,原因请往下继续学习

4、特点:调用函数时可省略参数

5、举例说明:定义一个temp函数,此函数定义了2个默认参数

def temp(first="hi",second="man"):print(first)print(second)

调用包含默认参数的temp函数 

temp() #省略传入所有参数,函数内会使用默认参数的默认值temp("我是你哥") #为第一个默认参数传入值,另一个默认参数继续使用默认值temp("hello","world") #为两个默认参数都传入值temp(first="喜欢你") #指定一个默认参数使用传入值

调用含有默认参数的函数时,传入的参数,会按照从左到右的顺序被默认参数匹配,这就是我认为默认参数的名字称为具有默认值的位置参数的原因!!!

6、重要警告:默认值只能会执行一次(来自官方)

默认值只执行一次。这条规则在默认值为可变对象(列表、字典以及大多数类的实例)时非常重要。

比如,下面的函数会存储在后续调用中传递给它的参数:

def f(a, L=[]):L.append(a)return Lprint(f(1))
print(f(2))
print(f(3))
这将打印出[1]
[1, 2]
[1, 2, 3]如果你不想要在后续调用之间共享默认值,你可以这样写这个函数:
def f(a, L=None):if L is not None:L = []L.append(a)return L

官方建议默认参数尽量使用不可变对象!!

可变参数

1、中文别称,以下都表示可变参数

a、任意参数

b、未知参数

def temp(*args,**kwargs):print(args)print(kwargs)

2、可变参数经常使用的变量名

*参数:最常见的变量名是args,看到该变量名,一眼就知道变量args指向一个tuple对象

**参数:最常见的变量名是kwargs,看到该变量名,一眼就知道变量kwargs指向一个dict对象

3、*args在函数定义中出现时的特点

自动收集所有未匹配位置参数到一个tuple对象中,变量名args指向了此tuple对象

4、**kwargs在函数定义出现时的特点

自动收集所有未匹配关键字参数到一个dict对象中,变量名kwargs指向了此dict对象

---->可变参数的详细解读请看这篇--->点我

关键字参数

1、函数调用时,指定参数名称,称为关键字参数(别和默认参数混淆,这里是函数调用)

def temp(a,b,c):print(a)print(b)print(c)temp(1,3,c=99)temp(a=1,b=2,c=3)temp(1,b=2,c=100)

2、顺序要求:函数调用时,关键字参数必须在普通参数的后面

temp(100,b=200,c=300)temp(a=100,32,100) #错误语法,关键字参数不能在普通参数的前面

3、使用字典解包方式传入关键字参数

hi = {"a":100,"b":99,"c":1000}
temp(**hi)#等同于#temp(a=100,b=99,c=1000)

4、函数调用时,当剩余的参数全部为关键字参数时,可随意定义顺序

当全部为关键字参数时,调用函数时的参数顺序可随意书写,因为你指定了参数名,但是参数的数量不能少于函数定义时要求的位置参数的数量

temp(c=100,b=38,a=10)

命名关键字参数

1、英文名:Keyword-only parameter

2、特点:必须使用关键字方式传递参数

3、语法

def only_kw(a,*,b,c)print(a)print(b)print(c)only_kw(100,b=1000,c=99) #b和c必须使用参数名传递参数

命名位置参数

def only_position(a,b,/)print(a)print(b)

函数调用时,必须使用位置参数方式传递参数……,不能再使用关键字参数调用该函数

思考:函数调用时的实际参数有哪些?

    函数调用时,只会包括两种实际参数(元组解包对应于普通参数、字典解包对应于关键字参数)

1、普通参数

2、关键字参数

总结

1、希望这篇文章能为所有Python爱好者带来帮助

2、同时我也会不断的巩固自己的知识,一起奋斗吧


http://www.ppmy.cn/news/214555.html

相关文章

Python函数的参数类型(位置参数、关键字参数、默认值参数、不定长参数)

文章目录 函数入门一、形参和实参二、参数类型三、从实参的角度看1.位置参数(必需参数)1.1 无返回值1.2 有返回值 2.关键字参数3.混合参数(位置参数关键字参数) 四、从形参的角度看1.位置参数1.1 无返回值1.2 有返回值 2.默认值参数(缺省参数)3.动态参数…

python3 形式参数、实际参数、位置参数、关键字参数、不定长参数、参数默认值

形式参数:函数定义时用到的参数 实际参数:调用函数时用到的值 1. 位置参数 不属于关键字参数或者带有“*”的元组包含的值 调用时需要按照参数的位置依次传入 def testWords(a, b):print(a{},b{}.format(a, b))testWords(2, 3) # a2,b3testWords(3, 2…

MT8163V/A,MT8163V/B芯片组参数比较

MT8163芯片组特征比较: MT8163系统平台框图 MT8163平台框图 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31529038/viewspace-2216188/,如需转载,请注明出处,否则将追究法律责任。 转载于:http:…

MT8732 / MT8735处理器特点/芯片组型号资料介绍

MT8732 / MT8735平台特征比较: MT8732 MT8735 Process 28nm 28nm CPU …

CPU的参数和配置

CPU的参数和配置 cpu有许多参数和型号, 还带有不同的字母, 这让我这个硬件小白很懵??? 然后百度了许多, 对市面上的cpu的做了一个统计和学习, 这里整理了一些笔记给大家参考. Intel AMD Intel 赛扬 : 民用中低端市场 奔腾 : 民用中低端市场 志强 : 服务器和工作站 酷睿 …

MT8735处理器基本资料简介

MT8735处理器: MTK MT8735是一款高度集成的LTE片上系统(SoC),它包含了先进的功能,例如LTE cat.4、Octa HMP内核在1.3GHz下工作、3D图形(opengl x es3.0)、13mp摄像机等。LPDDR3-640 Mbps,WXGA显示器和1080 p视频编解码器。MT8735帮助平板电脑制造商开发高性能的LTE智能设备…

MT8312处理器参数/芯片资料

MT8312处理器 MT8312是联发科推出的双核处理器,是专门为平板产品设计。CPU采用Cortex-A7四核架构,GPU为Mali-400MP,ARMv7L指令集,运行频率是1.3GHz,频率范围是598—1331MHz;GPU为为Mali-400MP,主频为533MHz…

mt8783 android 编译,联发科MT8783怎么样 MT8783参数介绍

联发科MT8783怎么样,好用吗?联发科技 MT8783 这款高度整合式 LTE 系统单芯片 (SoC) 囊括了各项先进的功能特色,例如 LTE cat.4、以 1.3GHz 速度运行的八核心处理器、3D 图像技术 (OpenGL|ES 3.0)、1600 万像素镜头影像信号处理器 (ISP)、LPDD…