python调用函数方法_python函数调用的四种方式 --基础重点

第一种:参数按顺序从第一个参数往后排#标准调用

#-*- coding: UTF-8 -*-

defnormal_invoke(x, y):print "--normal_invoke:--"

print "x is %d" %xprint "y is %d" %y

#标准调用

normal_invoke(1, 2)

运行结果:

--normal_invoke:--xis 1yis 2

第二种:#关键字调用

defkeyword_invoke(x, y):print "--keyword_invoke--:"

print "x is %d" %xprint "y is %d" % y

#关键字调用

keyword_invoke(y=1, x=2)

注意:关键调用从哪开始的,从哪以后都必须使用关键字调用除了‘*’收集参数。不能写成这样的:keyword_invoke(y=1, 2),这样就会报错。

运行结果:

--keyword_invoke--:

xis 2yis 1

第三种:#非关键字可变长参数(tuple)def normal_tuple_invoke(x, y=2, *values):

print "--normal_tuple_invoke--"

print "x is %d" %xprint "y is %d" %yfor value invalues:print "tuple's value has", value

#非关键字可变长参数(tuple)

normal_tuple_invoke(1, 3, 'xyz', 123.4)

注意:收集参数 ‘*’当你参数不确定有多少是你可是使用它,他会把不确定的部分存在values元组中,当然这个元组名字要看‘*’后面跟的是啥了。

运行结果:

--normal_tuple_invoke--xis 1yis 3tuple'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" %xprint "y is %d" %yfor key invalue_dict:print "key is", keyprint "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--xis 2yis 1keyisarg1

valueisput at the last

keyisarg2

valueis defProcess finished with exit code 0

第五中:还有一种是以整个函数为参数传回来,目前我知道是装饰器在使用

装饰器实际上就是为了给某程序增添功能,但该程序已经上线或已经被使用,那么就不能大批量的修改源代码,这样是不科学的也是不现实的,因为就产生了装饰器,使得其满足:

不能修改被装饰的函数的源代码

不能修改被装饰的函数的调用方式

满足1、2的情况下给程序增添功能

那么根据需求,同时满足了这三点原则,这才是我们的目的。因为,下面我们从解决这三点原则入手来理解装饰器。

等等,我要在需求之前先说装饰器的原则组成:

< 函数+实参高阶函数+返回值高阶函数+嵌套函数+语法糖 = 装饰器 >

这个式子是贯穿装饰器的灵魂所在!

improt timedeftest():

time.sleep(2)print("test is running!")defdeco(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 isrunning!

the run timeis 3.0009405612945557

关于装饰器我在另一篇文章中有详细解释!

---每天进步一点点!!!

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值