Python形参打包与解包小技巧
来源:互联网 发布:中山大学图书馆 知乎 编辑:程序博客网 时间:2024/05/01 01:02
Python形参打包与解包小技巧
Python中的函数调用与c++不同的是将this指针直接作为self当作第一个形参进行处理,从而将静态函数与实例方法的调用形式统一了起来。在实际编程过程中,可以通过传递函数的地址、函数的形参的方式将所有函数(包括静态函数、类实例函数)的调用用统一的方式表达出来,方便统一接口和抽象。
待传递的2个函数如下:
class Operation: @staticmethod def close_buy(): """ :return: """ print("test event") print(Operation.i) Operation.i += 1 def exp(self, para=1): try: self.j = 0 print("exp") print(self.j) self.j += para print(self.j) except Exception as e: print(e.__str__())
如上述代码中的两个方法,都想通过函数地址、函数参数的形式进行传递,方便统一调用接口。调用形式如下
def func_exec(call, para): """ 调用函数 :param call: 函数指针 :param para: 参数元组 :return: """ return call(*para)
此时确保para是多个实参组成的元组即可。通过*将元组打散成多个单独的参数。
而传递的调用方式也很简单,如下所示:
func_exec(Operation.close_buy,tuple())func_exec(Operation.exp,(Operation(),3))
func_exec(Operation.exp,(Operation(),3))中的第二个参数为一个元组,由一个对象实例和一个整形参数组成。对象实例此处用的是新建的一个对象,在别处也可用self将当前对象传递进去。从而实现了特殊对象实例函数的传递。
看一些Python api全程经常会碰到如下代码:
p = Process(target=f, args=('bob',))
这里其实有一个单个参数打包成元组的技巧。比如上面的’bob’是一个字符串做为函数的参数,如果直接强制类型转换成tuple,如tuple(‘bol’)会将字符串转换了元组也即(’b’,’o’),明显与预期的不符合,而如果就写成(‘bob’)是不会转换成元组的,参数仍然是一个字符串类型,而加了一个”,”之后就确保将其转换成了一个元组。
所以,以后看见许多函数参数中带个多余的”,”,千万不要以为这个逗号是多余的啊,少不得呢,人家那么写都不是没有道理的啊。
总结
1、散态传递参数
func(*arg)
2、打包传递参数
func( arg=tuple()){ func_exe(*arg)}
注意实际函数调用时对参数进行解包。
3、单个参数打包元组
args=('bob',)
0 0
- Python形参打包与解包小技巧
- python技巧31[文件类型+打包EXE]
- Python打包、安装与发布工具--setuptools
- 【Python】Fabric文件打包,上传与校验
- python中disutils打包与安装
- Python代码的打包与发布详解
- Python打包与发布的概念总结
- Python代码的打包与发布详解
- Python学习(04):python代码打包与发布
- python pyqt4的安装与pyinstaller打包python应用
- python 打包
- python 打包
- python打包
- python打包
- Python打包
- Python序列的切片操作与技巧
- Python 序列的切片操作与技巧
- Alictf2014writeup Reverse200 技巧与python简单编程
- my学习OC--变量 数据类型
- Ubuntu Apache搭建modSecurity,创建自己的WAF
- 单元介绍二
- 脏读,不可重复读,幻读
- GDAL工具箱详解之gdalinfo.exe
- Python形参打包与解包小技巧
- 单例模式简要学习
- java实现单个或多个文件的压缩、解压缩 支持zip、rar等格式
- LightOJ 1104 Birthday Paradox (离散概率)
- 204.[LeetCode]count primes
- Maven指令跳过单元测试
- 某教育平台项目开发之--使用SSM框架开发过程遇到的问题总结
- 二叉查找树与平衡树简介
- CodeForces 508C (贪心)