运维日常

可变对象与不可变对象对于python程序运行的效率的影响

2019-11-16  本文已影响0人  大白菜的猪猪

解释型的Python语言相对于C语言等编译型语言来说,其代码执行效率是要差于C语言的.

在Python的数据类型中:

    列表,字典为可变类型数据.

    数字,字符串和元组为不可变类型数据.

    下面我们以随机生成密码这一串代码为例,看一下可变对象与不可变对象对于Python程序运行效率的影响!


源代码


#导入模块

from random import choice

import string

#所有的大小写字母+数字

all_chs=string.ascii_letters+string.digits

#定义默认随机生成八位密码的函数

def gen_pass(n=8):

    #存储方式一:

    #定义一个空列表存储随机生成的密码

    result=[]

    #存储方式二

    #定义一个空字符串存储生成的随机密码

    #result=''

    for i in range(n):

        #从所有的大小写字母和数字中随机获取一个

        ch =choice(all_chs)

        #每获取到一个就追加到新的空列表中

        result.append(ch)

        #字符串类型的写入数据

        #result+=ch

    #将列表的值返回,就是随机密码

    return ''.join(result)

if __name__ == '__main__':

    #不输入参数默认是8位

    print(gen_pass())

    #四位随机密码

    print(gen_pass(4))

    #10位随机密码

    print(gen_pass(10))


结果分析


存储方式二是定义了一个字符串,被给初始字符串附了空值,每一次获取到新的随机字符后,result+=ch都要重新申请一个新的内存去进行存储,循环次数为多少次,该方式的存储就要申请多少次内存.


而存储方式一采用的是定义一个空列表,空列表属于可变类型,只需要为其分配一次内存资源即可.


所以在编写程序时,使用可变数据类型存储数据有利于节省程序执行时的需要的空间资源,从而提高程序的执行效率!!!

上一篇 下一篇

猜你喜欢

热点阅读