python面试题整理(20170131092705)
python多线程面试题
python多线程面试题
在Python中使用多线程是一种常见的并发编程方式,它可以实现同时执行多个任务,提高程序的运行效率。以下是几个关于Python多线程的面试题,帮助你更好地了解和应对相关问题。
一、什么是线程和进程?
线程和进程都是操作系统中用于处理任务的执行单元,但它们有一些重要的区别。进程是操作系统分配资源的基本单位,它包含了程序的执行代码、数据和运行环境等;而线程是进程的执行单元,每个进程至少包含一个线程。一个进程可以有多个线程,它们共享进程的资源,但每个线程都有独立的栈空间和程序计数器。
二、Python中的多线程是如何实现的?
在Python中,有两个主要的多线程模块,即`threading`和
`multiprocessing`。`threading`模块提供了对线程的高级控制,是Python 的内置模块;`multiprocessing`模块则使用了其他计算机核来执行多个子进程,是使用多核CPU的首选模块。
三、Python中多线程的优缺点是什么?
优点:
1. 提高程序的运行效率,特别是在处理IO密集型任务时,可以充分利用空闲时间进行其他任务的执行。
2. 共享内存,线程之间可以直接访问相同的内存空间,方便数据共享和通信。
3. 简化编程模型,使用多线程可以将复杂的任务拆分成多个独立的子任务,并行执行。
缺点:
1. GIL(全局解释器锁)的存在,限制了多线程的并行性能,因为在同一时间只能有一个线程在执行Python字节码。这对于CPU密集型任务的性能提升作用不大。
2. 线程之间的竞争条件和资源共享可能导致死锁、数据不一致或性能下降等问题,需要合理地进行同步控制和线程间通信。
python算法面试题及答案
python算法面试题及答案
在计算机科学和软件工程领域,算法是解决问题的步骤和规则的有限序列。在Python编程语言中,算法在开发软件和处理数据时起着至关重要的作用。在面试过程中,面试官常常会考察对Python算法的理解和应用。本文将介绍一些常见的Python算法面试题及答案。
一、排序算法
1. 冒泡排序算法
冒泡排序算法是一种简单但低效的排序算法,在每一轮迭代中,它会比较相邻的两个元素并将其交换位置,直到整个序列有序。
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n - 1):
for j in range(n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr
```
2. 快速排序算法
快速排序算法是一种高效的排序算法,通过分治的策略将问题分解
为更小的子问题,然后通过递归排序子问题的解。
```python
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
精心整理110道Python面试题(附答案)
精⼼整理110道Python⾯试题(附答案)整理了⼀些Python⾯试题和⾯试简历,如果需要,可以参考学习
扫描下⽅公众号回复:⾯试,即可获取⾯试题答案
程序员资源社区
具体⾯试题如下:
1、⼀⾏代码实现1--100之和
2、如何在⼀个函数内部修改全局变量
3、列出5个python标准库
4、字典如何删除键和合并两个字典
5、谈下python的GIL
6、python实现列表去重的⽅法
7、fun(*args,**kwargs)中的*args,**kwargs什么意思?8、python2和python3的range(100)的区别
8、python2和python3的range(100)的区别
9、⼀句话解释什么样的语⾔能够⽤装饰器?
10、python内建数据类型有哪些
11、简述⾯向对象中__new__和__init__区别
12、简述with⽅法打开处理⽂件帮我我们做了什么?
13、列表[1,2,3,4,5],请使⽤map()函数输出[1,4,9,16,25],并使⽤列表推导式提取出⼤于10的数,最终输出[16,25]
14、python中⽣成随机整数、随机⼩数、0--1之间⼩数⽅法
15、避免转义给字符串加哪个字母表⽰原始字符串?
16、<div class='nam'>中国</div>,⽤正则匹配出标签⾥⾯的内容(“中国”),其中class的类名是不确定的
17、python中断⾔⽅法举例
18、数据表student有id,name,score,city字段,其中name中的名字可有重复,需要消除重复⾏,请写sql语句
python简单面试题
python简单⾯试题
在这个即将进⼊⾦9银10的跳槽季节的时候,肯定需要⼀波⾯试题了,安静总结了⼀些经常遇到的python⾯试题,让我们⼀起撸起来。python⾯试题
1、求出1-100之间的和
# coidng:utf-8
a = 0
for i in range(0,100):
a += (i+1)
print(a)
5050
# 也可以使⽤函数sum
sum = sum(range(1,101))
print(sum)
5050
2、冒泡排序
a = [1,6,4,2,67,32]
l = len(a)
for i in range(l):
for j in range(l-1):
if a[l-j-1]<a[l-j-2]:
a[l-j-1],a[l-j-2] = a[l-j-2],a[l-j-1]
for i in range(l):
print(a[i])
# 代码结果
1
2
4
6
32
67
3、数字排序
⼀看就是冒泡排序。这次我们⽤函数
a = [1,6,4,2,67,32]
m = sorted(a)
print(m)
# 代码结果
[1, 2, 4, 6, 32, 67]
# 也可通过其他函数
a.sort()
4、写出常⽤的python库
我们做测试的常⽤的肯定是与测试有关的喽
requests--接⼝⾃动化
selenium--web的UI⾃动化
appium--app的UI⾃动化
re ---正则表达式
5、python的数据类型
整型--int
字符串--str
列表--list
元组--tuple
字典--dict
6、python2与python3的区别
Python接口测试基础知识(面试)习题及答案解析_2024高级测试开发工程师面试题集锦
Python接口测试基础知识(面试)习题及答案解析(答案见尾页)
一、选择题
1. 什么是指令测试?
A. 接口测试
B. 功能测试
C. 集成测试
D. 性能测试
2. 在Python中,如何判断一个字符串是否是URL?
A. 使用urlparse模块
B. 使用re模块
C. 使用requests模块
D. 使用os模块
3. Python中获取请求方法的值,应该使用哪个函数?
A. request.method
B. request.get_method
C. request.url
D. request.build_url
4. Python中如何发送POST请求?
A. requests.post()
B. requests.put()
C. requests.patch()
D. requests.delete()
5. 在Python中,如何判断一个响应的状态码是否为?
A. response.status_code == 200
B. response.code == 200
C. response.statustext == "200 OK"
D. response.body == "OK"
6. Python中如何解析JSON数据?
A. json.loads()
B. json.dumps()
C. json.load()
D. json.dump()
7. 请求头中的"Content-Length"字段表示什么?
A. 请求体大小
B. 响应体大小
C. 请求URL长度
D. 请求方法
8. 请求头中的"Accept"字段用于告诉服务器什么类型的内容可以接受?
Python自动化面试常见的编程题及答案
Python⾃动化⾯试常见的编程题及答案
前⾔
随着⾏业的发展,编程能⼒逐渐成为软件测试从业⼈员的⼀项基本能⼒。因此在笔试和⾯试中常常会有⼀定量的编码题,主要考察以下⼏点。
基本编码能⼒及思维逻辑
基本数据结构(顺序表、链表、队列、栈、⼆叉树)
基本算法(排序、查找、递归)及时间复杂度
除基本算法之外,笔试⾯试中经常会考察以下三种思想:
哈希
递归
分治
哈希
哈希即Python中的映射类型,字典和集合,键值唯⼀,查找效率⾼,序列(列表、元祖、字符串)的元素查找时间复杂度是O(n),⽽字典和集合的查找只需要O(1)。
因此哈希在列表问题中主要有两种作⽤:
1. 去重
2. 优化查找效率
列表去重
列表去重在不考虑顺序的情况下可以直接使⽤set()转换(转换后会⾃动排序),需要保持顺序可以使⽤字典构建的fromkeys()⽅法,利⽤字典键值的唯⼀性去重。
不考虑顺序:
l = [2,1,2,3,4,5,6,6,5,4,3,2,1]
result = list(set(l))
print(result)
运⾏结果:
[1, 2, 3, 4, 5, 6]
考虑顺序:
l = [2,1,2,3,4,5,6,6,5,4,3,2,1]
result = list({}.fromkeys(l).keys())
print(result)
运⾏结果:
[2, 1, 3, 4, 5, 6]
列表分组
⼀串字母数字组合的字符串,找出相同的字母或数字,并按照个数排序。
l = [1,2,3,'a','b','c',1,2,'a','b',3,'c','d','a','b',1]
Python面试中可能会被问到的30个问题
Python⾯试中可能会被问到的30个问题
第⼀家公司问的题⽬
1 简述解释型和编译型编程语⾔?
解释型语⾔编写的程序不需要编译,在执⾏的时候,专门有⼀个解释器能够将VB语⾔翻译成机器语⾔,每个语句都是执⾏的时候才翻译。这样解释型语⾔每执⾏⼀次就要翻译⼀次,效率⽐较低。
⽤编译型语⾔写的程序执⾏之前,需要⼀个专门的编译过程,通过编译系统,把源⾼级程序编译成为机器语⾔⽂件,翻译只做了⼀次,运⾏时不需要翻译,所以编译型语⾔的程序执⾏效率⾼,但也不能⼀概⽽论,
部分解释型语⾔的解释器通过在运⾏时动态优化代码,甚⾄能够使解释型语⾔的性能超过编译型语⾔。
2 Python解释器种类以及特点?
CPython
当从Python官⽅⽹站下载并安装好Python2.7后,就直接获得了⼀个官⽅版本的解释器:Cpython,这个解释器是⽤C语⾔开发的,所以叫CPython,在命名⾏下运⾏python,就是启动CPython解释器,CPython是使⽤最⼴的Python解释器。
IPython
IPython是基于CPython之上的⼀个交互式解释器,也就是说,IPython只是在交互⽅式上有所增强,但是执⾏Python代码的功能和CPython 是完全⼀样的,好⽐很多国产浏览器虽然外观不同,但内核其实是调⽤了IE。
PyPy
PyPy是另⼀个Python解释器,它的⽬标是执⾏速度,PyPy采⽤JIT技术,对Python代码进⾏动态编译,所以可以显著提⾼Python代码的执⾏速度。
Jython
Jython是运⾏在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执⾏。
常见的35个Python面试题及答案
常见的35个Python⾯试题及答案
1. Python ⾯试问题及答案
作为⼀个 Python 新⼿,你必须熟悉基础知识。在本⽂中我们将讨论⼀些 Python ⾯试的基础问题和⾼级问题以及答案,以帮助你完成⾯试。包括Python 开发问题、编程问题、数据结构问题、和 Python 脚本问题。让我们来深⼊研究这些问题
Python ⾯试问题
Q.1. Python 的特点和优点是什么?
Python 可以作为编程的⼊门语⾔,因为他具备以下特质:
1. 解释性
2. 动态特性
3. ⾯向对象
4. 语法简洁
5. 开源
6. 丰富的社区资源
Q.2. 深拷贝和浅拷贝的区别是什么?
深拷贝是将对象本⾝复制给另⼀个对象。这意味着如果对对象的副本进⾏更改时不会影响原对象。在 Python 中,我们使⽤ deepcopy()函数进⾏深拷贝,使⽤⽅法如下:
深拷贝-Python ⾯试问题及答案
浅拷贝是将对象的引⽤复制给另⼀个对象。因此,如果我们在副本中进⾏更改,则会影响原对象。使⽤ copy()函数进⾏浅拷贝,使⽤⽅法如下:
浅拷贝—Python ⾯试问题及答案
Q.3. 列表和元祖有什么不同?
主要区别在于列表是可变的,元祖是不可变的。看下⾯的例⼦:
会出现以下错误提⽰:
TypeError: ‘tuple’ object does not support item assignment
2. Python ⾯试基础题
Q.4 到 Q.20 是新⼿经常会被问到的⼀些 Python 基础题,有经验的⼈也可以参考这些问题来复习这些概念。
python面试题及答案
python面试题及答案
Python作为一门多功能编程语言,被广泛应用于软件开发、数据分析、人工智能等领域。在面试过程中,常常会涉及到Python的相关问题。本文将介绍一些常见的Python面试题及其答案,帮助读者准备面试或加深对Python的理解。
一、Python基础
1. 解释Python中的元组(tuple)和列表(list)的区别。
答:元组和列表都是Python中的内置数据结构,区别在于元组是不可变的,而列表是可变的。具体来说,元组一旦创建后就不能修改,而列表可以进行增加、删除和修改操作。
2. 什么是Python的装饰器(decorator)?
答:装饰器是Python中的一种特殊语法,可以在不修改原函数代码的情况下,为函数添加额外的功能。装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个经过包装后的新函数。
3. Python中的生成器(generator)是什么?它与普通函数的区别是什么?
答:生成器是一种特殊类型的函数,使用关键字yield来实现。生成器可以按需生成值,而不是一次性生成所有值。相比普通函数,生成器在运行时只保存当前的状态,减少了内存的占用。
4. Python中的is和==有什么区别?
答:is用于比较两个对象的身份标识是否相同,即是否指向同一块
内存地址;==用于比较两个对象的值是否相等。可以说is是判断引用
是否相等,而==是判断值是否相等。
二、Python模块和库
1. 解释Python中的模块和包的概念。
答:模块是一个包含Python代码的文件,可以通过import语句导
Python经典面试题详解(共53题)
Python经典⾯试题详解(共53题)
Python 经典⾯试题详解(共53题)
1. 列表(list)和元组(tuple)有什么区别?
在我每⼀次应聘Python数据科学家的⾯试中,这个问题都会被问到。所以对这个问题的答案,我可以说是了如指掌。
列表是可变的。创建后可以对其进⾏修改。
元组是不可变的。元组⼀旦创建,就不能对其进⾏更改。
列表表⽰的是顺序。它们是有序序列,通常是同⼀类型的对象。⽐如说按创建⽇期排序的所有⽤户名,如["Seth", "Ema", "Eli"]。
元组表⽰的是结构。可以⽤来存储不同数据类型的元素。⽐如内存中的数据库记录,如(2, "Ema", "2020–04–16")(#id, 名称,创建⽇期)。
2. 如何进⾏字符串插值?
在不导⼊Template类的情况下,有3种⽅法进⾏字符串插值。
3. “is”和“==”有什么区别?
在我的Python职业⽣涯的早期,我认为它们是相同的,因⽽制造了⼀些bug。所以请⼤家听好了,“is”⽤来检查对象的标识(id),⽽“==”⽤来检查两个对象是否相等。我们将通过⼀个例⼦说明。创建⼀些列表并将其分配给不同的名字。请注意,下⾯的b指向与a相同的对象。
下⾯来检查是否相等,你会注意到结果显⽰它们都是相等的。
但是它们具有相同的标识(id)吗?答案是不。
我们可以通过打印他们的对象标识(id)来验证这⼀点。
你可以看到:c和a和b具有不同的标识(id)。
4. 什么是装饰器(decorator)?
这是每次⾯试我都会被问到的另⼀个问题。它本⾝就值得写⼀篇⽂章。如果你能⾃⼰⽤它编写⼀个例⼦,那么说明你已经做好了准备。
最常见的35个Python面试题及答案
最常见的-35-个-Python-面试题及答
案
1. Python中的列表和元组有什么区别?
答:列表是可变的,可以修改其元素;而元组是不可变的,不能修改其元素。
2. 什么是Python中的切片操作?
答:切片操作是指通过指定起始索引和结束索引来获取列表、元组或字符串中的一部分内容。
3. 如何在Python中反转一个字符串?
答:可以使用切片操作[:-1]来反转一个字符串。
4. 如何将一个字符串转换为整数?
答:可以使用int函数将一个字符串转换为整数。
5. Python中的字典是什么?
答:字典是一种无序的数据集合,用于存储键-值对。
6. 如何遍历一个字典?
答:可以使用for循环遍历一个字典的键或值,或者使用items方法同时遍历键和值。
7. 如何在Python中打开一个文件并读取其内容?
答:可以使用open函数打开一个文件,并使用read方法读取其内容。
8. 如何在Python中写入文本到一个文件?
答:可以使用open函数打开一个文件,并使用write方法写入文本内容。
9. Python中的异常处理机制是什么?
答:异常处理机制是一种用于捕获和处理程序中可能出现的错误的机制,可以使用try-except语句来实现。
10. 如何在Python中自定义一个异常?
答:可以通过继承Exception类来自定义一个异常。
11. 什么是模块和包?
答:模块是一个包含Python代码的文件,而包是一个包含多个模块的文件夹。
12. 如何在Python中导入一个模块或包?
答:可以使用import语句导入一个模块或包。
软件测试工程师常见的17道Python面试题【多测师_王sir】【软件测试】
软件测试⼯程师常见的17道Python⾯试题【多测师_王sir】【软
件测试】
#coding=utf-8
"""
===========================
Author:多测师_王sir
Time:2020-07-10 12:00
Wechat:xiaoshubass
website:
===========================
"""
python练习题
1.统计
统计在⼀个队列中的数字,有多少个正数,多少个负数,如
a=[1, 3, 5, 7, 0, -1, -9, -4, -5, 9]
#⽅法⼀
# ⽤列表⽣成式,⽣成新的列表
b=[i for i in a if i>0]
print'⼤于0的个数:%s'%len(b)
c=[i for i in a if i<0]
print'⼩于0的个数:%s'%len(c)
#⽅法⼆
# coding:utf-8
a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8]
# ⽤传统的判断思维,累加
m = 0
n = 0
for i in a:
if i > 0:
m += 1
elif i < 0:
n += 1
else:
pass
print"⼤于 0 的个数:%s" % m
print"⼩于 0 的个数:%s" % n
2.字符串切⽚
字符串"axbyczdj",如果得到结果“abcd”
⽅法⼀
字符串切⽚
a='axbyczdj'
print a[0::2] #这⾥⽤a[::2]结果是⼀样的
⽅法⼆
a='axbyczdj'
c=[]
for i in range(len(a)): #对a这个字符串的长度进⾏遍历
python数据分析面试题
python数据分析面试题
由于数据分析在各行业中越来越受重视,因此掌握Python数据分析技能的人才也越来越受到公司的青睐。在面试中,常常会涉及到一些关于Python数据分析的问题。本文将针对一些常见的Python数据分析面试题进行探讨,帮助读者更好地准备面试。
1. 介绍一下Python数据分析的常用库
在Python数据分析中,有几个常用的库是必须要掌握的,它们分别是:
NumPy:用于进行数组和矩阵的运算,提供了高效的数据结构;
Pandas:用于数据处理和分析,提供了便捷的数据结构和数据操作工具;
Matplotlib:用于绘制各种类型的图表,包括线图、柱状图、散点图等;
Seaborn:基于Matplotlib,提供了更美观的统计图表绘制方式;
Scikit-learn:用于机器学习和数据挖掘,提供了丰富的机器学习算法和工具。
2. 如何导入和安装这些常用库?
在Python中,可以使用pip命令来进行库的安装和导入。具体步骤如下:
首先,确保Python已经正确安装在你的机器上;
在命令行界面中输入pip install 库名进行库的安装,比如pip install numpy;
在Python程序中通过import关键字导入需要使用的库即可,比如import numpy。
3. 请解释一下NumPy中的ndarray是什么?
ndarray是NumPy库中的一个核心数据结构,它代表了多维数组。与Python中的列表相比,ndarray具有更高效的存储和计算性能,并且支持向量化操作。ndarray中的元素必须是相同类型的,可以是整数、浮点数、布尔值等等。
python 爬虫 面试题
python 爬虫面试题
Python爬虫面试题
一、基础知识
1. 什么是爬虫?
爬虫是一种自动获取网页内容的程序,通过模拟浏览器行为,自动访问网页并提取所需信息。
2. Python爬虫的优势是什么?
Python爬虫具有以下优势:
- 简洁易学:Python语法简洁清晰,上手难度低。
- 强大的第三方库支持:Beautiful Soup、Requests等库方便开发者处理HTML页面和发送HTTP请求。
- 灵活性:Python爬虫适用于多种场景,可以应对各种网站的数据获取。
- 高效性:Python的解释器可以解析和执行代码,大大节省了程序的运行时间。
3. Requests库的作用是什么?
Requests库是Python中一个常用的HTTP请求库,可以方便地发送HTTP请求、处理响应和参数发送等操作。
4. 爬虫常见的反爬策略有哪些?
- User-Agent反爬:网站根据User-Agent信息判断爬虫,可设置User-Agent头模拟浏览器访问。
- IP反爬:网站通过IP地址进行限制,可以使用代理IP进行匿名请求。
- 验证码反爬:网站使用验证码来阻止爬虫,可通过打码平台或机器学习算法破解。
- 动态渲染反爬:网页使用JavaScript进行动态渲染,可以使用Selenium等工具模拟浏览器解析。
二、实战技巧
1. 如何实现代理IP的使用?
使用requests库可以通过设置proxies参数来实现代理IP的使用。例如:
```
import requests
proxies = {
'http': 'http://ip:port',
Python运维面试题
Python运维面试题
1.描述一下Python在运维中的应用场景。
答案:Python在运维中有着广泛的应用,包括自动化部署、监控、日志分析、性能测试、数据备份等。Python的语法简洁易读,易于编写和维护,而且拥有丰富的第三方库,使得运维人员能够快速地开发出高效稳定的自动化脚本。
2.解释一下Python中的装饰器。
答案:Python中的装饰器是一种用于修改函数或类的行为的特殊类型。装饰器本质上是一个接受函数对象并返回新函数对象的可调用对象。通过使用装饰器,可以实现对函数或类的行为的增强或修改,而无需修改其源代码。
3.解释一下Python中的多线程和多进程。
答案:Python中的多线程和多进程都是实现并发执行的关键技术。多线程是指在一个进程中同时执行多个线程,而多进程是指同时启动多个进程来执行任务。Python提供了多种方式来实现多线程和多进程,例如使用threading和multiprocessing模块。
4.解释一下Python中的异常处理机制。
答案:Python中的异常处理机制是一种用于捕获和处理错误的机制。当程序中出现异常时,Python会抛出异常对象,并在调用栈中查找能够处理该异常的异常处理块。如果找到了匹配的异常处理块,则执行该块中的代码,否则程序将终止并输出错误信息。
5.解释一下Python中的面向对象编程(OOP)。
答案:Python中的面向对象编程是一种编程范式,它将数据和操作封装在一个对象中,并通过类和对象的概念来组织代码。通过定义类并创建对象,可以更好地组织和管理代码,并实现代码的重用和扩展。
应届生 python 面试题
应届生 python 面试题
Python是一种高级编程语言,近年来逐渐成为了热门的编程语言之一。无论是作为一门通用编程语言,还是机器学习或者数据科学领
域的专业工具,Python都展现出了令人瞩目的力量。
懂得Python的应届生们是IT行业中备受青睐的人才。因此,如
果你是一位正在准备Python面试的应届生,那么接下来就为你介绍几
个最常见的Python面试题,帮助你更好地准备面试。
1. Python中的GIL是什么?它有什么作用?
GIL(全局解释器锁)是Python中特有的一种机制。Python解释器只允许一个线程的解释器访问Python对象,意味着一次只能“执行
一段 Python 代码”。如果有两个线程需要同时访问Python对象,则
需要等待其他线程执行完毕后才能访问。
GIL可确保Python解释器具有单线程的特性,这使得Python内
存管理更加简单且安全。但是,当并发性成为一个重要的问题时,GIL
则变得很不理想。因此,在处理大量并行任务或者进行多线程编程时,有时需要将Python代码转化为异步形式,或者使用其他的多线程解决
方案。
2. 你能给出Python中最常见的元编程设计模式么?
元编程是指编写能够操作源代码、以及使程序运行时可以动态地
修改其自身的代码。Python因其动态性而特别适合进行元编程。以下
是Python中常见的元编程设计模式。
元类:
通过创建一些类来创建新的类,也就是元类。元类可以在类实例化时
动态地修改框架。这种方法非常适用于创建API,确保每个类都用相似的方式实现。
对象属性:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 请教一下列表与元组的区别是什么.分别在什么情况下使用
列表中的项目应该包括在方括号中,你可以添加、删除或是搜索列表中的项目。由于你可以增加或
删除项目,所以列表是可变的数据类型,即这种类型是可以被改变的。
元组和列表十分类似,但是元组是不可变的.也就是说你不能修改元组。元组通过圆括号中用逗号分
割的项目定义。元组通常用在使语句或用户定义的函数能够安全地采用一组值的时候,
即被使用的元组的值不会改变。
2 字典
键值对的集合(map)字典是以大括号“{}”包围的数据集合。
与列表区别:字典是无序的,在字典中通过键来访问成员。字典是可变的,可以包含任何其他类型。
3 Python是如何进行内存管理的?
Python提供了对内存的垃圾收集机制,但是它将不用的内存放到内存池而不是返回给操作系统。
Python中所有小于256个字节的对象都使用pymalloc实现的分配器,而大的对象则使用系统的malloc。另外Python对象,如整数,浮点数和List,都有其独立的私有内存池,对象间不共享他们的内存池。
也就是说如果你分配又释放了大量的整数,用于缓存这些整数的内存就不能再分配给浮点数。
在Python中,许多时候申请的内存都是小块的内存,这些小块内存在申请后,很快又会被释放,由
于这些内存的申请并不是为了创建对象,所以并没有对象一级的内存池机制。这就意味着Python在运
行期间会大量地执行malloc和free的操作,频繁地在用户态和核心态之间进行切换,这将严重影响
Python的执行效率。为了加速Python的执行效率,Python引入了一个内存池机制,用于管理对小块内
存的申请和释放。这也就是之前提到的Pymalloc机制。
4 如何在一个function里面设置一个全局的变量?
解决方法是在function的开始插入一个global声明
5 Python中pass语句的作用是什么?
pass语句什么也不做,一般作为占位符或者创建占位程序,pass语句不会执行任何操作,比如:
while False:
pass
pass通常用来创建一个最简单的类:
class MyEmptyClass:
pass
pass在软件设计阶段也经常用来作为TODO,提醒实现相应的实现,比如:
def initlog(*args):
pass #please implement this
6 Python里面如何拷贝一个对象?
因为在Python中,无论你把对象做为参数传递,做为函数返回值,都是引用传递的.
Python中的对象之间赋值时是按引用传递的,如果需要拷贝对象,需要使用标准库中的copy模块。
1. copy.copy 浅拷贝只拷贝父对象,不会拷贝对象的内部的子对象。
2. copy.deepcopy 深拷贝拷贝对象及其子对象
一个很好的例子:
import copy
a = [1, 2, 3, 4, ['a', 'b']] #原始对象
b = a #赋值,传对象的引用
c = copy.copy(a) #对象拷贝,浅拷贝
d = copy.deepcopy(a) #对象拷贝,深拷贝
a.append(5) #修改对象 a
a[4].append('c') #修改对象a中的['a', 'b']数组对象
print 'a = ', a
print 'b = ', b
print 'c = ', c
print 'd = ', d
输出结果:
a = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
b = [1, 2, 3, 4, ['a', 'b', 'c'], 5]
c = [1, 2, 3, 4, ['a', 'b', 'c']]
d = [1, 2, 3, 4, ['a', 'b']]