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

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
老师,什么时候可以上一些实战教学?

已采纳回答 / 廖雪峰
python有一种表达式可以这么写:y = -x if x < 0 else x从左到右读一遍:y 等于 -x 如果 x<0 否则 x

已采纳回答 / dev_林杰
对的   因为在for循环中变量的数值已经改变了   
这个函数并没有和对象关联起来,即使是在类内部定义的匿名函数
由于参数 x, y 和 f 都可以任意传入,如果 f 传入其他函数,就可以得到不同的返回值。

最赞回答 / 殷凤君OliviaYi
f=calc_sum()    --->返回值:无f                        ---> 返回函数:lazy_sum()f()                     ---->返回值:lazy_sum的值
题目很奇怪耶,有些不沾边嘛
def count():
fs = []
for i in range(1, 4):
def f6_1(i):
def f6_2():
return i*i
return f6_2
fs.append(f6_1(i))
return fs

f1, f2, f3 = count()
print f1(), f2(), f3()
中文前面要加入
#!/usr/bin/env python
# -*- coding: utf-8 -*-
喜欢py的语法

最赞回答 / a412739861
因为f(i)在i的值没发生变动的时候,就已经完成计算了。所以f(i)是已经算出来的具体数值了而非之前的调用函数——lazy_sum之类的效果。这个数值已经计算好了。然后i继续迭代。与这里的f(i)已经无关了。

最新回答 / ffan
对,执行f1, f2, f3 = count()的时候,不会去运行def f():这个函数,但是for循环却会一直执行,而且每次都会将f()追加到fs,但因为没有传入i值,所以每次循环下来追加的都是f(),即为同一个数值,当然会覆盖掉之前的f()!!所以当输入print f1()的时候,此时运行def f():这个函数的时候,i值变为3,返回的就是9了。不知道理解的对不对,如有错,望指正!!
def __init__(self):
pass
def __call__(self, num):

def g(x):
if x == 0:
return 0
if x == 1:
return 1
else:
return g(x-2) + g(x-1)

return [g(x) for x in range(num)]
__str__ 这不是java的toString()嘛。哈哈
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消