python中的动态参数

python以其动态类型且强类型彪悍存在于世,于是这般,许多东西在这里都显得那么灵活轻巧。灵活轻巧本身没错,新手容易愣神——比如说:

def __init__(self,*pros,**attrs)

在这个函数中,我们该做何解呢?python和C亲密到都有指针了?不行!

由于语言学习基础不扎实,资质太浅,语言中 动态参数一说从未听过。其实也见过,不过有时候就是有盲点,没有那个冲动去了解为什么,比如说典型的java代码中,main函数的参数就是动态的。

python动态参数解释:

* 表示一个任意长度的tuple(元组),可以接受一连串的参数;

** 表示一个dictionary(字典),参数形式是“key=value”。

示例:

class Person:  
 def __init__(self,*pros,**attrs):  
   self.name = "jeff"  
  self.pros = pros  
 for (key,value) in attrs.items():  
  stm = "self.%s = \"%s\""% (key,value)  
  exec(stm)  
  
if __name__ == "__main__":  
 jeff = Person(1,2,3,sex="boy")  
  print jeff.pros  
 print jeff.sex  
 print dir(jeff)  

输出为:

(1, 2, 3)
boy
['__doc__', '__init__', '__module__', 'name', 'pros', 'sex']
(注:此处源码来自  http://bbmyth.iteye.com/blog/100521 ,感谢前辈)

你可能感兴趣的:(python,*,**,动态参数)