11、Python是按引用调用还是按值调用?
①不可变对象(如字符串、数字和元组等)是按值调用的。
注意下面的例子中,当在函数内部修改时,name的值在函数外部不会发生变化。name的值已分配给内存中该函数作用域的新块。
name = 'chr'
def add_chars(s):
s += 'is'
print(s)
add_chars(name) #=> chris
print(name) #=> chr
②可变对象(如列表等)是通过引用调用的。
注意下面的例子中,函数外部定义的列表在函数内部的修改是如何影响到函数外部的。函数中的参数指向内存中存储li值的原始块。
li = [1,2]
def add_element(seq):
seq.append(3)
print(seq)
add_element(li) #=> [1, 2, 3]
print(li) #=> [1, 2, 3]
12、如何使用reverse函数反转一个列表?
下面的代码对一个列表调用reverse函数,对其进行修改。该方法没有返回值,但是会对列表的元素进行反向排序。
li = ['a','b','c']
print(li) #=> ['a', 'b', 'c']
li.reverse
print(li) #=> ['c