python中@的用法
@是一个装饰器,针对函数,起调用传参的作用。
有修饰和被修饰的区别,‘@function'作为一个装饰器,用来修饰紧跟着的函数(可以是另一个装饰器,也可以是函数定义)。
代码1
def funA(desA): print("It's funA") def funB(desB): print("It's funB") @funA def funC(): print("It's funC")
结果1
It's funA
分析1
@funA 修饰函数定义def funC(),将funC()赋值给funA()的形参。
执行的时候由上而下,先定义funA、funB,然后运行funA(funC())。
此时desA=funC(),然后funA()输出‘It's funA'。
代码2
def funA(desA): print("It's funA") def funB(desB): print("It's funB") @funB @funA def funC(): print("It's funC")
结果2
It's funA
It's funB
分析2
@funB 修饰装饰器@funA,@funA 修饰函数定义def funC(),将funC()赋值给funA()的形参,再将funA(funC())赋值给funB()。
执行的时候由上而下,先定义funA、funB,然后运行funB(funA(funC()))。
此时desA=funC(),然后funA()输出‘It's funA';desB=funA(funC()),然后funB()输出‘It's funB'。
代码3
def funA(desA): print("It's funA") print('---') print(desA) desA() print('---') def funB(desB): print("It's funB") @funB @funA def funC(): print("It's funC")
结果3
It's funA
< function funC at 0x000001A5FF763C80 >
It's funC
It's funB
分析3
同上,为了更直观地看参数传递,打印desA,其传的是funC()的地址,即desA现在为函数desA()。
执行desA()即执行funC(),desA=desA()=funC()。
代码4
def funA(desA): print("It's funA") def funB(desB): print("It's funB") print('---') print(desB) @funB @funA def funC(): print("It's funC")
结果4
It's funA
It's funB
None
分析4
上面将funC()作为参数传给funA,那么funA(funC())怎么传给funB()呢?打印desB,发现并没有参数传递。
是否可以理解为当‘装饰器' 修饰 ‘装饰器'时,仅是调用函数。
以上所述是小编给大家介绍的python中@的用法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍python中 * 的用法详解,包括了python中 * 的用法详解的使用技巧和注意事项,需要的朋友参考一下 1、表示乘号 2、表示倍数,例如: 打印结果(打印3次): hi hi hi 3、单个 * (1)、如:*parameter是用来接受任意多个参数并将其放在一个元组中。 (2)、函数在调用多个参数时,在列表、元组、集合、字典及其他可迭代对象作为实参,并在前面加 * 如 *
本文向大家介绍详解详解Python中writelines()方法的使用,包括了详解详解Python中writelines()方法的使用的使用技巧和注意事项,需要的朋友参考一下 writelines()方法写入字符串序列到文件。该序列可以是任何可迭代的对象产生字符串,字符串为一般列表。没有返回值。 语法 以下是writelines()方法的语法: 参数 sequence -- 这是字符串的
本文向大家介绍Python中的super用法详解,包括了Python中的super用法详解的使用技巧和注意事项,需要的朋友参考一下 一、问题的发现与提出 在Python类的方法(method)中,要调用父类的某个方法,在Python 2.2以前,通常的写法如代码段1: 代码段1: 即,使用非绑定的类方法(用类名来引用的方法),并在参数列表中,引入待绑定的对象(self),从而达到调用父类的目的。
本文向大家介绍Python中itertools的用法详解,包括了Python中itertools的用法详解的使用技巧和注意事项,需要的朋友参考一下 iterator 循环器(iterator)是对象的容器,包含有多个对象。通过调用循环器的next()方法 (next()方法,在Python 3.x中),循环器将依次返回一个对象。直到所有的对象遍历穷尽,循环器将举出StopIteration错误。
本文向大家介绍python中defaultdict的用法详解,包括了python中defaultdict的用法详解的使用技巧和注意事项,需要的朋友参考一下 初识defaultdict 之前在使用字典的时候, 用的比较随意, 只是简单的使用dict. 然而这样在使用不存在的key的时候发生KeyError这样的一个报错, 这时候就该defaultdict登场了. 如何使用defaultdict 可以
本文向大家介绍详解python的ORM中Pony用法,包括了详解python的ORM中Pony用法的使用技巧和注意事项,需要的朋友参考一下 Pony是Python的一种ORM,它允许使用生成器表达式来构造查询,通过将生成器表达式的抽象语法树解析成SQL语句。它也有在线ER图编辑器可以帮助你创建Model。 示例分析 Pony语句: 翻译成sql语句就是: Pony语句: 翻译成sql语句就是: 安