Python11

函数
def

def用来创建函数,其中标题行由def关键字,函数名和参数组成,def子句剩余部分包括一个可选的文档子串和必需的函数体。

def func_name(args):
    "function document"
    func_body
装饰器

装饰器指函数,它们接受函数对象,具体还是看例子吧,简单明了

@decoTwo
@decoOne
def func(args1,...):
    pass
#上面等价于def func(args1,...):pass
#func = decoTwo(decoOne(func))
#以下是带参数的
@deco(args) # deco()用args做了操作并返回函数对象,返回的函数对象以func作为其参数的装饰器
def func():
    pass
#等价func=deco(args)(func)
参数

python支持默认参数与可变长参数,其中可变长的参数元祖要在位置和默认参数之后,带元组的函数用法如下:

def func([args,] *args_tuple):
    func_body

星号操作符之后的形参作为元组传递给函数,元组保存了所有传递给函数的额外参数,如果没有则元祖为空。在正常情况下如果函数调用与函数定义的参数不匹配会产生TypeError的异常,通过末尾增加一个可变的参数列表可以处理超出数目的参数,这些超出数目的参数会被添加到参数元组,对于不定数目或者额外集合的关键字,参数被放入一个字典中,同时为了区分关键字和非关键字非正式参数,使用了(**)。

>>> def func(arg1,arg2="default",*nc,**nk):
...     print("arg1:%s" %(arg1))
...     print("arg2:%s" %(arg2))
...     for each in nc:
...             print("arg3:%s"%(each))
...     for key in nk.keys():
...             print("arg4:%s:%s" %(key,nk[key]))
...
>>> func("A")
arg1:A
arg2:default
>>> func("A","selfParam")
arg1:A
arg2:selfParam
>>> func("A","selfPram","B","C",name="python",study="yes")
arg1:A
arg2:selfPram
arg3:B
arg3:C
arg4:name:python
arg4:study:yes
函数式编程

lambda:用于创建匿名函数,一个完整的lambda语句代表一个表达式,这个表达式的定义体要和声明放在一行,参数是可选的,如果使用参数,则参数通常是表达式的一部分,lambda主要用于返回可调用的函数对象,这有点类似一个函数的单行版本,起初刚准备下结论与C++的内联类似,但看了书中下一句就发现自己想多了~~,lambda语句的目的是由于性能原因,在调用时绕过函数的栈分配,创建了一个框架对象。

lambda [arg1[,arg2,...argN]]:expression

例:

>>> a=lambda x,y=10:x+y
>>> a(20)
30
>>> a(20,30)
50
>>> b=lambda *z:z
>>> b(23,'adf')
(23, 'adf')
>>> b()
()
>>> b('adsf')
('adsf',)
global

将全局变量的名字声明在一个函数体内的时候,全局变量的名字会被局部变量覆盖,因此为了明确使用一个已命名的全局变量,可以在函数体内用global声明全局变量而无须建立新的局部变量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值