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))

image
只要参数之间支持+和*运算,就可以在不适用继承的情况下实现多态。
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程序的图标
posted @ 2021-04-02 22:58  MTcx  阅读(48)  评论(0编辑  收藏  举报