本文实例讲述了python动态参数用法。分享给大家供大家参考。具体分析如下:
先来看一段代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
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
|
( 1 , 2 , 3 ) boy [ '__doc__' , '__init__' , '__module__' , 'name' , 'pros' , 'sex' ] |
python不定参数:
参数以一个*号开头的代表着一个任意长度的数组,可以接收连续一串参数,如上面代码里传的是1,2,3,你可以更多。
参数以两个*号开头的代表着一个字典,参数的形式是“key=value”,接受连续任意多个参数。
在函数内,我们就可以把前者当作一个元组来处理,打印结果看得出来是一个元组。注意,调用方法是参数不定长,而在方法执行的时候,长度已定了,所以是元组。同时,我们可以把后者当作一个字典来处理。
示例代码里使用可变长参数实现了一个类属性的个性化定制,对于一个Person类,你可以通过传入字典类型的参数使这个类有更多原来不存在的属性,实现方法 是用了exec方法,目前只能通过字符串的参数。这里只是展示了可变参数的使用及exec的神奇力量。真正的函数不应该允许任意用户自定义属性的,可变参 数的目的是为定义函数方便及调用函数时,参数传入形式更自由而已。
希望本文所述对大家的Python程序设计有所帮助。