python 函数

函数

python函数不需要先单独申明,直接先定义然后调用即可。


函数定义:

def function_name([arguments]):

          "optionaldocumentation string"

    function_suite



内嵌函数定义:

def function1([arguments1]):

        “optionaldocumentation string1”

   deffunction2([arguments2]):

                   “optionaldocumentation string2”

       function2_suite

 function1_suite



------------------------------------

函数参数:

位置参数:函数传递参数默认按照函数定义的参数列表顺序,而且参数个数要相同。

默认参数:就是在函数定义时就指定一个默认值,使用默认参数在调用时可以不传参,默认参数在定义时放在位置参数后面。

关键字参数:使用关键字参数在函数调用中指定参数值,可以打乱默认参数的顺序。


函数作为函数参数:

函数的参数可以是函数,也就是函数可以作为另一个函数的参数。


可变长度的参数:

非关键字的可变长参数在位置参数和默认参数之后,通常是元祖:

deffunction_name([formal_args,] *vargs_tuple):


关键字的可变长参数应该放在常规参数和非关键字的可变参数之后:

deffunction_name([formal_args,] [*vargs_tuple, ] **vargsd):

关键字的可变长参数是字典形式,关键字和值组成一个字典键值对。


------------------------------------

返回值:

函数的默认返回值是None


return语句:

可以用return从函数返回指定类型值。


------------------------------------

变量作用域:

在函数内部定义的变量是局部变量,在函数外部定义的是全局变量;

在局部定义的变量在局部以外的范围不能访问。

在局部默认是先从局部作用域开始搜索,如果局部作用域没有才从全局作用域搜索,如果是同名变量优先使用局部变量。


global语句:

global var1[, var2[, …varN]]

在局部定义的变量用global修饰之后在局部之外可以访问。


------------------------------------

lambda与匿名函数:

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

等效于:

def nonamefunction([arg1[, arg2, ...argN]]) : return expression

lambda结构赋给一个对象(变量,元组,列表等),通过对象来引用。


和函数式编程相关的内建函数:

filter(function,iterable):调用布尔函数function来迭代遍历seq中的每个元素,返回一个使function返回值为True的元素的列表。

map(func,*iterable):将func作用于iterable指向的序列的每个元素,返回func返回值的列表。如果iterable指向多个序列,每次func作用于所有序列中位置相同的元素。


------------------------------------

__builtins__模块内建的函数:

内建函数是用c写的在__builtins__模块中,是builtin_function_or_method类型的。

用户自定义的函数使用python写的,在全局作用域,是function类型的。

工厂函数的内建方法也是函数,类型是method_descriptor

自定义的方法,绑定实例类型是method,没有绑定类型是function


下面是特殊的内建函数,因为同时也是内建模块,所以叫工厂函数:

int(obj):将一个对象转换成整型。

str(obj):将一个对象转换成字符串

complexreal[,imag]):将一个对象转换成复数

floatobj):将一个对象转换成浮点型

boolx):将一个对象转换成布尔类型,非0的都是True0False

tuple[iterable]):将一个可迭代对象转换成元祖

list[iterable]):将可迭代对象转换成列表

dict[mapping]):将映射关系转换成字典

type(obj):返回对象类型

set(iterable):将可迭代对象转换成可变集合

frozenset(iterable):将可迭代对象转换成不可变集合

property(fget=None,fset=None, fdel=None, doc=None)

bytes

bytearray

memoryview

object

slice


下面是普通内建函数:

hexnumber):将一个对象转换成十六进制,用0x开头。

octnumber):将一个对象转换成八进制,用0o开头。

ord(‘char’):将一个单字符的字符串转换成一个int类型。

chrnumber):将一个int类型转换成单字节字符串。


all(iterable):如果迭代器所有值都是True,返回True

any(iterable):如果迭代器任意对象都是True,返回True

iter(iterable):创建一个可迭代对象的迭代器。

next(iterable[,default]):返回迭代器的下一个成员。

reversed(sequence):返回一个序列的逆序迭代器。

enumerateiterable[,start]):接受一个可迭代对象参数,返回一个枚举迭代器,也就是iter的每个元素的index值和iter值组成的元祖。


zip(iter1[,iter2 […]]):返回一个列表,列表中的第n个元素是iter1-iternN中的第N个元素组成的一个元祖。

sorted(iterable[,key=None, reverse=False]):返回排序后的列表。

maxiterable*[,default=obj,key=func]):返回可迭代对象中的最大值。

miniterable,*[,default=obj, key=func]):返回可迭代对象中的最小值。

sum(iterable[,start]):求一个可迭代对象中元素的和。


abs(number):返回给定参数的绝对值。

divmod(x,y)= (div,mod):除法及取余,返回包含商和余数的元祖。

pow(x,y):指数操作,xy次方。

round(number[,ndigits]):四舍五入,第二个参数指定精确到小数点后几位。


dir([obj]):查看函数、模块、类的内容。

repr(obj):返回一个对象的字符串表达式

len(obj):返回对象长度

idobj):返回对象的身份

range(stop):对象范围

rangestart,stop[, step]:对象范围

input([prompt]):输入

print(value,...):输出

open(file,mode=‘r‘,…):打开文件

hashobj):返回一个对象的哈希值。

globals():返回调用者全局名称空间的字典

locals():返回调用者局部名称空间的字典

classmethod(function):类方法

staticmethod(function):静态方法

super(__class__,<first argument>):类的继承

issubclassCB...:cb的子类返回True,这里类可以是自身的子类。

isinstance(object,type…):objecttype中的类型的对象返回Truetype可以是类类型,object是类或子类的实例返回True

hasattr(object,name):对象(实例)是否有属性name

getattr(object,name[, default]):取得对象的属性值,如果属性不存在返回AttributeError,除非设置默认返回值。

setattr(object,name, value):设置一个已存在的或新添加的对象的属性值。

delattr(object,name):从一个对象中删除属性。

vars([object]):没有参数等于locals(),有参数等于object.__dict__;返回的是一个字典。

callable(obj):如果obj可调用返回True

compile(source,filename, mode[, flags[, dont_inherit]])

将代码source编译成可执行的代码对象,filename是存放代码对象的名字,通常为空,mode=eval用于可求值的表达式,mode=single用于单一可执行语句,mode=exec用于可执行语句组。

eval(source[,globals[, locals]]):对source字符串或代码对象求值。

exec(object[,globals[, locals]]):执行object

format(value[,format_spec]):返回value.__format__

pow(x,y[, z]):等效于x**y,(x**y)% z.

ascii(object):和repr差不多。

bin(number):返回一个整数的二进制形式。


下面是特殊内建函数:

_Printer

copyright

credits

license


Quitter

exit

quit


------------------------------------

装饰器:

@decorator

def func(args):

相当于:

decorator(func)


------------------------------------

生成器:

生成器就是一个带yield语句的函数,生成器能暂停执行并返回一个中间结果。

使用生成器的next()方法可以从离开的地方继续执行。


def  function_name([arguments]):

optionaldocumentation string”

 yield yield_suite

  function_suite


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。