首页 > 编程 > Python > 正文

Python11

2019-11-06 06:58:49
字体:
来源:转载
供稿:网友

函数

def

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

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

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

@decoTwo@decoOnedef 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:Aarg2:default>>> func("A","selfParam")arg1:Aarg2:selfParam>>> func("A","selfPram","B","C",name="python",study="yes")arg1:Aarg2:selfPramarg3:Barg3:Carg4:name:pythonarg4: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声明全局变量而无须建立新的局部变量。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表