python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)

时间:2021-10-04 10:02:16

默认参数:定义函数的时候给定变量一个默认值。  def num(age=1):

位置参数:调用函数的时候根据定义函数时的形参位置和实参位置进行引用。

关键字参数:如果定义的函数中含有关键字参数,调用函数时必须要传如该关键字对应的实参。

不定长参数:在定义函数的时候不确定传入的参数的数量(可能是0个或多个)  def num(*args,**args):  (不定长参数的标志符号是*和**,args和kwargs只是变量的名字,可以改为任意的变量如(*num,**kwnum))

  *+变量名1,可以接受被其他参数接受后剩下的任意的形参(不包括赋值语句),放进一个元组里,这个元组的名字是前面的变量名1(所以位置参数必须在此参数之前)

  **+变量名2,可以接受被其他参数接受后剩下的任意赋值语句,放进一个字典中,这个字典的名字是前面的变量名2(所以关键字参数和默认参数必须在此参数之前,*+变量名也要在此参数之前)

测试上面的总结是否正确

def num_0(a,b,c,*args,city='beijing',name,**kwnum):
print(a,b,c,name,city,args,kwnum) # 输出的时候直接用*或者** 的变量名
num_0(1,2,3,4,5,6,7,city='hangzhou',name='jack',age=18,country='haidian')
#结果
D:\pycharm_project\装饰器\venv\Scripts\python.exe D:/pycharm_project/装饰器/venv/text.py
1 2 3 jack hangzhou (4, 5, 6, 7) {'age': 18, 'country': 'haidian'} Process finished with exit code 0

最后总结

调用函数传递实参的时候,先传变量/定量,再传赋值语句(num_0(1,2,3,4,5,6,7,city='hangzhou',name='jack',age=18,country='haidian'))

定义函数的时候直接按此顺序定义形参(def num_0(a,b,c,*args,city='beijing',name,**kwnum):)(位置参数,*变量名,默认参数,关键字参数,**变量名)

接下来讨论一下不定长参数中的 * 和 ** 还有什么用处

1,当在函数的形参中使用时(和上面的例子相同)
*t:将所有的其他位置的实参(变量/定量)获取,并将它们打包到元祖中,并赋值给此形参

def foo(*t):
print(t)
foo(1,2,3)
(1,2,3)

**t:将所有的其他位置的实参(赋值语句)获取,并将它们打包到字典中,并赋值给此参数

def foo(**t):
print(t)
foo(a=1,b=2)
{'x': 1, 'y': 2}

2,当在调用函数的时候使用(实参中)
*tuple_a:将此元祖的元素,当做函数调用的位置参数

def foo(a,b):
print(a,b)
tuple_a = (1,2)
foo(*tuple_a)
1,2

**dict_a:将字典中的键值对,当做函数调用的关键字参数

def foo(x, y):
print(x, y)
dict_a = {'x':1, 'y':2}
foo(**dict_a)
1,2

3,在匹配和for循环中
*x意味着‘匹配多余的元素’,x是一个列表

>>>x, *xs = (1, 2, 3, 4)
>>>xs
[2, 3, 4]
>>>x, *xs = [1, 2, 3, 4]
>>>xs
[2, 3, 4] >>> *xs, x = (, , , )
>>> xs
[, , ]
>>> x >>> x, *xs, y = (, , , )
>>> x
1
>>> xs
[, ]
>>> y
for (x, *y, z) in [ (1, 2, 3, 4) ]: print(x, y, z)
1 [2, 3] 4

4,可以用于合并字典

dict_a = {'a':1,'b':2}
dict_b = {'b':3,'c':4} dict_c = {**dict_a,**dict_b}
print(dict_c)
{'a': 1, 'b': 3, 'c': 4}
*t 表示“获取此函数的所有其他位置参数,并将它们作为元组打包到此参数中

python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)的更多相关文章

  1. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  2. Python函数中参数类型

    在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...

  3. Python 函数中,参数是传值,还是传引用?

    在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在Python中参数是如何传递的?回答这个问题前,不如先来看两段代码. 代码段1: def foo(arg): arg = 2 print(a ...

  4. python函数中把列表(list)当参数时的"入坑"与"出坑"

    在Python函数中,传递的参数如果默认有一个为 列表(list),那么就要注意了,此处有坑!! 入坑 def f(x,li=[]): for i in range(x): li.append(i*i ...

  5. Python函数中的可变参数

    在Python函数中,还可以定义可变参数. 如:给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……. 要定义出这个函数,我们必须确定输入的参数.由于参数个数不确定,我们首先想到可以把 ...

  6. python函数中的不定长参数

    python自定义函数中有两中不定长参数,第一种是*name,第二种是**name.加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数.加了两个星号 ** 的参数会以字典的 ...

  7. python函数中的参数类型

    python函数中的参数 动态获取函数的参数 python的函数类型详解

  8. python中函数的不定长参数

    例1: #定义一个含有不定长参数的函数,本例第三个参数*args def sum_nums(a,b,*args): print('_'*30) print(a) print(b) print(args ...

  9. python不定长参数 *argc,**kargcs(19)

    在 python函数的声明和调用 中我们简单的了解了函数的相关使用,然而在函数传递参数的时候,我们埋下了一个坑,关于不定长参数的传递我们还没有讲,今天这篇文章主要就是讲解这个问题. 一.函数不定长参数 ...

随机推荐

  1. 微信Android客户端架构演进之路

    这是一个典型的Android应用在从小到大的成长过程中的“踩坑”与“填坑”的历史.互联网的变化速度如此之快,1年的时间里,可以发生翻天覆地的变化.今天在这里,重新和大家回顾微信客户端架构的演进过程,以 ...

  2. 【面向对象版】HashMap(增删改查)

    前言: 关于什么是HashMap,HashMap可以用来做些什么,这些定义类的描述,请参照[简易版]HashMap(增删改查)的内容. 这章节主要是面向实例,直接进行HashMap(增删改查)的演示. ...

  3. [Ajax系列]Ajax介绍

    Ajax简介: Ajax是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术. What ? AJAX=异步JavaScript和XML AJAX是一种用于创建快读动态网页的技术 通过在后台语 ...

  4. 写了个简单的pdo的封装类

    <?php class PD { //造对象 public $dsn = "mysql:dbname=test2;host=localhost"; //数据库类型,数据库名和 ...

  5. TortoiseSVN安装使用

    TortoiseSVN是windows平台下Subversion的免费开源客户端. 一般我们都是先讲讲服务器的配置,然后再讲客户端的使用,但是在TortoiseSVN上,却可以反过来.因为,如果你的要 ...

  6. Openstack的ping不通实例的解决办法

    状态:实例在管理平台上正常创建,也能vnc到实例里面使用ifconfig,查看IP得到我们想要的IP,但是在除了计算节点以外的机器ping实例就是不通. 操作:主要为了测试网络51删除,重新创建网络5 ...

  7. AngularJs学习笔记-慕课网AngularJS实战

    第1章 快速上手 放弃了IE8以及以下,不支持. 4大核心特性: 1.MVC Model: 数据模型 View:视图 Controller:业务逻辑和控制逻辑 好处:职责清晰,模块化. 2.模块化 3 ...

  8. Readonly与const初识

    对于readonly和const,很多人无法具体区分,不清楚它们的具体使用场合:现在我们分析它们之间的区别和使用场合. const是一个编译期常量:const只能用于修饰基元类型.枚举类型或者字符串类 ...

  9. python auto send email

    /*************************************************************************** * python auto send emai ...

  10. Mysql group by&comma;order by&comma;dinstict优化

    1.order by优化 2.group by优化 3.Dinstinct 优化 1.order by优化 实现方式: 1. 根据索引字段排序,利用索引取出的数据已经是排好序的,直接返回给客户端: 2 ...