首页 > 代码库 > python 函数
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):将一个对象转换成字符串
complex(real[,imag]):将一个对象转换成复数
float(obj):将一个对象转换成浮点型
bool(x):将一个对象转换成布尔类型,非0的都是True,0为False。
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
下面是普通内建函数:
hex(number):将一个对象转换成十六进制,用0x开头。
oct(number):将一个对象转换成八进制,用0o开头。
ord(‘char’):将一个单字符的字符串转换成一个int类型。
chr(number):将一个int类型转换成单字节字符串。
all(iterable):如果迭代器所有值都是True,返回True。
any(iterable):如果迭代器任意对象都是True,返回True。
iter(iterable):创建一个可迭代对象的迭代器。
next(iterable[,default]):返回迭代器的下一个成员。
reversed(sequence):返回一个序列的逆序迭代器。
enumerate(iterable[,start]):接受一个可迭代对象参数,返回一个枚举迭代器,也就是iter的每个元素的index值和iter值组成的元祖。
zip(iter1[,iter2 […]]):返回一个列表,列表中的第n个元素是iter1-iternN中的第N个元素组成的一个元祖。
sorted(iterable[,key=None, reverse=False]):返回排序后的列表。
max(iterable,*[,default=obj,key=func]):返回可迭代对象中的最大值。
min(iterable,*[,default=obj, key=func]):返回可迭代对象中的最小值。
sum(iterable[,start]):求一个可迭代对象中元素的和。
abs(number):返回给定参数的绝对值。
divmod(x,y)= (div,mod):除法及取余,返回包含商和余数的元祖。
pow(x,y):指数操作,x的y次方。
round(number[,ndigits]):四舍五入,第二个参数指定精确到小数点后几位。
dir([obj]):查看函数、模块、类的内容。
repr(obj):返回一个对象的字符串表达式
len(obj):返回对象长度
id(obj):返回对象的身份
range(stop):对象范围
range(start,stop[, step]):对象范围
input([prompt]):输入
print(value,...):输出
open(file,mode=‘r‘,…):打开文件
hash(obj):返回一个对象的哈希值。
globals():返回调用者全局名称空间的字典
locals():返回调用者局部名称空间的字典
classmethod(function):类方法
staticmethod(function):静态方法
super(__class__,<first argument>):类的继承
issubclass(C,B...):c是b的子类返回True,这里类可以是自身的子类。
isinstance(object,type…):object是type中的类型的对象返回True。type可以是类类型,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
python 函数