python一些语法糖用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python一些语法糖用法相关的知识,希望对你有一定的参考价值。

@修饰符

  ‘@‘符号用作函数修饰符是python2.4新增加的功能,修饰符必须出现在函数定义前一行,不允许和函数定义在同一行。也就是说@A def f(): 是非法的。 只可以在模块或类定义层内对函数进行修饰,不允许修修饰一个类。一个修饰符就是一个函数,它将被修饰的函数做为参数,并返回修饰后的同名函数或其它可调用的东西。

  本质上讲,装饰符@类似于回调函数,把其它的函数(暂且称为目的参数)作为自己的入参,在目的函数执行前,执行一些自己的操作,比如:计数、打印一些提示信息等,然后返回目的函数。下面列举一个简单的例子。

import time

def time(func):
    print(time.ctime())
    return func()
    
@time  # 从这里可以看出@time 等价于 time(xxx()),但是这种写法你得考虑python代码的执行顺序
def xxx():
    print(Hello world!)

运行结果:
Wed Jul 26 23:01:21 2017
Hello world!

*args和**kwargs

  当函数的参数不确定时,可以使用*args 和**kwargs,*args 没有key值,**kwargs有key值。这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。例如:foo(name,age,date=newdate,birthday=date) 

以上是关于python一些语法糖用法的主要内容,如果未能解决你的问题,请参考以下文章

Python语法糖系列

python学习day07 高阶函数 装饰器 语法糖

java语法糖

Java语法糖设计

常用处理数据用法es6 语法糖总结

Python笔记 · With语法糖