为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
变量直接调用函数,好高级!
当实例属性和类属性重名时,实例属性优先级高
p1.address = 'China'并没有改变 Person 的 address,而是给 p1这个实例绑定了实例属性address ,对p1来说,它有一个实例属性address(值是'China'),而它所属的类Person也有一个类属性address
由于Python是动态语言,类属性也是可以动态添加和修改的
如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。
以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。
def calc_prod(lst):
def lazy_calcProd():
sum=1
for x in lst:
sum*=x
return sum
return lazy_calcProd

f=calc_prod([1,2,3,4])()
print(f)
def cmp_ignore_case(s1, s2):

if(isinstance(s1,str) and isinstance(s2,str)):
s1=s1.upper();
s2=s2.upper();
if(s1 >s2):
return 1;
if(s1 <s2):
return -1;
return 0

print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
functools.partial可以把一个参数多的函数变成一个参数少的新函数,少的参数需要在创建时指定默认值,这样,新函数调用的难度就降低了。
functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码创建一个新的函数int2:
def __cmp__(self, s):
if self.score!=s.score:
return s.score-self.score
else:
return cmp(self.name,s.name)
import json

class Students(object):
def __init__(self,list):
self.list=list
def read(self):
return self.list

L=r'["Tim","Bob","Alice"]'
s = Students(L)

print json.load(s)
@土老鳖 你的代码过不了啊
def count():
fs = []
for i in range(1, 4):
def f(i=i):
return i*i
fs.append(f)
return fs
f1, f2, f3 = count()
print f1(), f2(), f3()
这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消