-
要定义关键字参数,使用 **kw;
除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。
for k, v in kw.iteritems(): setattr(self, k, v)
查看全部 -
try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
try:
import json
except:
import simplejson as json
先倒入json,如果没有在倒入simplejson
查看全部 -
包相当于目录(文件夹)
包下必须有_init_.py 这个文件,此文件为空文件,加入这个文件后,编辑器才会把这个目录理解为包
查看全部 -
def is_not_empty(s):
return s and len(s.strip()) > 0
改为匿名函数:
lambda s : s and len(s.strip()) > 0
查看全部 -
匿名函数 lambda x: x * x 实际上就是:
def f(x): return x * x
关键字lambda 表示匿名函数,冒号前面的 x 表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不写return,返回值就是该表达式的结果。
查看全部 -
高阶函数定义
查看全部 -
除了从一个父类继承外,Python允许从多个父类继承,称为多重继承。
查看全部 -
Python提供了open()函数来打开一个磁盘文件,并返回 File 对象。File对象有一个read()方法可以读取文件内容:
例如,从文件读取内容并解析为JSON结果:
import json f = open('/path/to/file.json', 'r') print json.load(f)
由于Python的动态特性,json.load()并不一定要从一个File对象读取内容。任何对象,只要有read()方法,就称为File-like Object,都可以传给json.load()。
这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查参数类型,只要方法存在,参数正确,就可以调用。
查看全部 -
类也可以绑定属性,每个实例都可以调用它。但要给类属性赋值时只能用类.属性。不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性,该实例的实例属性和类属性同名,实例属性优先级高,实例.属性访问时返回实例属性。
查看全部 -
如果一个属性由双下划线开头(__),该属性就无法被外部访问.如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。
查看全部 -
要定义关键字参数,使用 **kw;
除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性
class Person(object):
def __init__(self, name, gender, birth, **kw): #后续创建实例时可额外加任意个kw=args
self.name = name
self.gender = gender
self.birth = birth
for k, v in kw.iteritems():
setattr(self, k, v)
xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student',prejob='student')查看全部 -
类通过 class 关键字定义。以 Person 为例,定义一个Person类如下:
class Person(object): pass
类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的
创建实例使用 类名+(),类似函数调用的形式创建
xiaoming = Person()
xiaohong = Person()查看全部 -
python中 __call__
在Python中,函数其实是一个对象:
>>> f = abs >>> f.__name__ 'abs' >>> f(-123) 123
由于 f 可以被调用,所以,f 被称为可调用对象。
所有的函数都是可调用对象。
一个类实例也可以变成一个可调用对象,只需要实现一个特殊方法__call__()。
我们把 Person 类变成一个可调用对象:
class Person(object): def __init__(self, name, gender): self.name = name self.gender = gender def __call__(self, friend): print 'My name is %s...' % self.name print 'My friend is %s...' % friend
现在可以对 Person 实例直接调用:
>>> p = Person('Bob', 'male') >>> p('Tim') My name is Bob... My friend is Tim...
单看 p('Tim') 你无法确定 p 是一个函数还是一个类实例,所以,在Python中,函数也是对象,对象和函数的区别并不显著。
任务
改进一下前面定义的斐波那契数列:
class Fib(object): ???
请加一个__call__方法,让调用更简单:
查看全部 -
python中的<em>args和</em><em>kw:<br/><code>*args</code>:表示就是将实参中按照位置传值,多余的值都给args,且以</em><em>元组</em><em>的方式呈现<br/><code>**kw</code>:表示就是形参中按照关键字传值,多余的值都给kw,且以</em><em>字典</em>的方式呈现查看全部
-
但是,Python 3.x已经改进了整数的除法运算,“/”除将得到浮点数,“//”除才仍是整数
要在Python 2.7中引入3.x的除法规则,导入__future__的division:
>>> from __future__ import division >>> print 10 / 3 3.3333333333333335
查看全部
举报