BAT三巨头Python招聘考察题.pdf
BAT三巨头Python⾯试问题及详尽解答Python语⾔特性1 Python的函数参数传递通过以下两个例⼦,深度剖析运⾏结果:代码⼀: a = 1 def fun(a): a = 2 fun(a) print(a) # 1代码⼆: a = [] def fun(a): a.append(1) fun(a) print(a) # [1]所有的变量都可视为内存中⼀个对象的“引⽤”,或者,亦可类比于C语⾔中的void*的概念。关键在于要记住类型属于对象,而不是变量。对象分为“可更改”(mutable)和“不可更改”(immutable)两类。在Python中,字符串(strings)、元组(tuples)、以及数字属于不可更改的对象,而列表(list)、字典(dict)等则是可修改的对象。这正是问题的核心所在。当将⼀个引⽤传递给函数时,函数会⾃动复制⼀份引⽤,此时函数内外的引⽤之间并没有联系。因此,第⼀个例⼦中函数将引⽤指向了⼀个不可变对象,当函数返回时,外部引⽤没有变化的感知。⽽第⼆个例⼦就截然不同,函数内的引⽤指向了可变对象,对其的操作会影响引⽤的原始内容。
用户评论