快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页新闻资讯软件测评 → 新手学习Python常见的五个坑

新手学习Python常见的五个坑

时间:2020-01-17 10:06:02人气:作者:快盘下载我要评论

任何一种语言都有自己的设计缺陷或者是设计模式,不少程序员,工程师新手入门的时候,都踩了不少坑。今天小编整理出来python常见的5个坑。不要再踩了。

1 含单个元素的元组

Python中有些函数的参数类型为元组,其内有1个元素,这样创建是错误的:

c = (5) # NO!

它实际创建一个整型元素5,必须要在元素后加一个逗号:


c = (5,) # YES!

2 默认参数设为空

含有默认参数的函数,如果类型为容器,且设置为空:

def f(a,b=[]):  # NO!
   print(b)
   return b

ret = f(1)
ret.append(1)
ret.append(2)
# 当再调用f(1)时,预计打印为 []
f(1)
# 但是却为 [1,2]

这是可变类型的默认参数之坑,请务必设置此类默认参数为None:

def f(a,b=None): # YES!
   pass

3 共享变量未绑定之坑

有时想要多个函数共享一个全局变量,但却在某个函数内试图修改它为局部变量:

i = 1
def f():
   i+=1 #NO!
   
def g():
   print(i)

应该在f函数内显示声明i为global变量:

i = 1
def f():
   global i # YES!
   i+=1

4 列表快速复制之坑

在python中*与列表操作,实现快速元素复制:

a = [1,3,5] * 3 # [1,3,5,1,3,5,1,3,5]
a[0] = 10 # [10, 2, 3, 1, 2, 3, 1, 2, 3]

如果列表元素为列表或字典等复合类型:

a = [[1,3,5],[2,4]] * 3 # [[1, 3, 5], [2, 4], [1, 3, 5], [2, 4], [1, 3, 5], [2, 4]]

a[0][0] = 10 #

结果可能出乎你的意料,其他a[1[0]等也被修改为10

[[10, 3, 5], [2, 4], [10, 3, 5], [2, 4], [10, 3, 5], [2, 4]]

这是因为*复制的复合对象都是浅引用,也就是说id(a[0])与id(a[2])门牌号是相等的。如果想要实现深复制效果,这么做:

a = [[] for _ in range(3)]

5 列表删除之坑

删除一个列表中的元素,此元素可能在列表中重复多次:

def del_item(lst,e):
   return [lst.remove(i) for i in e if i==e] # NO!

考虑删除这个序列[1,3,3,3,5]中的元素3,结果发现只删除其中两个:

del_item([1,3,3,3,5],3) # 结果:[1,3,5]

正确做法:

def del_item(lst,e):
   d = dict(zip(range(len(lst)),lst)) # YES! 构造字典
   return [v for k,v in d.items() if v!=e]

以上就是5个常见的坑点,希望看到这里的朋友能避开这些坑。

相关文章

  • Python处理Excel数据-pandas篇

    Python处理Excel数据-pandas篇,在计算机编程中,pandas是Python编程语言的用于数据操纵和分析的软件库。特别是,它提供操纵数值表格和时间序列的数据结构和运算操作。它的名字衍生自术语“面......
  • Ubuntu安装qt5

    Ubuntu安装qt5_qt5安装教程,最近打算学一下QT应用程序开发,所以打算装一个QT桌面环境QtCreator,捣鼓了一阵,把电脑弄坏重装系统之后,终于安装好了,这里分享一下安装的过程...

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。