博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python面试题No5
阅读量:4550 次
发布时间:2019-06-08

本文共 2292 字,大约阅读时间需要 7 分钟。

  1.列出python中可变数据类型和不可变数据类型,并简述原理

不可变数据类型:

数字类型、字符串类型string 和 元组tuple

不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址),如下图用id()方法可以打印对象的id.

可变数据类型:

列表list和字典dict

允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化。

相同的值在内存中可能会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

 

  2.python2和python3的range(100)的区别

range()函数的含义

range函数是一个用来创建算数级数序列的通用函数,返回一个[start, start + step, start + 2 * step, …]结构的整数序列

range()函数的特性

如果step参数缺省,默认1;如果start参数缺省,默认0。

如果step是正整数,则最后一个元素(start + i * step)小于stop。
如果step是负整数,则最后一个元素(start + i * step)大于stop。
step参数必须是非零整数,否则抛出VauleError异常。
注意:range函数返回一个左闭右开([left,right))的序列数

python2中的range返回一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表

>>> list=range(10)>>> print list[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

python3中的range返回的是一个迭代器

>>> range(10)range(0, 10)>>> type(range(10))
>>> list(range(10))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> type(list(range(10)))

 

for i in range(1,10)在python2和python3中都可以使用,但是要生成1-10的列表,就需要用list(range(1,10))

 

  3.在Python中读取大文件

利用生成器generator

def read_in_block(file_path):    BLOCK_SIZE = 1024    with open(file_path, "r") as f:        while True:            block = f.read(BLOCK_SIZE)  # 每次读取固定长度到内存缓冲区            if block:                yield block            else:                return  # 如果读取到文件末尾,则退出  def test3():    file_path = "/tmp/test.log"    for block in read_in_block(file_path):        print block
  • 迭代器进行迭代遍历:for line in file
def test4():    with open("/tmp/test.log") as f:        for line in f:            print line

for line in f 这种用法是把文件对象f当作迭代对象, 系统将自动处理IO缓冲和内存管理, 这种方法是更加pythonic的方法。 比较简洁。

原文:https://blog.csdn.net/hihell/article/details/89358275

 

  4. Python语言中的模块和包是什么?

python模块(Module)

在 Python 中,模块是搭建程序的一种方式。

每一个 Python 代码文件都是一个模块,并可以引用其他的模块,比如对象和属性。
表现形式为:写的代码保存为文件。这个文件就是一个模块。abc.py 其中文件名abc为模块名字。

有四种代码类型的模块:

使用Python写的程序( .py文件)

C或C++扩展(已编译为共享库或DLL文件)
包(包含多个模块)
内建模块(使用C编写并已链接到Python解释器内)
python包(Package)

包(Package)就是包含模块文件的目录,目录名称就是包名称,目录中可以包含目录,子目录也是包,但包名称应该包含上一级目录的名称。

Python引入了按目录来组织模块是为了避免模块名冲突,不同包中的模块名可以相同。

注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。

__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是包名。

继续深入了解,可以查阅

https://www.cnblogs.com/GhostCatcg/p/8151927.html

转载于:https://www.cnblogs.com/longpy/p/11063513.html

你可能感兴趣的文章
结对项目之四则运算
查看>>
Greendao
查看>>
java正则表达式
查看>>
(一)Redis 基础 - 安装
查看>>
codeforces 336 Div.2 B. Hamming Distance Sum
查看>>
201421123042 《Java程序设计》第12周
查看>>
Bash's Big Day
查看>>
扁平化前端皮肤效果
查看>>
分布式文件系统hdfs——dfs命令
查看>>
AVR单片机入门
查看>>
团队作业第5周 - 测试与发布(Alpha版本)- 天冷记得穿秋裤队
查看>>
javascript-焦点图实现(四)
查看>>
影院售票系统
查看>>
银联在线支付B2C UnionPay.NET
查看>>
开关电源中的电阻和电容串联起来有那些作用
查看>>
ld链接脚本文件语法解析之一
查看>>
linux的socket CAN驱动介绍(code)_good
查看>>
Hadoop集群搭建
查看>>
分享我见到的培训面试和就业的情况(同时给出建议)
查看>>
简单-爬取豆瓣top250-成员简介及分工
查看>>