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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
这一节应该是我觉得比较难理解的一节了。。。。不过返回函数这种用法我到现在还没感觉很有必要。。。。可能需要之后深入学习之后才会用到
讲得好不清楚太笼统了 细节什么的都没有 给出答案也不分析一下为什么代码是这样的
# coding= utf-8
#取公约数方法
def gcd(a,b):
print '初始化:a=%s' % a
print '初始化:b=%s' % b
print '################'
if b == 0:
print '规约到b=0:a=%s' % a
print '规约到b=0:b=%s' % b
return a
return gcd(b, a % b)
print gcd(6,8)
测试了一下参考答案中获取分子分母公约数的方法,代码如上所示。可以看到递归调用的过程。
import math

def is_sqr(x):
return math.sqrt(x) == int(math.sqrt(x))

print filter(is_sqr, range(1, 101))
一行表达式 c=a if a>b else b
f1,f2,f3 = [a,b,c]右边列表元素的个数必须和左边变量的个数相等,否则会出错;作用就是把列表中的元素分别赋值给变量
估计很多人没懂这个吧(self.p * r.q + self.q * r.p, self.q * r.q)

在这里p是分子,q是分母
(self.p * r.q + self.q * r.p)这是有理化计算后的分子

(self.q * r.q)这是有理化计算后的分母

r.q是令一个加数的分子,r.p是另一个加数的分母

例如:1/3+3/2 第一个分数的分子乘第二个分数的分母+第一个分数的分母乘第二个分数的分子(也就是交叉相乘再相加)最后得11(这是经过计算后得到的结果的分子)
第一个分数的分母乘第二个分数的分母( self.q * r.q)得到结果是6
-- 使用__future__
from __future__ import unicode_literals
s = 'am I an unicode?'
print isinstance(s, unicode)

-- 加前缀u
s = u'am I an unicode?'
print isinstance(s, unicode)

-- 尝试前缀b
from __future__ import unicode_literals

s = b'am I an unicode?'
print isinstance(s, bytes)

#上面的 运行结果都是True
关于上一章闭包、装饰器可以参考https://blog.csdn.net/u014465934/article/details/80993828
第二种方法(缺少的函数f可以通过lambda解决)
def calc_prod(lst):
def lazy_prod():
return reduce(lambda x,y:x*y,lst)
return lazy_prod

f = calc_prod([1, 2, 3, 4])
print f()
第一种方法(注意是你reduce写f函数时候没有f,所以多一层def)
def calc_prod(lst):
def lazy_prod():
def f(x,y):
return x*y
return reduce(f,lst)
return lazy_prod

f = calc_prod([1, 2, 3, 4])
print f()
def format_name(s):
# return s[:1].upper()+s[1:].lower()
return s.capitalize()

print map(format_name, ['adam', 'LISA', 'barT'])
def format_name(s):
return s[:1].upper()+s[1:].lower()

print map(format_name, ['adam', 'LISA', 'barT'])
python有**,//没有++,-- 手册方面还是菜鸟讲的详细
class Person(object):
def __init__(self, name, score):
self.name = name
self.__score = score

p = Person('Bob', 59)

print p.name
try:
print p.__score
except AttributeError:
print 'attributeError'
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消