python函数动态参数详解

Python的动态参数:

  1,参数前一个“*”:在函数中会把传的参数转成一个元组。

    

  func (*       func(123,1,2,)
 
result:(123, 1, 2, ‘a‘)

  2,“**args”的参数:函数中被转成一个字典。

    

如果这样传参的话会报错,因为没有指定key或value:def func (**args):    print(args)

func(123,1,2,‘a‘)

result:TypeError: func() takes 0 positional arguments but 4 were givendef func (**args):    print(args)

func (a=1,b=2)

result:{‘a‘: 1, ‘b‘: 2}

3,混合动态参数的情况:

def func (*args,**kwargs):    print("%s----%s" %(args,kwargs))

func (1,2,a=1,b=2)

Result:(1, 2)----{‘b‘: 2, ‘a‘: 1}

也是没问题的,需要注意的是必须*args在前**kwargs在后,参数也是一样。

4,变量当动态参数的情况:

 

这种情况如果我们直接把一个list传到前面,一个dict传到后面:def func (*args,**kwargs):    print("%s----%s" %(args,kwargs))

list=[1,2]
dic={‘a‘:1,‘b‘:2}

func (list,dic)

Result:([1, 2], {‘b‘: 2, ‘a‘: 1})----{}       后面的字典竟然是空的- -!

So,我们需要叫函数知道那个变量是*args的参数,哪个是**args的参数,正确传参写法:
  
func(*list,**dic

Result:(1, 2)----{‘a‘: 1, ‘b‘: 2}

  

    

时间: 2024-10-16 06:40:23

python函数动态参数详解的相关文章

wordpress分类目录函数:wp_list_cats参数详解

今天修改主题模板时相直接调用分类目录,查了一下分类目录函数wp_list_cats(); WordPress分类目录常用格式 <?php wp_list_cats(“sort_column=ID&hide_empty=0&optioncount=1″);?> 该函数表示:分类目录按ID排列,不显示没有文章的分类,显示分类目录下的文章数量 wp_list_cats函数参数如下: sort_column默认值为ID,可选ID 或 name,分别表示按 ID 值或分类名称排序sort

Oracle 时间,日期 类型函数及参数详解

ORACLE字符数字日期之间转化 Java代码 24 小时的形式显示出来要用 HH24 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; select to_date('2005-01-01 13:14:20','yyyy-MM-dd HH24:mi:ss') from dual; to_date() function 1. 日期格式参数 含义说明 D 一周中的星期几 DAY 天的名字,使用空格填充到 9 个字符 DD 月中的第

函数的参数详解

# 函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就算完成了. 对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了 函数内政部的复杂逻辑被封装起来,调用者无需了解. python的函数定义非常简单,单灵活度却非常大.除了正常定义的必选参数外, 还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数 还可以简化调用者的代码. 一.位置参数 我们先写一个计算x的平方的函数 def power(x): retu

python *args *kwargs 参数详解

可变参数 在Python函数中,还可以定义可变参数.顾名思义,可变参数就是传入的参数个数是可变的,可以是1个.2个到任意个,还可以是0个. 我们以数学题为例子,给定一组数字a,b,c--,请计算a2 + b2 + c2 + --. 要定义出这个函数,我们必须确定输入的参数.由于参数个数不确定,我们首先想到可以把a,b,c--作为一个list或tuple传进来,这样,函数可以定义如下: 1 def calc(numbers): 2 sum = 0 3 for n in numbers: 4 sum

python函数装饰器详解

基础:函数装饰器的表现方式 假如你已经定义了一个函数funcA(),在准备定义函数funcB()的时候,如果写成下面的格式: @funcA def funcB():... 表示用函数funcA()装饰函数funcB().当然,也可以认为是funcA包装函数funcB.它等价于: def funcB():... funcB = funcA(funcB) 也就是说,将函数funcB作为函数funcA的参数,funcA会重新返回另一个可调用的对象(比如函数)并赋值给funcB. 所以,funcA要想作

C语言中main函数的参数详解

main函数的定义形式  main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv.所以C99标准中规定只有以下两种定义方式是正确的: int main(void) //无参形式 int main(int argc, char *argv[]) //有参形式 当然有参形式可以进行演变,所以下面的写法也是正确的(同时变量名是可以更换的): int main(int argc, char **a

Python 函数动态参数

def show (*arg): print (arg,type(arg))show([11,22],[33])结果:([11, 22], [33]) <class 'tuple'>结论:一个*号传递的参数默认定义为元祖类型 def show (**arg): print (arg,type(arg))show(k1='v1',k2='v2',k3='v3')结果:{'k1': 'v1', 'k3': 'v3', 'k2': 'v2'} <class 'dict'>定义结论:两个*

python datetime模块参数详解

Python提供了多个内置模块用于操作日期时间,像calendar,time,datetime.time模块,它提供 的接口与C标准库time.h基本一致.相比于time模块,datetime模块的接口则更直观.更容易调用. datetime模块定义了两个常量:datetime.MINYEAR和datetime.MAXYEAR,分别表示datetime所能表示的最 小.最大年份.其中,MINYEAR = 1,MAXYEAR = 9999. datetime模块定义了下面这几个类: datetim

CURL 重要函数Curl_setopt参数详解

CURLOPT_HEADER:设为1,则在返回的内容里包含http header: CURLOPT_FOLLOWLOCATION:设为0,则不会自动301,302跳转: *CURLOPT_INFILESIZE: 当你上传一个文件到远程站点,这个选项告诉PHP你上传文件的大小.*CURLOPT_VERBOSE: 如果你想CURL报告每一件意外的事情,设置这个选项为一个非零值.*CURLOPT_HEADER: 如果你想把一个头包含在输出中,设置这个选项为一个非零值.*CURLOPT_NOPROGRE