PYTHON基础知识解析

1.1Python的语言特征和编码规范?
语言特征:
1.python是一种解释型语言:开发过程中没有编译这个环节。
2.python是交互式语言:可以在一个Python shell里,直接互动执行写你的程序。
3.python是面向对象语言:支持面向对象的风格或代码封装在对象的编程技术。
编码规范:
1.Python严格区分大小写
2.Python每行就是 一条语句,以换行符结束(不以;结束)
3.Python每行语句可以多行编辑,可以以\结尾
4.Python严格缩进
5.Python用#进行注释
1.1.1 Python 的解释器有哪些?
常见的五种解释器:CPython IPython PyPy Jython IronPython
1.1.2 列举至少 5 条 Python 3 和 Python 2 的区别?
1、Python2 既可以使用带小括号的方式,也可以使用一个空格来分隔打印内容,比如 print 'hi’Python3 使用 print 必须要以小括号包括打印内容,比如 print(‘hi’)
2、python2 range(1,10)返回列表,python3中返回迭代器,节约内存
3、python2中使用ascii编码,python3中使用utf-8编码
4、python2中unicode表示字符串序列,str表示字节序列。python3中str表示字符串序列,byte表示字节序列
5、python2中为正常显示中文,引入coding声明,python3中不需要
6、python2中是raw_input()函数,python3中是input()函数
1.1.3 Python 中新式类和经典类的区别是什么?
经典类遵循深度优先的规则,新式类遵循广度优先的规则
1.1.4 Python 之禅是什么,Python 中如何获取 Python 之禅?
Import this
1.1.5 python中的DocStrings(解释文档)有什么作用?
解释文档程序,帮助你的程序文档更加简单易懂
1.1.6 Python 3 中的类型注解有什么好处?如何使用?
提高代码可读性
1.1.7 Python 语言中的命名规范有哪些?

名称描述
类名首字母大写,私有类可用一个下划线开头
函数(function)的命名一般小写
变量(variable)的命名尽量小写
常量(constant)的命名全都大写

1.1.8 Python 中各种下划线的作用?
表示无用的占位符,或者私有化
1.1.9 单引号、双引号、三引号有什么区别?
单引号和双引号都可以用来表示一个字符串
单引号,双引号都用到包裹字符串,唯一不同用法在于如果字符串内有需要转义
的字符时候 ,单引号必须加反斜杠
3个引号还有一个特别棒的作用就是:加注释
1.2 文件 I/O 操作
1.2.1 Python 中打开文件有哪些模式?

With open
1.2.2 Python 中 read 、readline 和 readlines 的区别?
Read表示把文件的内容全部读取出来
Readline表示一行一行的读取,每读取一行,指针就放在这一行的“\n”换行符结尾位置,再次读取则从这一行结尾处到下一行的换行符位置。返回的是一个列表对象。
Readlines表示内容所有行全部读取,返回一个列表对象。
1.2.3 大文件只需读取部分内容,或者避免读取时候内存不足的解决方法?
#控制行列数
1.2.4 什么是上下文?with 上下文管理器原理?
任何实现了 enter() 和 exit() 方法的对象都可称之为上下文管理器,其中__enter__必须返回一个可以操作的对象,exit()处理一些清除工作.
1.2.5 什么是全缓冲、行缓冲和无缓冲?
在标准I/O中,核心对象是流。所谓流,它是一个过程,所有的I/O操作都是简单的从程序的移进或移出,我们把这种字符流叫做流。标准I/O基于流的操作都是缓存文件系统。
缓存类型分为三种,分别是全缓存、行缓存和无缓存。
全缓存:填满标准I/O缓存区才进行实际的I/O操作。磁盘上的了件用标准I/O打开,默认都是全缓存的。当缓存区填满或者进行flush操作时候才会进行磁盘操作。
行缓存:当输入输出遇到换行符时候就是行缓存了。标准输入和标准输出都是行缓存。
无缓存:不对I/O操作进行缓存,对流的读写可以立即操作实际文件。
1.2.6 什么是序列化和反序列化?JSON 序列化时常用的四个函数是什么?
JSON是一种将对象编码为字符串的格式。 序列化意味着将一个对象转换为该字符串,反序列化是其反向操作。 当传输数据或将它们存储在文件中时,数据必须是字节字符串,但是很少有这种格式的复杂对象。
1.2.7 JSON 中 dumps 转换数据时候如何保持中文编码?
.decode(“utf-8”),Python默认utf-8编码
1.3 数据类型
1.3.1 Python 中的可变和不可变数据类型是什么?
可变类型定义:变量值改变但是变量地址不会改变 (Set(集合)List(列表)Dictionary(字典))
不可变类型定义:变量值改变,变量地址必须改变(Number(数值)String(字符串)Tuple(元组))
1.3.2 is 和 == 有什么区别?
is 用于判断两个变量引用对象是否为同一个,就是所引用的对象的内存地址是否一致
== 用于判断引用变量的值是否相等。只判断值和数据类型
1.3.3 Python 中的单词大小写转换和字母统计?
Python为string对象提供了转换大小写的方法:upper() 和 lower()。还不止这些,Python还为我们提供了首字母大写,其余小写的capitalize()方法,以及所有单词首字母大写,其余小写的title()方法。函数较简单,看下面的例子:
1.3.4 字符串,列表,元组如何反转?反转函数 reverse 和 reversed 的区别?
利用自带的reverse函数reverse():是python中列表的一个内置方法(也就是说,在字典,字符串或者元组中,是没有这个内置方法的),用于列表中数据的反转;
而reversed 的区别可以应用在元祖,字符串上面,reversed()是python自带的一个方法,准确说,应该是一个类
1.3.5 Python 中的字符串格式化的方法有哪些?f-string 格式化知道吗?

value1 = (7, 8)
value2 = [9, 0]
print("DAY %s 格式化字符串 %s " % (value1,value2))
#format用法
# 使用名称占位符
s2 = "xxxx {age} xxxx {name}".format(age=18, name="hangman")
print(s2)  # xxxx 18 xxxx hangman

# 使用序号占位符,为空默认从左到右01234.。。
s3 = "xxxx {1} xxx{0}".format(value1,value2)
print(s3)  # xxxx [9, 0] xxx(7, 8)

# 也可以混合使用
s4 = "xxxx {} XXX {name} xxx {}".format(value2,value1,name="s4")
print(s4)  # xxxx [9, 0] XXX s4 xxx (7, 8)

#f-string用法
import datetime
name = "zings"
age = 17
date = datetime.date(2019,7,18)
print(f'my name is {name}, this year is {date:%Y},Next year, I\'m {age+1}')  # my name is zings, this year is 2019,Next year, I'm 18

1.3.6 含有多种符号的字符串分割方法?
利用正则表达式了
1.3.7 嵌套列表转换为列表,字符串转换为列表的方法?
遍历以后append
1.3.8 列表合并的常用方法?
一种是直接利用+号,一种是extend,一种是append
1.3.10 列表数据如何筛选,筛选出符合要求的数据?

在这里插入图片描述
1.3.11 字典中元素的如何排序?sorted 排序函数的使用详解?
有两种,一种是按照key排序,一种按照value排序
Sorted(d.key()) Sorted(d.item(),key lambda item :item[1])
1.3.12 字典如何合并?字典解包是什么?
最简单的方法是原地更新,就是update(另外一个字典),也就是结构
1.3.13 字典推导式使用方法?
字典推导式来快速的生成一个字典,它的表现形式和列表推导式类似,只不过将列表推导式中的中括号[]改为大括号{}:

A={i:random.randint(10, 100) for i in range(1, 5)}

1.3.14 zip 打包函数的使用?元组或者列表中元素生成字典?
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。

k = ['key1', 'key2', 'key3']
v = ['value1', "value","value3"]
dic = { i:v[k.index(i)] for i in k }#利用字典推导式生成字典
print(dic)

1.3.15 字典的键可以是哪些类型的数据?
准确的说是列表、字典这种不可哈希(unhashable)的类型不可当做键值,可哈希的类型才可当作键。
1.3.16 变量的作用域是怎么决定的?

1.4 常用内置函数
1.4.1 如何统计一篇文章中出现频率最高的 5 个单词?

words = re.findall(r'\w+', open(file_path).read().lower())
print Counter(words).most_common(100)

1.4.2 map 映射函数按规律生成列表或集合?

map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8,10])

1.4.3 filter 过滤函数如何使用?如何过滤奇数偶数平方根数?
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

def is_odd(n):
    return n % 2 == 1
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

1.4.4 sort 和 sorted 排序函数的用法区别?
使用sort()方法对list排序会修改list本身,不会返回新list,通常此方法不如sorted()方便,但是如果你不需要保留原来的list,此方法将更有效sort()。
sort()不能对dict字典进行排序
1.4.5 enumerate 为元素添加下标索引?

for index,word in enumerate(words):

1.4.6 lambda 匿名函数如何使用?

p = lambda x,y:x+y print(p(4,6))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值