博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的可变参数
阅读量:5936 次
发布时间:2019-06-19

本文共 1258 字,大约阅读时间需要 4 分钟。

hot3.png

先看下面两段代码:

第一种:

class users(object):    # 初始化    def __init__(self, **kwargs):        if isinstance(kwargs, dict): #验证传入的kwargs参数的类型是否为dict            print 'users', True #输出True        userargs = []        # print "lenofkwargs", len(kwargs)        if len(kwargs) >= 0:            for attr, value in kwargs.iteritems():                setattr(self, attr, value)                userargs.append(value)

第二种:

def singleargsql(self, sql, *args):    if isinstance(args, tuple):#验证传入的args参数类型是否为tuple        self.cursor.execute(sql, args) #执行这里        self.conn.commit()    else:        print "nonetuple"        self.cursor.execute(sql % args)        self.conn.commit()

再看如何调用他们:

user = users(id='00014', email='小14', password='小小', admin=2, name='小小', image='小小', created_at=22)
dbengine.singleargsql(sql, self.id, self.email, self.password, self.admin, self.name, self.image, self.created_at)

这两种都是python的可变参数方法定义及调用方法:

第一种:kwargs调用时参数是字典类型,传入时依然是字典类型

第二种:args调用时参数是数量不确定的普通变量,传入时转为了tuple类型(无论传入的是什么类型,都会再加括号(),进一步转化为tuple类型),例如(代码如下),

dbengine.singleargsql(sql, self.attr)

如果self.attr=(12, 13, 14),此时self.attr已然是tuple类型,而传入singleargsql函数中后,args不等于(12, 13, 14),而是((12, 13, 14),),这时如果再想取出相应数据,就不是遍历args了,而是遍历args[0]

转载于:https://my.oschina.net/u/3636678/blog/2208436

你可能感兴趣的文章
度量时间差
查看>>
apache prefork模式优化错误
查看>>
jmeter高级用法例子,如何扩展自定义函数
查看>>
通过jsp请求Servlet来操作HBASE
查看>>
JS页面刷新保持数据不丢失
查看>>
清橙A1202&Bzoj2201:彩色圆环
查看>>
使用data pump工具的准备
查看>>
springMVC---级联属性
查看>>
get和post区别
查看>>
crontab执行shell脚本日志中出现乱码
查看>>
cmd.exe启动参数说明
查看>>
《随笔记录》20170310
查看>>
网站分析系统
查看>>
一站式解决,Android 拍照 图库的各种问题
查看>>
从零开始来看一下Java泛型的设计
查看>>
Shell编程基础
查看>>
Shell之Sed常用用法
查看>>
3.1
查看>>
校验表单如何摆脱 if else ?
查看>>
JS敏感信息泄露:不容忽视的WEB漏洞
查看>>