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 ##--------------------------------------------
  • 相关阅读:
    Luogu P4053 [JSOI2007]建筑抢修
    CF894E Ralph and Mushrooms
    Boruvka
    Codeforces Beta Round #25 (Div. 2 Only) C. Roads in Berland
    HDU 3714/UVA1476 Error Curves
    HDU 5410 CRB and His Birthday
    HDU 1796 How many integers can you find
    UVA 11624 Fire!
    POJ 3279 Dungeon Master
    POJ 1321 棋盘问题
  • 原文地址:https://www.cnblogs.com/2mei/p/9254082.html
Copyright © 2011-2022 走看看