python学习笔记6-其他
简述解释型和编译型编程语言的区别
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
解释型语言就是边解释边执行,例如,python、php等;
编译型语言是先编译后再执行,例如C语言就属于编译型语言。
python是强语言类型还是弱语言类型?
强类型:不允许不同数据类型相加。
动态:不使用显式数据类型声明那个,且确定一个变量的类型是再第一次给它赋值的时候。
脚本语言:一般也是解释型语言,运行代码只需要一个解释器,不需要编译
所以,python是强类型的动态脚本语言
什么是鸭子类型
当看到一致鸟走起来像鸭子、游泳起来像鸭子、叫声也像鸭子,那么这只鸟就可以被称为鸭子。在鸭子类型中,关注的不是对象的类型本身,而是他是如何使用的。
- 将前两个参数相加后和第三个参数相乘
def add_then_multiplication(a,b,c):
return (a+b)*c
print(add_then_multiplication(1,2,3))
print(add_then_multiplication([1,2,3],[4,5,6],3))
print(add_then_multiplication('hello','world ',3))
只要参数之间支持+和*运算,就可以在不适用继承的情况下实现多态。
python有哪些缺点?
由于python是解释型语言,在运行时需要将代码转换成CPU理解的机器码,所以,运行速度会相对较慢,另外,py2和py3在很多方面是不兼容的。
(它的源代码可以直接运行,是因为有解释器将其转换成中间语言,之后再翻译成机器码在执行的)
什么是Pythonic编程风格
Pythonic编程风格是Python的一种追求的风格,精髓是追求直观,简洁而易读。
交换变量
非Pythonic:
temp = a
a = b
b = temp
Pythonic:
a,b = b,a
判断真假
name = 'Tim'
langs = ['AS3','Lua','C']
info = {'name':'Time','sex':'Male','age':22}
非Pythonic:
if name != '' and len(langs) > 0 and info != {}:
print('All True!')"
Pythonic:
if name and langs and info:
print('All True!')"
列表推导式
[x for x in range(1,100) if x % 2 == 0]
zip创建键值对
keys = ['Name','Sex','Age']
values = ['Jack','Male',22]
dict(zip(keys,values))
python中的unittest是什么?
在python中,unittest是python中的单元测试框架,它拥有支持共享搭建、自动测试和测试中暂停代码等功能。
python中docstring是什么?
python中文档字符串被称为docstring,它在python中的作用是为函数、模块和类注释生成文档
负索引是什么?
python中的序列索引可以是正也可以是负。如果是正索引,那么0是序列中的第一个索引,1是第二个索引。如果是负索引,那么-1是最后一个索引,而-2是倒数第二个索引
python自省举例
自省就是面向对象的语言所写的程序在运行是,所能知道对象的类型,即运行时能够获得对象的类型,如,type(),dir(),getattr(),hasattr(),isinstance().
实现用户输入整数,让程序输出二进制数的补码
#获取用户输入十进制数(整数)
dec = int(input('输入数字:'))
print('转换为二进制数为:',bin(dec).replace('0b',''))#replace()是bin()函数的一个方法,用于去掉输出是前面带有的'0b'
print('转换为二进制数的补码为:',bin(2**8+(dec)))#补码的计算方法
如何理解字符串中''字符?
- 转义字符
- 路径名中用来连接路径名
- 编写太长代码手动换行
python运行速度慢的原因,怎么解决
- python是强类型语言,所以解释器运行时遇到变量以及数据类型转换、比较操做、引用变量时都需要检查其数据类型
- python的编译器启动速度比java快,但几乎每次都要进行编译
- python的对象模型会导致访问内存效率变低。Numpy的指针指向缓存区数据的值,而python的指针指向缓存对象,在通过缓存对象指向数据
对应的解决方法 - 可以使用其他的解释器,例如pypy和jython等
- 如果对性能要求较高且静态类型变量较多的应用程序,可以使用CPython
- 对于I/O操作多的应用程序,python提供asyncio模块提高异步能力
python程序打包成可执行程序(.exe)
由于python脚本在没有安装python的机器上不能运行,所以需要将脚本打包成exe文件,降低脚本对环境的依赖性,同时可以让程序运行更迅速。可以使用pyinstaller包将脚本打包exe文件
pip install pyinstaller #安装包
pyinstaller -F c:\test_exe.py #打包成exe文件
pyinstaller -F -i "demo.ico" "main.py" #更换exe程序的图标