Python
*args
def test(a,b,c,*args):
print("a = ", a)
print("b = ", b)
print("c = ", c)
print("args = ", args)
test(1,2,3,4,5)
输出:
a = 1
b = 2
c = 3
args = (4, 5)
*args会将所有多余参数以元祖的形式保存。
**args
def test(a, b, c, *args1, **args2):
print("a = ", a)
print("b = ", b)
print("c = ", c)
print("args1 = ", args1)
print("args2 = ", args2)
test(1,2,3,4,5,d1=6,d2=7)
输出:
a = 1
b = 2
c = 3
args1 = (4, 5)
args2 = {'d1': 6, 'd2': 7}
**args将所有多余的带参数名的参数,以dict的形式保存
C语言
使用 stdarg.h 头文件中的
- va_list:定义arg_ptr指针
- va_start(arg_ptr, argN):arg_ptr指向第一个可选参数,argN是最后一个固定参数。
- va_arg(arg_ptr, type):以 type 类型返回 arg_ptr 指向的参数,并使arg_ptr指向下一个可选参数。
- va_end(arg_ptr):清空参数和arg_ptr
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
int print(const char *first,...)
{
va_list arg_list;
const char *args;
va_start(arg_list,first);
int args = va_arg(arg_list, const char *);
va_end(arg_list);
printf("format=%s args1=%s", format, args);
}
void main()
{
print("test", "test2")
}