• 技术文章 >后端开发 >Python教程

    python传递参数方式小结

    2016-06-10 15:14:54原创510

    本文实例总结了python传递参数方式。分享给大家供大家参考。具体分析如下:

    当形参如*arg时表示传入数组,当形参如**args时表示传入字典。

    def myprint(*commends,**map):  
     for comm in commends:  
     print comm  
     for key in map.keys():  
     print key,map[key]  
    myprint("hello","word",username="tian",name="wei")

    输出:

    hello
    word
    username tian
    name wei

    python中定义一个函数,可以通过正常的只传入值或key-value的方法调用。但是如果第一个时参数传入的是key-value的方法,那么后面的必须都是key-value方法,如果第一个不是,那么后面的可以根据情况再传入值就可以了。

    例子如下:

    def parrot(voltage="fff",state='a stiff',action='voom',type='Norwegian Blue'):
     print "-- This parrot wouldn't", action,  
     print "if you put", voltage, "volts through it." 
     print "-- Lovely plumage, the", type  
     print "-- It's", state, "!" 
    parrot(1000)#可以  
    parrot(action = 'VOOOOOM', voltage = 1000000)
    #可以,都是key-value方法  
    parrot('a thousand', state = 'pushing up the daisies')
    #可以,第一个实参为直接传入法,后面无所谓了  
    parrot('a million', 'bereft of life', 'jump')
    #可以,都是传值,而且由于形参都有默认值,则按顺序一个个替换  
    parrot(voltage="33","ff","abc")
    # 不可以,第一个为Key-value传值法,以后的都必须是

    Python新手入门,在python中函式定义主要有四种方式:

    ① F(arg1,arg2,...),最常见的定义方式,一个函式可以定义任何个参数,每个参数间用逗号分割,用这种参数在调用的时候必须在函式名后面的小括号中提供个数相等的值(实参),并且顺序必须相同,形参与实参一一对应

    def a(x,y): 
      print x,y

    调用a函式,a(1,2)则x=1,y=2,如果a(1)或者a(1,2,3)则会出错

    ② F(arg1,arg2=value2,...agrN=valueN),则将为函式提供默认值。

    def a(x,y=3):
      print x,y

    调用该函式,a(1,2)则x=1,y=2,如果a(1)不会导致错误,此时x=1,y=3,y值将使用默认值,a(y=4,x=2)同理

    可变参数:

    ③ F(*arg1),以一个*加形参的方式来表示函式的实参个数不确定,参数个数>=0,采用这样的方式定义函式,在函式内部将以实参名的方式构建一个元组(tuple)

    def a(*x):  
      # 定义一个名为x的元组
    
    def a(*t):  
      print x 
    
    >>>a(1) 
    (1,) 
    >>>a() 
    None 
    >>>a(1,2,3) 
    (1,2,3)

    遍历该元组(计算总和)的一种方式,此时r定义为一元组:

    def y(*r):
      x = 0
      for t in r:
        x += t
      print x

    ④ F(**arg)形参名前加2个**表示在函式内部将被存放在以形参名为标识符的dictionary,这时调用将使用arg1=value1,arg2=value2...

    def a(**b):  
      print b 
    
    >>>a() 
    None 
    >>>a(x=1,y=2) 
    {'y':2,'x':1}
    #注意遍历返回的顺序与形参位置顺序相反
    >>>a(1,2) #error

    可通过以下方式来获取预期键值对,如果形参是未定义'y'的键,将返回None

    def a(**x):  
      print x.get('y')
    
    >>>a(x=1,y=2) 
    2 
    >>>a(x=1) 
    None 
    >>>a(x=1,b=2)
    None

    Python参数调用过程按照以上四种方法优先级依次降低。

    ①方式解析,然后是②中的arg=value方式,再分别按照③>④优先级传参

    这是自己第一份通过Blog整理的学习笔记,希望对自己,对浏览至此的各位朋友有所帮助,以上函式命名不符合规范,仅用于简单标识说明,使用python 2.6.2

    希望本文所述对大家的Python程序设计有所帮助。

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:python 传递参数

    相关文章推荐

    • isinstance在python中是什么意思• python Django模板的使用方法• 编写自定义的Django模板加载器的简单示例• Python中字典创建、遍历、添加等实用操作技巧合集• 详解Python中的条件判断语句
    1/1

    PHP中文网