Python编程的两处陷阱是什么
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇"Python编程的两处陷阱是什么"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2025年12月02日Python编程的两处陷阱是什么
这篇"Python编程的两处陷阱是什么"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Python编程的两处陷阱是什么"文章吧。
不可变对象陷阱
思路:生成1百万个随机字符串,分别使用不可对象或可变对象合并字符串,比较花费时间。
生成随机字符串的代码:
import randomimport timebig = [chr(i) for i in range(65,91)]small = [chr(i) for i in range(97,123)]def randNStr(n):...: result = []...: for i in range(n):...: strlen = random.randint(3,9)...: result.append(''.join(random.sample(small+big,strlen)))...: return result
使用不可变对象方法:combine+s 再赋值给combine,这条语句:因为combine, s都为不可变对象,返回的结果就是新生成一个对象,对象不断堆积。
def immfn(n): ...: combine='' ...: res = randNStr(n) ...: beg = time.time() ...: print('beg time %s'%str(beg)) ...: for s in res: ...: combine = combine + s ...: #print(combine) ...: end = time.time() ...: print('end time %s'%str(end)) ...: print('elispe time: %s'%str(end-beg))为了避免重复生成新的对象,使用可变对象,文中 Python解惑之对象可变与不可变 提到过,一般可迭代对象,都是可变的。
def mutfn(n):...: combine=''...: res = randNStr(n)...: beg = time.time()...: print('beg time %s'%str(beg))...: combine = ''.join(res)...: #print('print result:%s'%combine)...: end = time.time()...: print('end time %s'%str(end))...: print('elispe time: %s'%str(end-beg))
此处使用 str.join(iter),接受可迭代对象,并只返回一个新对象。比较以上两种方法的计算时间,分别从10万,步长10万,终止到100万,比较分析合并字符串的时间。
可以看到可变对象只生成一个新对象的方法,比不可变对象在数据量越大情况下,优势更明显,呈现扩张的喇叭口,当数据为90万时,节省时间成本高达:(0.19-0.025)/0.025 = 6.6 倍。当数据量增长到1千万或更大时,优势更明显。
可变对象陷阱
BAT面试题26:一道Python填空题
题目是这样的:
def f(x,l=[]):...: for i in range(x):...: l.append(i*i)...: print(l)f(2)f(3)结果为:In [2]: f(2)[0, 1]In [3]: f(3)[0, 1, 0, 1, 4]
原因,可变对象作为函数参数,并被设为默认值后,当被再次调用函数后,函数参数原来取值将被再次索引。
为了避免这个问题,可变对象的默认值一般取值为常数:None
def f(x,l=None):...: if l is None:...: l = []...: for i in range(x):...: l.append(i*i)...: print(l)...:
这样连续被调用时,将会按照预期输出。
以上就是关于"Python编程的两处陷阱是什么"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
对象
可变
陷阱
内容
字符
字符串
时间
生成
编程
函数
数据
方法
明显
优势
再次
参数
就是
文章
知识
篇文章
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
安徽网络技术开发常见问题
正元图形转数据库
数据库整理工具
nebula开源分布式图数据库
实用网络技术配置指南
网络安全罚款通过什么方式交罚款
淄博联想服务器代理测评
搭建vpn服务器的软件
非粮化数据库技术指南建库
下一代网络技术在武警
还原数据库失败
文明重启服务器怎么下载
阿里云服务器流量要钱吗
软件开发收入拆分硬件
浙江通能软件开发有限公司
cad软件开发各阶段的任务
汽车软件开发管理体系认证
网络技术系学什么
金蝶旗舰版数据库和账套
中国银行软件开发面试经验
qgis使用数据库
东莞武夷山软件开发
网络安全岗招聘
哪里可以请网络安全员
顺德八爪鱼网络技术有限公司
昆明数据库培训学校
防网络安全手抄报简单又漂亮
数据库系统原理学习具备的能力
数据库可以安装在d盘么
金蝶旗舰版数据库和账套