python动态参数用法实例分析
本文实例讲述了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实现动态添加类的属性或成员函数的解决方法
某些时候我们需要让类动态的添加属性或方法,比如我们在做插件时就可以采用这种方法.用一个配置文件指定需要加载的模块,可以根据业务扩展任意加入需要的模块. 本文就此简述了Python实现动态添加类的属性或成员函数的解决方法,具体方法如下: 首先我们可以参考ulipad的实现:mixin. 这里做的比较简单,只是声明一个类,类初始化的时候读取配置文件,根据配置列表加载特定目录下的模块下的函数,函数和模块同名,将此函数动态加载为类的成员函数. 代码如下所示: class WinBAS(Bas): def
-
详解Python中DOM方法的动态性
文档对象模型 xml.dom 模块对于 Python 程序员来说,可能是使用 XML 文档时功能最强大的工具.不幸的是,XML-SIG 提供的文档目前来说还比较少.W3C 语言无关的 DOM 规范填补了这方面的部分空白.但 Python 程序员最好有一个特定于 Python 语言的 DOM 的快速入门指南.本文旨在提供这样一个指南.在 上一篇专栏文章 中,某些样本中使用了样本 quotations.dtd 文件,并且这些文件可以与本文中的代码样本档案文件一起使用. 有必要了解 DOM 的确切含义
-
Python的动态重新封装的教程
让我们描绘一下本文的情节:假设您要在本地机器上运行一个进程,而部分程序逻辑却在另一处.让我们特别假设这个程序逻辑会不时更新, 而您运行进程时,希望使用最新的程序逻辑.有许多方法可以满足刚提到的要求:本文将向您说明其中几种方法. 随着"可爱的 Python"专栏不断进行,已经讨论了我的公共域实用程序 Txt2Html 的正在进行的增强.该实用程序将"智能 ASCII"文本文件转换成 HTML.以前的文章讨论了实用程序的 Web 代理版本和实用程序的 curses 界面
-
python动态性强类型用法实例
本文实例分析了python动态性强类型用法.分享给大家供大家参考.具体如下: Python变量声明和定义 与C#不同,Python在使用变量之前无须定义它的类型,试着运行下面的例子: i = 12 print i 从上边我们可以看到,变量 i 在使用前并不需要定义,但是必须声明以及初始化该变量.试着运行下面的例子: i = 1 print i + j 上面的代码会产生一个异常:"NameError: name 'j' is not defined",Python提示变量 j 没有定义.
-
python动态加载包的方法小结
本文实例总结了python动态加载包的方法.分享给大家供大家参考,具体如下: 动态加载模块有三种方法 1. 使用系统函数__import_() stringmodule = __import__('string') 2. 使用imp 模块 import imp stringmodule = imp.load_module('string',*imp.find_module('string')) imp.load_source("TYACMgrHandler_"+app.upper(),
-
Python中使用动态变量名的方法
如果要写一个程序,让x1为1,x2为2,然后直到x100为100,你会怎么做? 在C这种静态语言里,变量名这个标识符实际上会被编译器直接翻译成内存地址,所以除了手动设置每个变量的值以外,没办法做到这点.而Python这种动态语言则是可以做到的. 最容易想到的自然是eval,但是实际上根本不需要这种危险的东西,因为Python的变量名就是一个字典的key而已.要获取这个字典,直接用locals和globals函数即可. 因此这个程序可以这样实现: 复制代码 代码如下: >>> names
-
python进阶教程之动态类型详解
动态类型(dynamic typing)是Python另一个重要的核心概念.我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值.这些都与动态类型的概念相关. 动态类型 在我们接触的对象中,有一类特殊的对象,是用于存储数据的.常见的该类对象包括各种数字,字符串,表,词典.在C语言中,我们称这样一些数据结构为变量.而在Python中,这些是对象. 对象是储存在内存中的实体.但我们并不能直接接触到该对象.我们在程序中写的对象名,只是指向这一对象的引用(
-
Python中动态获取对象的属性和方法的教程
首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding: UTF-8 import sys # 模块,sys指向这个模块对象 import inspect def foo(): pass # 函数,foo指向这个函数对象 class Cat(object): # 类,Cat指向这个类对象 def __init__(self, name='kitty'): self.name = name def sayHi(self): # 实例方法,sayHi指向这个方法对象,使用类或实例.
-
Python动态加载模块的3种方法
1.使用系统函数__import_() 复制代码 代码如下: stringmodule = __import__('string') 2.使用imp 模块 复制代码 代码如下: import imp stringmodule = imp.load_module('string',*imp.find_module('string')) 3.使用exec 复制代码 代码如下: import_string = "import string as stringmodule" exec impo
-
python动态加载变量示例分享
众所周知,程序在启动后,各个程序文件都会被加载到内存中,这样如果程序文本再次变化,对当前程序的运行没有影响,这对程序是一种保护. 但是,对于像python这样解释执行的语言,我们有时候会用到"from 模块 import 变量名"这样的形式,如果这个变量直接被定义在文件当中,那么这些变量在程序开始时就会被定义.赋值,运行过程中值不变.如果打算在运行过程中对这个模块进行重写,那么更改后的变量值是无法被使用的. 对于这个问题,可以换一种思路,将这个模块中的变量定义在函数里,而函数是在程序运
随机推荐
- 如何决定是否将登录内容保存到Cookie里?
- React Native第三方平台分享的实例(Android,IOS双平台)
- 两种不同的方法实现js对checkbox进行全选和反选
- 基于jQuery下拉选择框插件支持单选多选功能代码
- asp.net core项目mvc权限控制:分配权限
- C#中this的用法集锦
- Android打造流畅九宫格抽奖活动效果
- 微信支付如何实现内置浏览器的H5页面支付
- CSS布局中可以用javascript判断浏览器版本
- jquery实现漂亮的二级下拉菜单代码
- Node连接mysql数据库方法介绍
- 如何在Linux下配置socks5代理
- lanmp(Linux Apache Nginx Mysql Php) 的安装配置
- Linux下安装MariaDB数据库问题及解决方法(二进制版本的安装)
- PHP文件上传后缀名与文件类型对照表整理
- Python无损音乐搜索引擎实现代码
- Spring Cloud Feign实例讲解学习
- Shell脚本中使用getopts处理多命令行选项
- Thinkphp5框架使用validate实现验证功能的方法
- python实现对csv文件的列的内容读取