这是我第一次在这里发布问题,因此,如果我违反任何规则,我深表歉意。谢谢
我的问题是,为什么要进行python3打印 3 1个 2 4 代替 3 4 1个 2 4.下面的代码? 我的论据是...如果python要打印2 [这意味着从print_one中读取print_two],为什么python在打印1之前不先打印4?
非常感谢。
def print_one(x):
print(1)
def print_two():
print(2)
return x()
return print_two
def print_three(x):
print(3)
def print_four():
print(4)
return print_four
def major_print():
print("major print")
major_print = print_one(print_three(major_print))
if __name__ == "__main__":
major_print()
答案 0 :(得分:0)
这很容易解释:
两个装饰函数中的第一个print语句在装饰函数后立即执行。如果省略函数调用,则会得到输出
3
1
这是因为先调用内部装饰器print_three
,然后再装饰print_one
。
当调用函数时,将执行包装函数(修改原始函数)中的print语句。因为print_four
不使用装饰器的参数,所以您基本上只用print_two
装饰它。因此,等同于最终功能的将是
def major_print():
print(2)
print(4)
return None
通过这种方式,您可以得到所说的数字序列3124作为控制台输出。