743 1

[问答] 请教一个问题 [推广有奖]

  • 0关注
  • 0粉丝

本科生

28%

还不是VIP/贵宾

-

威望
0
论坛币
949 个
通用积分
0
学术水平
6 点
热心指数
10 点
信用等级
0 点
经验
673 点
帖子
66
精华
0
在线时间
37 小时
注册时间
2017-4-17
最后登录
2017-12-5

楼主
香蕉菠萝大鸭梨 发表于 2017-9-3 16:50:45 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
flist = []  
for i in range(3):     
     def foo(x): print x + i  
     flist.append(foo)     
  
for f in flist:  
     f(2)  
  
上面这段代码的输出是4,4,4。是因为函数f加入到flist列表里时,i还未被赋值,只是当执行的时候才去找i的值,而第一个for循环结束后,i为2,所以最终输出都是4。  
但是如果把代码修改如下,输出就变为2,3,4。这是为什么? 函数加入flist列表时,i应该同样也未被赋值,导致y也并未被赋值,而是要等到第二个for循环时才计算i和y吧? 请大家指点,谢谢!  
  
flist = []  
for i in range(3):     
     def foo(x,y=i): print x + y  
     flist.append(foo)     
  
for f in flist:  
     f(2)  
  
--
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:append print range for循环 list

沙发
徐博 发表于 2017-9-3 16:53:19
每个循环中的y是不一样的东西,赋值生成新的变量  
    
     flist = []  
     for i in range(3):    
         def foo(x): print x + i  
         flist.append(foo)    

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-8 01:41