找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 119|回复: 12

请教个python问题

[复制链接]

72

主题

631

回帖

1544

积分

金牌会员

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



这个func(*args, **kwargs)是什么东西?如果是函数的话是什么时候定义的呢?
解惑的大佬10元小红包感谢,谢谢了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

342

主题

2835

回帖

6788

积分

论坛元老

积分
6788
发表于 2018-9-9 23:48:41 | 显示全部楼层
参数啊。上面那俩是装饰器,用@调用了就是把下面的f那个函数当作参数穿进去然后执行装饰器的代码,再把函数return回来。
回复

使用道具 举报

100

主题

1321

回帖

3024

积分

论坛元老

积分
3024
发表于 2018-9-10 09:31:00 | 显示全部楼层
[ol]
  • *arg 表示任意多个无名参数,类型为tuple
  • **kwargs 表示关键字参数,类型为dict[/ol]复制代码
  • 回复

    使用道具 举报

    342

    主题

    2835

    回帖

    6788

    积分

    论坛元老

    积分
    6788
    发表于 2018-9-9 23:51:04 | 显示全部楼层
    *args,*kwargs是你调用装饰器的函数自己的参数,因为你下面的f()如果带参数的话,原样再给你返回来。
    回复

    使用道具 举报

    72

    主题

    631

    回帖

    1544

    积分

    金牌会员

    积分
    1544
     楼主| 发表于 2018-9-9 23:51:18 | 显示全部楼层

    cyo 发表于 2018-9-10 00:05

    楼主问的是 func()是什么东西 而不是*args, **kwargs 吧
    应该是个函数


    对对对,就是这个意思。刚才琢磨楼上的回答好久也没明白
    回复

    使用道具 举报

    7

    主题

    72

    回帖

    185

    积分

    注册会员

    积分
    185
    发表于 2018-9-10 00:05:58 | 显示全部楼层
    *args把没有关键字的参数打包,**kwargs把有关键字的参数打包,调用的时候再解开,分别形成元组和字典。args和kwargs换成其他词也是一样的,主要在于*和**。

    那一行里面这么写说白了就是为了传入动态的参数列表,比较灵活,不用事先定义具体的参数了。
    回复

    使用道具 举报

    24

    主题

    487

    回帖

    1110

    积分

    金牌会员

    积分
    1110
    发表于 2018-9-10 00:10:45 | 显示全部楼层
    本帖最后由 爱纯粹 于 2018-9-10 00:14 编辑
    "

    相当于
    "

    所以这里的 func 参数是函数 f
    回复

    使用道具 举报

    72

    主题

    631

    回帖

    1544

    积分

    金牌会员

    积分
    1544
     楼主| 发表于 2018-9-10 00:05:00 | 显示全部楼层

    kloudmuka 发表于 2018-9-10 00:11

    *args把没有关键字的参数打包,**kwargs把有关键字的参数打包,调用的时候再解开,分别形成元组和字典。arg ...

    大佬麻烦看下5楼
    回复

    使用道具 举报

    40

    主题

    211

    回帖

    616

    积分

    高级会员

    积分
    616
    发表于 2018-9-10 00:11:31 | 显示全部楼层

    风在吹屌在飞 发表于 2018-9-10 00:13

    大佬麻烦看下5楼

    func  是你下面2个装饰器装饰的那个函数 f,他在调用的时候经历了那2个装饰器
    wo31400 发表于 2018-9-10 00:19

    func  是你下面2个装饰器装饰的那个函数 f,他在调用的时候经历了那2个装饰器 ...

    哦哦,func()就是被装饰的那个函数,它作为参数被传进来了。对吗
    回复

    使用道具 举报

    72

    主题

    631

    回帖

    1544

    积分

    金牌会员

    积分
    1544
     楼主| 发表于 2018-9-10 00:12:32 | 显示全部楼层
    本帖最后由 wo31400 于 2018-9-10 00:30 编辑

    风在吹屌在飞 发表于 2018-9-10 00:25

    哦哦,func()就是被装饰的那个函数,它作为参数被传进来了。对吗


    是的,就是这个意思,他就是那个被传入的参数,然后被最后return func(他原来的参数)  最后 func也被执行了,但是他上面经历了那两个装饰器
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-5-9 13:13 , Processed in 0.020388 second(s), 4 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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