python函数内部类 python函数内部定义函数

python中类内部的函数可以互相调用吗?可以调用,比如下面,common_func被多个函数调用 。
class MyClass:
def __init__(self):
pass
def func1(self):
# do something
self.common_func()
def func2(self):
# do something
self.common_func()
def common_func(self):
pass
python函数里定义的类#Python 2.5
#这个可以用修饰器来完成
#但是一般不会限制参数类型
#给python函数内部类你个思路:
def argfilter(*types):
def deco(func):#这是修饰器
def newfunc(*args):#新python函数内部类的函数
if len(types)==len(args):
correct = True
for i in range(len(args)):
if not isinstance(args[i], types[i]):#判断类型
correct = False
if correct:
return func(*args)#返回原函数值
else:
raise TypeError
else:
raise TypeError
return newfunc#由修饰器返回新python函数内部类的函数
return deco#返回作为修饰器python函数内部类的函数
@argfilter(int, str)#指定参数类型
def func(i, s):#定义被修饰的函数
print i, s
#之后python函数内部类你想限制类型的话, 就这样:
#@argfilter(第一个参数的类名, 第二个参数的类名, ..., 第N个参数的类名)
#def yourfunc(第一个参数, 第一个参数, ..., 第N个参数):
#...
#
#相当于:
#def yourfunc(第一个参数, 第一个参数, ..., 第N个参数):
#...
#yourfunc = argfilter(第一个参数的类名, 第二个参数的类名, ..., 第N个参数的类名)(yourfunc)
Python中的常用内置函数有哪些呢?(1)Lambda函数
用于创建匿名函数,即没有名称的函数 。它只是一个表达式,函数体比def简单很多 。当我们需要创建一个函数来执行单个操作并且可以在一行中编写时,就可以用到匿名函数了 。
Lamdba的主体是一个表达式,而不是一个代码块 。仅仅能在lambda表达式中封装有限的逻辑进去 。
利用Lamdba函数,往往可以将代码简化许多 。
(2)Map函数
会将一个函数映射到一个输入列表的所有元素上,比如我们先创建了一个函数来返回一个大写的输入单词,然后将此函数应有到列表colors中的所有元素 。
我们还可以使用匿名函数lamdba来配合map函数,这样可以更加精简 。
(3)Reduce函数
当需要对一个列表进行一些计算并返回结果时,reduce()是个非常有用的函数 。举个例子 , 当需要计算一个整数列表所有元素的乘积时,即可使用reduce函数实现 。
它与函数的最大的区别就是,reduce()里的映射函数(function)接收两个参数 , 而map接收一个参数 。
(4)enumerate函数
用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中 。
它的两个参数 , 一个是序列、迭代器或其他支持迭代对象;另一个是下标起始位置,默认情况从0开始,也可以自定义计数器的起始编号 。
(5)Zip函数
用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组 , 然后返回由这些元组组成的列表
当我们使用zip()函数时,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同 。
核心解密Python函数在(类与函数之间)和(类与类之间)互相调用 首先来看一个函数间的调用
类方法:
执行结果:
metaclass能有什么用处,先来个感性的认识:
1.1 在wiki上面 , metaclass是这样定义的:In object-oriented programming,
【python函数内部类 python函数内部定义函数】

推荐阅读