Python Interview Question and Answers

[点击查看原文](Python Interview Question and Answers)
1. How are arguments passed - by reference of by value?

简单来说“都不是”,实际上这种方式被称之为“call by object”或者“call by sharing ”(注:也可以称之为“call by object reference”,more info)。详细点来说,这个术语并不能精确的描述Python是如何工作的。在Python中,万物皆对象,所以的变量只是对象的引用,这些引用的值被传递给函数。所以我们不能改变引用的值但是可以可变对象的值。记住: numbers, strings 和 tuples 是不可变的, list 和 dicts 是可变的。
如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象--相当于通过“传值'来传递对象。
python中任何变量都是对象,所以参数只支持引用传递方式。即通过名字绑定的机制,把实际参数的值和形式参数的名称绑定在一起,形式参数和实际参数指向内存中的同一个存储空间。

2.Do you know what list and dict comprehensions are? Can you give an example?
列表或字典推导是一种语法结构,基于已经存在的可迭代对象,用来更容易的产生列表或字典。根据第三版的“Learning Python”,列表推导通常来说比正常的循环要快,不同的版本之间可能存在差异。

# simple iteration
a = []
for x in range(10): 
    a.append(x*2)
# a == [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# list comprehension
a = [x*2 for x in range(10)]
# dict comprehension
a = {x: x*2 for x in range(10)}
# a == {0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}

5.Can you sum all of the elements in the list, how about to multuply them and get the result?

# the basic way
s = 0
for x in range(10): 
    s += x
# the right way
s = sum(range(10))
# the basic way
s = 1
for x in range(1, 10):
    s = s * x
# the other way
from operator import mul
reduce(mul, range(1, 10))

6.Do you know what is the difference between lists and tuples? Can you give me an example for their usage?

定义:
**list : **链表,有序的项目, 通过索引进行查找,使用方括号”[]”;
**tuple : **元组,元组将多样的对象集合到一起,不能修改,通过索引进行查找, 使用括号”()”;
**dict : **字典,字典是一组键(key)和值(value)的组合,通过键(key)进行查找,没有顺序, 使用大括号”{}”;
**set : **集合,无序,元素只出现一次, 自动去重,使用”set([])”
应用场景:
**list : ** 简单的数据集合,可以使用索引;
**tuple : **, 把一些数据当做一个整体去使用,不能修改;
**dict : **使用键值和值进行关联的数据;
**set : **数据只出现一次,只关心数据是否出现, 不关心其位置;

7.Do you know the difference between range and xrange?

range返回一个list,xrang返回一个(生成器)xrang对象;
range返回所有产生的元素(这是非常消耗时间和内存的),xrang则是每次迭代产生一个。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,754评论 0 5
  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,774评论 0 1
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 7,616评论 1 118
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 1,941评论 0 3
  • 一 夏季炽热的风拂过街道,却没有带来一丝的凉爽。连夏季最为嘈杂的蝉都仿佛被热气吸取了生命力,变的沉默起来。偶尔才有...
    value的橘子阅读 677评论 2 1