Python的位置参数、默认参数、关键字参数、可变参数的区别

参考自:http://www.cnblogs.com/bingabcd/p/6671368.html

普通参数 (位置参数)

  • 定义的时候直接定义变量名,调用的时候直接把变量或者值放入指定的位置
  • 调用的时候,具体参考的是位置,按位置赋值
  • 语法:
def 函数名 (参数1,参数2,……)                 
                      函数体           
#调用           
函数名 (value1,value2,……)

默认参数

  • 形参带有默认值
  • 调用的时候,如果没有对应的形参赋值。则使用默认值
  • 语法:
  def func_name (pv1=v1,p2=v2,……)                      
       func_back              
  #调用1              
  func_name()
  #调用2              
   v1 = value1              
   v2 = value2               
   func_name(v1,v2)

实例:

#默认参数实例
#报名函数,需要知道学生的性别#学习python的学生基本都是男生,所以,报名的时候如果没有特别指定,默认是男生
def reg(name,age,gender = "male"):    
      if gender == "male":       
            print("{0} is {1} years old,and he is a good student".format(name,age))    
      else :        
            print("{0} is {1} years old,and she is a good student".format(name,age))
 #调用默认参数函数案例
 reg("mingyue",18,"female")
 reg("xiaoming",23)

关键字参数

  • 语法与普通函数没有太大区别,但是调用时有区别

  • 语法:

      func_name ( p1,p2,……):                
           func_back         
      #调用函数       
      func_name(p1=value1,p2=value2,……)
    
  • 比较麻烦,但是也有好处 - 不容易混淆,一般实参和形参只是按照位置一一对应即可,容易出错 - 使用关键字参数,可以不用考虑参数的位置

    案例:

     ```
     #关键字参数案例
     def stu (name,age,addr):
           print("I am a student!")
           print("我叫{0},我今年{1}岁了,我住{2}".format(name,age,addr))
     stu(age = "18",addr = "我家",name = "静静")
     ```
    

收集参数(可变参数)

  • 把没有位置,不能和定义时的参数位置相对应的参数,放入一个特定的数据结构中
  • 语法:
 def func_name(*args):                  
        func_back                 
 #按照list使用方式访问args得到args得到传入的参数                
 #调用            
 func_name(p1, p2, p3, ……)
  • 参数名args不是必须这样写,但是推荐直接使用args,约定俗成
  • 参数args前要有星号*
  • 收集参数可以和其他函数共存

案例:

#收集参数案例
#函数模拟一个学生进行自我介绍,但具体内容不清楚
#*args可以看成一个List(列表)
def stu(*args):    
       print("hello,大家好,我自我介绍下")   
        print(type(args)) #输出args的格式,这里为tuple格式    
        for item in args:       
               print(item)
#收集参数可以不带任何实参使用
stu()
stu("帅哥", 18, "北京顺义区", "崔傻子", "单身")stu("高大神")

收集函数(可变参数)之关键字参数

  • 把关键字参数按字典格式存入收集参数
  • 语法:
 def func_name( **kwargs):                         
        func_back                    
  #调用                   
  func_name(p1=v1, p2=v2, ……)
  • kwargs一般约定俗成,调用的时候把多余的关键字参数放入kwargs
  • 访问kwargs需要按照字典的格式访问
    案例:
#收集参数之关键字收集参数案例
#自我介绍
def stu( **kwargs):
    print("Hello,大家好,我做下自我介绍")
    print(type(kwargs)) #kwargs的格式是字典“dict”
    #对于字典的访问,python2和python3有区别,本案例使用python3
    for k,v in kwargs.items():
        print(k, "……", v)

stu(name="大帅哥", age=19, addr="北京市顺义区", lover="崔傻子", worker="student")
print("*" * 20)
stu(name="高大神")
#收集参数为空案例
stu()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值