全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1084|回复: 15

请教个python问题

[复制链接]
发表于 2018-9-9 23:25:04 | 显示全部楼层 |阅读模式
在这个文章的第一个例子https://segmentfault.com/a/1190000007837364

这个func(*args, **kwargs)是什么东西?如果是函数的话是什么时候定义的呢?
解惑的大佬10元小红包感谢,谢谢了。
发表于 2018-9-9 23:48:41 来自手机 | 显示全部楼层
参数啊。上面那俩是装饰器,用@调用了就是把下面的f那个函数当作参数穿进去然后执行装饰器的代码,再把函数return回来。

点评

胖虎玩蛇大佬出现  发表于 2018-9-10 09:31
发表于 2018-9-9 23:51:04 | 显示全部楼层
  1. *arg 表示任意多个无名参数,类型为tuple
  2. **kwargs 表示关键字参数,类型为dict
复制代码
发表于 2018-9-9 23:51:18 来自手机 | 显示全部楼层
*args,*kwargs是你调用装饰器的函数自己的参数,因为你下面的f()如果带参数的话,原样再给你返回来。
cyo 该用户已被删除
发表于 2018-9-10 00:05:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2018-9-10 00:10:45 | 显示全部楼层
cyo 发表于 2018-9-10 00:05
楼主问的是 func()是什么东西 而不是*args, **kwargs 吧
应该是个函数


对对对,就是这个意思。刚才琢磨楼上的回答好久也没明白
发表于 2018-9-10 00:11:31 | 显示全部楼层
*args把没有关键字的参数打包,**kwargs把有关键字的参数打包,调用的时候再解开,分别形成元组和字典。args和kwargs换成其他词也是一样的,主要在于*和**。

那一行里面这么写说白了就是为了传入动态的参数列表,比较灵活,不用事先定义具体的参数了。
发表于 2018-9-10 00:12:32 | 显示全部楼层
本帖最后由 爱纯粹 于 2018-9-10 00:14 编辑
@decorator_a
def f(x):
    pass

相当于
def f(x):
    pass
f = decorator_a(f)

所以这里的 func 参数是函数 f
 楼主| 发表于 2018-9-10 00:13:18 | 显示全部楼层
kloudmuka 发表于 2018-9-10 00:11
*args把没有关键字的参数打包,**kwargs把有关键字的参数打包,调用的时候再解开,分别形成元组和字典。arg ...

大佬麻烦看下5楼
发表于 2018-9-10 00:19:39 | 显示全部楼层

func  是你下面2个装饰器装饰的那个函数 f,他在调用的时候经历了那2个装饰器
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2026-3-9 14:06 , Processed in 0.100132 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表