星空网 > 软件开发 > 操作系统

廖雪峰python教程的第一个疑问

函数的参数一节中提到:

  def add_end(L = []);

    L.append('END')

    return L

正常调用add_end时(也就是有参数传入时):

  

  >>> add_end([1, 2, 3])  [1, 2, 3, 'END']  >>> add_end(['x', 'y', 'z'])  ['x', 'y', 'z', 'END']

当使用默认参数时:
>>> add_end()['END']

>>> add_end()['END', 'END']>>> add_end()['END', 'END', 'END']

廖雪峰解释如下:

  Python函数在定义的时候,默认参数L的值就被计算出来了,即[],因为默认参数L也是一个变量,它指向对象[],每次调用该函数,如果改变了L的内容,则下次调用时,默认参数的内容就变了,不再是函数定义时的[]了。

我的理解如下:

  第一行,传入参数[1,2,3],接下来的代码都是针对[1,2,3] 的,跟L = [] 没有关系,第三行和第一行一样,这两次都没涉及到L = [] ,所以L的值不变。第二行没有传入参数,所以接下来的代码是针对L了,由[]变成了['END'],第四行还是针对L,但L的值已经变成了['END'],又运行一次,所以就变成了['END','END'] 。

改进的方式如下:

def add_end(L=None):  if L is None:    L = []  L.append('END')  return L

>>> add_end()['END']>>> add_end()['END']

但是我对if L is None : L = [] 这一句还不理解,希望后续能明白吧。
 
 



原标题:廖雪峰python教程的第一个疑问

关键词:python

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

什么是Facebook广告最重要的元素?:https://www.ikjzd.com/articles/1589443762744684546
(ODI)境外投资备案是什么?:https://www.ikjzd.com/articles/1589443898682077185
重磅!TikTok美国小店定档上线!:https://www.ikjzd.com/articles/1589448725059301378
TikTok电商:这块硬骨头我必须啃:https://www.ikjzd.com/articles/1589448931477778434
过会!多家跨境大卖心仪的供应商即将敲钟:https://www.ikjzd.com/articles/1589459859657158658
突发!京东出海又折戟,转型B2B的Joybuy又关停:https://www.ikjzd.com/articles/1589470841049673729
Shopee订单量激增5倍多,越南成韩国美容品牌主要消费市场:https://www.kjdsnews.com/a/1840708.html
北海红树林-北海红树林赶海攻略:https://www.vstour.cn/a/403226.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流