标签:keyword 一点 running ring value def 开始 process 文章
第一种:参数按顺序从第一个参数往后排#标准调用
# -*- coding: UTF-8 -*- def normal_invoke(x, y): print "--normal_invoke:--" print "x is %d" %x print "y is %d" %y
#标准调用 normal_invoke(1, 2)
运行结果:
--normal_invoke:-- x is 1 y is 2
第二种:#关键字调用
def keyword_invoke(x, y): print "--keyword_invoke--:" print "x is %d" % x print "y is %d" % y
#关键字调用 keyword_invoke(y=1, x=2)
注意:关键调用从哪开始的,从哪以后都必须使用关键字调用除了‘*’收集参数。不能写成这样的:keyword_invoke(y=1, 2),这样就会报错。
运行结果:
--keyword_invoke--: x is 2 y is 1
第三种:#非关键字可变长参数(tuple) def normal_tuple_invoke(x, y=2, *values):
print "--normal_tuple_invoke--" print "x is %d" % x print "y is %d" % y for value in values: print "tuple‘s value has", value
#非关键字可变长参数(tuple)
normal_tuple_invoke(1, 3, ‘xyz‘, 123.4)
注意:收集参数 ‘*’当你参数不确定有多少是你可是使用它,他会把不确定的部分存在values元组中,当然这个元组名字要看‘*’后面跟的是啥了。
运行结果:
--normal_tuple_invoke-- x is 1 y is 3 tuple‘s value has xyz tuple‘s value has 123.4
第四种:#关键字可变长参数(dict)
def keyword_dict_invoke(x, y=2, **value_dict): print "--keyword_dict_invoke--" print "x is %d" % x print "y is %d" % y for key in value_dict: print "key is ", key print "value is ", value_dict[key]
#关键字可变长参数(dict)
keyword_dict_invoke(y=1, x=2, arg2=‘def‘, arg1=‘put at the last‘)
注意:**value_dict 传回来的参数以字典:key-value的形式存放,单招顺序首先传回来的是:key,其次是:value。
运行结果:
--keyword_dict_invoke-- x is 2 y is 1 key is arg1 value is put at the last key is arg2 value is def Process finished with exit code 0
第五中:还有一种是以整个函数为参数传回来,目前我知道是装饰器在使用
装饰器实际上就是为了给某程序增添功能,但该程序已经上线或已经被使用,那么就不能大批量的修改源代码,这样是不科学的也是不现实的,因为就产生了装饰器,使得其满足:
那么根据需求,同时满足了这三点原则,这才是我们的目的。因为,下面我们从解决这三点原则入手来理解装饰器。
等等,我要在需求之前先说装饰器的原则组成:
这个式子是贯穿装饰器的灵魂所在!
improt time def test(): time.sleep(2) print("test is running!") def deco(func): start = time.time() func() #2 stop = time.time() print(stop-start) deco(test) #1
我们来看一下这段代码,在#1处,我们把test当作实参传递给形参func,即func=test。注意,这里传递的是地址,也就是此时func也指向了之前test所定义的那个函数体,可以说在deco()内部,func就是test。在#2处,把函数名后面加上括号,就是对函数的调用(执行它)。因此,这段代码运行结果是:
test is running! the run time is 3.0009405612945557
关于装饰器我在另一篇文章中有详细解释!
---每天进步一点点!!!
标签:keyword 一点 running ring value def 开始 process 文章
原文地址:https://www.cnblogs.com/insane-Mr-Li/p/9062802.html