函数调用的各种参数

ref: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000

py3:

>>> def test(*,first,**kw):
    print(first,kw)

>>> test(first=1,**{‘second‘:2,‘third‘:3})
1 {‘second‘: 2, ‘third‘: 3}
>>> test(**{‘first‘:1,‘second‘:2,‘third‘:3})
1 {‘second‘: 2, ‘third‘: 3}

只是觉得第一种调用的方式有些新奇而已: 关键字参数实参(**{‘second‘:2,‘third‘:3}),顺便把命名关键字参数实参(first=1)也给传递进去了

(不讨论实参这个词在python里用合适不合适了);不是探究语法,而是觉得这些名字实在难记,即使记住了,也要担忧这是中文的说法,换个人,

没准说的是同样的事情,但术语有差异,就变成了鸡同鸭讲;看来,编程还是英语的天下,还是早日脱离翻译,升天尽早;

ps: py3在函数定义时可说明返回值类型,不幸,忘了!  < 在 )后面,怎么写,呵呵>

时间: 2024-08-01 10:46:29

函数调用的各种参数的相关文章

python 函数调用时传递参数的一些规范

位置参数位置参数需与形参一一对应 def test(a,b) #a,b就是位置参数 关键字参数与形参顺序无关 def test(x,y) print(x,y) test(x=2,y=3) 位置参数必须在关键字参数之前 (**kwargs):把N个关键字参数,转换成字典格式 def test(**kwargs) print(kwargs) test(c=1,b=2) (*args):把N个位置参数,转换成 def test(*args) print(args) test(1,2,3,4,5) 原文

函数调用--不定长参数

def func(arg,*args_tuple,**args_dic) 带*的参数会以元组的形式导入,带**的参数会以字典的形式导入 def fuc(a,*arg): print(a) print(arg) fuc("hello",1,2,3,4,5) 输出结果: def fuc(a,*arg,**dic): print(a) print(arg) print(dic) fuc("hello",1,2,3,4,5,d=3,b=4,c=5) 输出结果: 原文地址:h

C/C++函数调用约定

C/C++函数调用约定 函数声明部分的extern "C"表示连接规范(Linkage Specification)采用C,而不是C++.如果不写的 话.默认采用C++,当然也可以写成extern "C++". 1.__cdecl: C和C++默认的函数调用约定,参数从右到左顺序压入堆栈,由函数负责清理堆栈,把参数弹出. 也正是因为用来传送参数的堆栈是由调用函数维护的,所以实现可变参数的函数只能使用这种函数调用约定.因为每一个调用它的函数都要包含清理堆栈的代码,所以

函数和函数参数

函数 函数是对程序逻辑进行结构化或过程化的一直编程方法.能将整块代码巧妙的隔离成易于管理的小块,把重复代码放到函数中而不是进行大量的拷贝--这样既能节省空间,也有助于保持一致性,因为你只需要改变单个的拷贝而无须去寻找再修改大量复制代码的拷贝. 创建函数 def语句 函数是用def语句来创建的,语法如下: def function_name(params): pass In [1]: def add(x,y): ...: print('{} + {} = {}'.format(x,y,x+y))

【汇编总结3】函数调用

这块儿的知识长时间不用老是忘掉,本文依据<0Day安全:软件漏洞分析技术>第二章部分内容做个总结. 1. 函数调用约定 TODO 2. 函数调用过程分析 2.1 函数调用大致包括以下几个步骤 >1. 参数入栈: 根据函数调用约定将参数按照一定顺序依次压入系统栈中,最常用的就是从 右 往 左 压入栈中.这里可以思考下为什么要从右往左? 因为从右往左压入栈的话,被调函数里面取参数使用的时候,就是从左往右的顺序,一般而言 [EBP + 8] 就是第一个参数,[EBP+0xC]是第二个参数,比较

Python函数中的参数(二)

当使用混合特定的参数匹配模型时,Python将会遵循以下有关顺序的法则: 1.在函数调用中,参数必须以这样的顺序出现:任何位置参数(Value).任何关键字参数(name = Value)和*sequence形式的组合,最后是**dict形式 2.在函数头部,参数必须以如下的顺序出现:任何一般参数.任何默认参数.如果有的话,是*name(在Python3.0中是*)的形式,然后是任何name或name=value keyword-only参数,最后是**name形式 Python内部是使用以下的

js 函数参数个数

js中的函数参数个数不是确定区别函数的,也就是说你定义一个函数A(x,y)    当你使用这个函数时,你可以A();A(1);A(1,2);A(1,2,3);都是调用这个A(x,y)函数. 例子: <html> <head> <title> 函数调用测试,参数个数和函数声明不一样多 </title> <script language="JavaScript"> function needTwoPara(p1,p2){ var

C#函数参数

当函数接受参数时,必须指定下属内容 函数在其定义中指定参数列表,以及这些参数的类型 在每个函数调用中匹配参数列表 参数匹配:当调用函数时,必须使参数与函数定义中指定的参数完全匹配,这意味着要匹配参数的类型.个数和顺序 参数数组 C#允许为函数指定一个(只能指定一个)特定的参数,这个参数必须是函数定义中的最后一个参数,称为参数数组,参数数组可以使用个数不定的参数调用函数,使用params来定义. 值参数 其含义是,使用值参数时,是把一个值传递给函数使用的一个变量,在函数中对此值的任何修改,都不影响

?Swift语言中为外部参数设置默认值,可变参数,常量参数,变量参数,输入输出参数

引用自这里:Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 目录[-] 7.4.4  为外部参数设置默认值 7.4.5  可变参数 7.4.6  常量参数和变量参数 7.4.7  输入-输出参数 7.4.4  为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1.2语言快速入门v2.0. [示例7-11]以下的代码就为外部参数toString.withJoiner设置了默认的参数"Swift"和&qu