python的参数传递问题!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的参数传递问题!!!相关的知识,希望对你有一定的参考价值。

假设函数定义的时候定义4个形参,如(a,b=0, c=true, d=0)
相当于有三个可选参数。
这样在函数调用的时候,如果是只传递a和d的话,是不是实参d要写成d=1这种形式,相当于函数调用的参数列表为(a,d=1),不然python是不知道1是第几个参数?是不是要这样呢。如果没有缺省的实参的话,是不是就不用写成这种形式了。比如(a,2,false
,1)--依次传递4个实参,或者只传递前三个实参,(a,2,false).是这样吗

楼主的理解没有问题啊 .
python中函数的实参传递规则是:
标注了参数名的就要按参数名传递,打乱顺序的情况下一定要加参数名,否则会混乱的。
没有缺省的实参情况下就会依次传递,如果不够的话,后面的会自动去取自己的缺省值。
如果实参的数量比形参要多的话,就要用到带*号的参数名了。
参考技术A 如果是只传递a和d的话 ?

这一点你无法做到……所以你的推测是错误的。默认形参只会从左到右依次赋值。 省略的参数只能是从右到左

比如:
你可以
fun(a)
fun(a, b)
fun(a, b ,c)
fun(a,b,c,d)

但是你不能做到 fun(a, c = ? ,d =? )
这样在语法就是错误的……
参考技术B 是的。

python 中参数传递 * 和 ** 的问题

python 中参数传递 * 和 ** 的问题,以 tuple和dict方式传递参数

 
 
在python中,有时会看到这样的函数定义:
    def   p1(*arg1,**arg2):
          pass
也有看到这样的函数调用:
    i=5
    function(*i)
这些都是什么意思呢?
1.传入的参数生成 tuple 和 dict
      def    p1(*a1,**a2):
             print a1,‘/n‘,a2
       p1(1,2,3,4,arg5=5,arg6=6)
       结果为:
       (1,2,3,4)
       {‘arg5‘:5,‘arg6‘:6}
2.传入的tuple 或 dict解析成参数序列
    def   q1(arg1,arg2,arg3,arg4):
          print arg1,arg2,arg3,arg4
    tu=(1,2,3,4)
    print ‘extract from tuple /n‘
    q1(*tu)

    di={‘arg1‘:1,‘arg2‘:2,‘arg3‘:3,‘arg4‘:4}
    print ‘/nextract from dict /n‘
    q1(**di)
    结果为:
    extract from tuple
    1234
    extract from dict
    1234
它们是互逆过程,在需要传递函数和函数参数的时候很有用
如:
    def    worker1(arg1):
          print arg1
    def    worker2(arg1,arg2):
          print arg1,arg2
    def   calling(callable,arg):
          callable(*arg)
if __name__="__main__":
    calling(worker1,(1,))
    calling(worker2,(1,2))







































以上是关于python的参数传递问题!!!的主要内容,如果未能解决你的问题,请参考以下文章

python的参数传递是值传递还是引用传递??

Python的函数参数传递

python 中参数传递 * 和 ** 的问题

python怎么向类中的函数传递参数

.net如何与pythonnet传递参数

Python按值传递参数和按引用传递参数