-
Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。看例子: class Person(object): def __init__(self, name): self.name = name self._title = 'Mr' self.__job = 'Student' p = Person('Bob') print p.name # => Bob print p._title # => Mr print p.__job # => Error Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Person' object has no attribute '__job'查看全部
-
有了__init__()方法,每个Person实例在创建时,都会有 name、gender 和 birth 这3个属性,并且,被赋予不同的属性值,访问属性使用.操作符:查看全部
-
Person 类的实例的 list,并给两个实例的 name 赋值,然后按照 name 进行排序。查看全部
-
判断两个类的地址是否相等查看全部
-
把新版本的特性带到旧版本中查看全部
-
检查导入的包是否正确(是否有)有则导入,没有则导入 下一个提示的包查看全部
-
检测服务器上是否有相应的文件夹查看全部
-
如何区分包和目录 *包下面有个__init__.py文件查看全部
-
忽视大小写,将很多个参数缩减为少点的参数,简化代码,现在初学,还是麻烦点代码写吧,知道有这个功能就行了查看全部
-
Python内置的functools可以用来自动化完成这个“复制”的任务: import functools def log(f): @functools.wraps(f) def wrapper(*args, **kw): print 'call...' return f(*args, **kw) return wrapper 最后需要指出,由于我们把原函数签名改成了(*args, **kw),因此,无法获得原函数的原始参数信息。即便我们采用固定参数来装饰只有一个参数的函数: def log(f): @functools.wraps(f) def wrapper(x): print 'call...' return f(x) return wrapper 也可能改变原函数的参数名,因为新函数的参数名始终是 'x',原函数定义的参数名不一定叫 'x'。查看全部
-
@log('DEBUG') def my_func(): pass 把上面的定义翻译成高阶函数的调用,就是: my_func = log('DEBUG')(my_func) 上面的语句看上去还是比较绕,再展开一下: log_decorator = log('DEBUG') my_func = log_decorator(my_func) 上面的语句又相当于: log_decorator = log('DEBUG') @log_decorator def my_func(): pass 所以,带参数的log函数首先返回一个decorator函数,再让这个decorator函数接收my_func并返回新函数: def log(prefix): def log_decorator(f): def wrapper(*args, **kw): print '[%s] %s()...' % (prefix, f.__name__) return f(*args, **kw) return wrapper return log_decorator @log('DEBUG') def test(): pass print test() 执行结果: [DEBUG] test()... None查看全部
-
计算阶乘,传入一个函数查看全部
-
filter函数 lambda匿名函数 中间是条件,后边是元素查看全部
-
函数内部嵌套函数,跟c++一样,所有编程都是一样的查看全部
-
reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值 reduce()接收的函数f需要两个参数,并返回一个结果,以便继续进行下一轮计算。查看全部
举报
0/150
提交
取消