zoukankan      html  css  js  c++  java
  • 7 python函数参数(必须参数、可变参数、关键字参数)

      1 #python中的函数定义,使用和传参
      2 
      3 ###------------------- 必要参数 -------------------------------------
      4 
      5 必要参数,即函数调用时必须要传的参数,
      6 
      7 
      8  #下面进行举例说明
      9  
     10  def helloWorld(a):
     11      print('输出:hello')
     12  
     13  if __name__ == '__main__':
     14      helloWorld("aaa")   ## 必须要有参数
     15      
     16 ##------------  默认参数 -----------------------------------------------------------
     17 说明:
     18     1.必选参数在前,
     19     2,有多个默认参数时,调用的时候,既可以按顺序提供默认参数
     20     3,也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上
     21 
     22 例如:
     23 def enroll(name, gender, age=6, city='Beijing'):
     24     print('name:', name)
     25     print('gender:', gender)
     26     print('age:', age)
     27     print('city:', city)
     28 
     29 
     30 enroll('Bob', 'M', 7)
     31 enroll('Adam', 'M', city='Tianjin')
     32 
     33  
     34 特别重要:
     35     ###  定义默认参数要牢记一点:默认参数必须指向不变对象!
     36 
     37 例如:
     38 def add_end(L=[]):
     39     L.append('END')
     40     return L
     41 
     42 print (add_end())
     43 print (add_end())
     44 
     45 结果:
     46     ['END']
     47     ['END','END']
     48 
     49 原因说明:
     50     Python函数在定义的时候,默认参数L的值就被计算出来了,在每次调用时,L参数已经变前一次调用所更改了,
     51 
     52 所以:
     53     避免在函数里面去修改函数的默认参数值。
     54 
     55 
     56 ##--------------------- 关键字参数   --------------------------------------------
     57 
     58 
     59 def about(name,course,site):
     60     print (name,course,site)
     61 
     62 about('jim','100','www.baidu.com')   ## 必须按顺序传参
     63 about(site='www.baidu.com',name='green',course=100)   ##以关健字方式传入参数(可以不按顺序)
     64 
     65 
     66     
     67 
     68 ##-------------- 不定长参数(可变参数) (这些可变参数在函数调用时自动组装为一个tuple)-----------------------------------------------------------
     69 
     70 顾名思义:
     71     可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。
     72 
     73 ###重要说明:
     74     (可变参数的好处是,不用事先准备好LIST或者元组)
     75     这些可变参数在函数调用时自动组装为一个tuple
     76 
     77 定义:
     78 def loop(*args):
     79     for x in args:
     80         print x
     81 
     82 loop(1,2,3)
     83 
     84 结果是:
     85 1
     86 2
     87 3
     88 
     89 ###说明2:
     90     如果已经有了一个列表或者元组,怎么传递可变参数呢??? 如下:
     91 
     92 def loop(*args):
     93     for x in args:
     94         print x
     95 
     96 loop(1,2,3)
     97 a=[4,5,6]
     98 loop(*a) ##  这里要在列表 或元组 前面加* 连传递参数进来。
     99 
    100 
    101 
    102 
    103 ###------------------- 这也是不定长参数  ----------------------------------------------------------------
    104 
    105 说明:
    106     这些关键字参数在函数内部自动组装为一个dict
    107 
    108 函数定义:
    109 def person(name, age, **kw):
    110     print('name:', name, 'age:', age, 'other:', kw)
    111 
    112 调用1:
    113 >>> person('Michael', 30)
    114 name: Michael age: 30 other: {}
    115 
    116 调用2:
    117 >>> person('Adam', 45, gender='M', job='Engineer')
    118 name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    119 
    120 调用3:
    121 >>> extra = {'city': 'Beijing', 'job': 'Engineer'}  ---事先已经有了一个字典
    122 >>> person('Jack', 24, **extra)                        ----  **extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数
    123 name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
    124 
    125 ###调用说明:
    126 **extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,
    127 注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。
    128 
    129 
    130 ##--------------------------------------------
  • 相关阅读:
    数据库表结构变动发邮件脚本
    .net程序打包部署
    无法登陆GitHub解决方法
    netbeans 打包生成 jar
    第一次值班
    RHEL6 纯命令行文本界面下安装桌面
    C语言中格式化输出,四舍五入类型问题
    I'm up to my ears
    How to boot ubuntu in text mode instead of graphical(X) mode
    the IP routing table under linux@school
  • 原文地址:https://www.cnblogs.com/2mei/p/9254082.html
Copyright © 2011-2022 走看看