前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python编程中一定要注意的那些“坑”(一)

Python编程中一定要注意的那些“坑”(一)

作者头像
Python小屋屋主
发布2018-04-16 16:10:09
5900
发布2018-04-16 16:10:09
举报
文章被收录于专栏:Python小屋Python小屋

1 逗号不是运算符,只是个普通的分隔符 >>> x = 3, 5 >>> x (3, 5) >>> x == 3, 5 (False, 5) >>> 1, 2, 3 (1, 2, 3) >>> 3 in [1, 2, 3], 5 (True, 5)

2 ++和--也不是运算符,虽然有时候这样用也行 >>> x = 3 >>> x+++5 8 >>> x++ SyntaxError: invalid syntax >>> ++5 5 >>> ++++++++5 5 >>> --5 5

# 下面这个代码是上面那个代码的等价形式

>>> -(-5) 5 >>> ---------5 -5

3 lambda表达式中变量的作用域 >>> d = dict() # 这里有个坑 >>> for i in range(5): d[i] = lambda :i**2 >>> d[2]() 16 >>> d[3]() 16 # 这样看的更清楚一些 # lambda表达式中i的值是调用时决定的 >>> i = 10 >>> d[0]() 100 # 写成下面这样子就没问题了 >>> d = dict() >>> for i in range(5): d[i] = lambda x=i:x**2 >>> d[2]() 4 >>> d[3]() 9

4 某个作用域中只要有某变量的赋值语句,它就是个局部变量 >>> x = 10 >>> def demo(): print(x) # 这样是可以的,访问全局变量 >>> demo() 10 >>> def demo(): print(x) x = 3 print(x) # 这样是错的,x是局部变量,在x=3之前不存在x,print()失败 >>> demo() Traceback (most recent call last): File "<pyshell#156>", line 1, in <module> demo() File "<pyshell#155>", line 2, in demo print(x) UnboundLocalError: local variable 'x' referenced before assignment

5 纠结的元组到底可变不可变 >>> x = (1, 2, 3) # 元组中的元素不可修改 >>> x[0] = 4 Traceback (most recent call last): File "<pyshell#161>", line 1, in <module> x[0] = 4 TypeError: 'tuple' object does not support item assignment >>> x = ([1, 2], 3) # 不能修改元组中的元素值 >>> x[0] = [3] Traceback (most recent call last): File "<pyshell#163>", line 1, in <module> x[0] = [3] TypeError: 'tuple' object does not support item assignment >>> x ([1, 2], 3) >>> x[0] = x[0] + [3] Traceback (most recent call last): File "<pyshell#165>", line 1, in <module> x[0] = x[0] + [3] TypeError: 'tuple' object does not support item assignment >>> x ([1, 2], 3) # 这里有个坑,虽然显示操作失败了,但实际上成功了 >>> x[0] += [3] Traceback (most recent call last): File "<pyshell#167>", line 1, in <module> x[0] += [3] TypeError: 'tuple' object does not support item assignment >>> x ([1, 2, 3], 3) >>> x[0].append(4) >>> x ([1, 2, 3, 4], 3) # y和x[0]指向同一个列表,通过其中一个可以影响另一个 >>> y = x[0] >>> y += [5] >>> x ([1, 2, 3, 4, 5], 3) # 执行完下面的语句,y和x[0]不再是同一个对象 >>> y = y + [6] >>> x ([1, 2, 3, 4, 5], 3) >>> y [1, 2, 3, 4, 5, 6]

6 字符串转换成数字的几种方式

>>> eval('9.9') 9.9 >>> eval('09.9') 9.9 >>> float('9.9') 9.9 >>> float('09.9') 9.9 >>> int('9') 9 >>> int('09') 9

# 坑来了,使用eval()转换整数时前面不能有0

>>> eval('09') Traceback (most recent call last): File "<pyshell#187>", line 1, in <module> eval('09') File "<string>", line 1 09 ^ SyntaxError: invalid token

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档