首页 > 代码库 > Python-13-2

Python-13-2

以下的代码的输出将是什么? 说出你的答案并解释?

def extendList(val, list=[]):    list.append(val)    return listlist1 = extendList(10)list2 = extendList(123,[])list3 = extendList(a)print "list1 = %s" % list1print "list2 = %s" % list2print "list3 = %s" % list3

 

你将如何修改 extendList 的定义来产生期望的结果

以上代码的输出为:

list1 = [10, ‘a‘]list2 = [123]list3 = [10, ‘a‘]

许多人会错误的认为 list1 应该等于 [10] 以及 list3 应该等于 [‘a‘]。认为 list 的参数会在 extendList 每次被调用的时候会被设置成它的默认值 []

尽管如此,实际发生的事情是,新的默认列表仅仅只在函数被定义时创建一次。随后当 extendList 没有被指定的列表参数调用的时候,其使用的是同一个列表。这就是为什么当函数被定义的时候,表达式是用默认参数被计算,而不是它被调用的时候。

因此,list1 和 list3 是操作的相同的列表。而 ````list2是操作的它创建的独立的列表(通过传递它自己的空列表作为list``` 参数的值)。

extendList 函数的定义可以做如下修改,但,当没有新的 list 参数被指定的时候,会总是开始一个新列表,这更加可能是一直期望的行为。

def extendList(val, list=None):    if list is None:        list = []    list.append(val)    return list

使用这个改进的实现,输出将是:

list1 = [10]list2 = [123]list3 = [‘a‘]

Python对象占用内存大小
http://www.th7.cn/Program/Python/2012/03/02/61741.shtml

说说 dict 的 items() 方法与 iteritems() 方法的不同
items(...) D.items() -> list of Ds (key, value) pairs, as 2-tuplesiteritems(...)D.iteritems() -> an iterator over the (key, value) items of D

python pass用法

1、空语句 do nothing

2、保证格式完整
3、保证语义完整
 
python set
http://blog.csdn.net/business122/article/details/7541486
 

说明os,sys模块不同,并列举常用的模块方法?

官方解释:
os: This module provides a portable way of using operating system dependent functionality. 
翻译:提供一种方便的使用操作系统函数的方法。
sys:This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter.
翻译:提供访问由解释器使用或维护的变量和在与解释器交互使用到的函数。

 

python内存管理

http://developer.51cto.com/art/201007/213585.htm

 

Python-13-2