python动态参数用法实例分析
作者:惟愿莲心不染尘 时间:2021-03-02 06:27:51
本文实例讲述了python动态参数用法。分享给大家供大家参考。具体分析如下:
先来看一段代码:
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']
python不定参数:
参数以一个*号开头的代表着一个任意长度的数组,可以接收连续一串参数,如上面代码里传的是1,2,3,你可以更多。
参数以两个*号开头的代表着一个字典,参数的形式是“key=value”,接受连续任意多个参数。
在函数内,我们就可以把前者当作一个元组来处理,打印结果看得出来是一个元组。注意,调用方法是参数不定长,而在方法执行的时候,长度已定了,所以是元组。同时,我们可以把后者当作一个字典来处理。
示例代码里使用可变长参数实现了一个类属性的个性化定制,对于一个Person类,你可以通过传入字典类型的参数使这个类有更多原来不存在的属性,实现方法 是用了exec方法,目前只能通过字符串的参数。这里只是展示了可变参数的使用及exec的神奇力量。真正的函数不应该允许任意用户自定义属性的,可变参 数的目的是为定义函数方便及调用函数时,参数传入形式更自由而已。
希望本文所述对大家的Python程序设计有所帮助。
标签:python,动态,参数
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
php 无法载入mysql扩展
2023-09-07 13:07:40
php导出excel格式数据问题
2023-07-13 22:46:06
python装饰器三种装饰模式的简单分析
2022-06-26 17:29:46
DelphiXE连接MySQL5.1
2010-12-08 16:44:00
ASP脚本循环语句
2009-02-19 13:34:00
TMDPHP 模板引擎使用教程
2023-11-15 03:21:56
![](https://img.aspxhome.com/file/2023/9/94489_0s.gif)
ASP.NET 2.0中的数据操作之九:跨页面的主/从报表
2023-07-19 20:28:42
![](https://img.aspxhome.com/file/2023/5/75525_0s.png)
ASP checkbox复选框是否被选中的代码(结合数据库)
2011-03-06 11:21:00
非常全面的Python常见基础面试题及答案
2022-11-14 17:03:33
![](https://img.aspxhome.com/file/2023/2/84072_0s.gif)
Centos 6.4 安装Python 2.7 python-pip的详细步骤
2023-12-01 10:21:03
精致的web设计
2009-12-04 19:07:00
python网络爬虫学习笔记(1)
2023-12-24 04:08:16
关于分页查询和性能问题
2008-03-11 12:25:00
python 如何在list中找Topk的数值和索引
2022-01-20 10:28:27
Python读入mnist二进制图像文件并显示实例
2023-04-23 16:40:44
python实现知乎高颜值图片爬取
2023-03-11 10:35:54
Python爬虫之爬取哔哩哔哩热门视频排行榜
2021-08-19 04:33:14
![](https://img.aspxhome.com/file/2023/4/80404_0s.png)
解决python递归函数及递归次数受到限制的问题
2023-12-01 01:49:35
python多线程调用exit无法退出的解决方法
2023-04-19 19:41:48
在ASP.NET 2.0中操作数据之十一:基于数据的自定义格式化
2023-07-14 19:53:21
![](https://img.aspxhome.com/file/2023/7/75547_0s.png)