博客
关于我
Python编程中一定要注意的那些“坑”(一)
阅读量:271 次
发布时间:2019-03-01

本文共 1805 字,大约阅读时间需要 6 分钟。

Python编程实战指南

1. 运算符的误解

在Python中,逗号不是运算符,而是用于分隔符的常见用法。

>>> 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. ++ 和 -- 的误用

++ 和 -- 在Python中不是有效的运算符,尽管在某些编程语言中可能有此用法。

>>> x = 3>>> x +++ 58>>> x++  File "
", line 1 SyntaxError: invalid syntax>>> ++55>>> ++++++++55>>> --55

3. Lambda 表达式中的变量作用域

在 lambda 表达式中,变量的作用域容易引起混淆。

>>> d = {}>>> for i in range(5):...     d[i] = lambda: i**2...>>> d[2]()16>>> d[3]()16

这里的问题在于,lambda 表达式中的变量 i 是在调用时决定的,而不是在定义时固定的。

>>> i = 10>>> d[0]()100>>> d = {}>>> for i in range(5):...     d[i] = lambda x=i: x**2...>>> d[2]()4>>> d[3]()9

通过将 x 赋值为 i,可以确保 lambda 函数在调用时使用正确的值。

4. 局部变量的判断

在一个作用域中,只要有变量被赋值,且该变量在当前作用域内没有被声明,则它就是局部变量。

>>> x = 10>>> def demo():...     print(x)...>>> demo()10>>> def demo():...     print(x)...     x = 3...     print(x)...>>> demo()Traceback (most recent call last):  File "
", line 1, in
File "
", line 2, in demoUnboundLocalError: local variable 'x' referenced before assignment

在第二个示例中,x 被重新赋值,因此它被视为局部变量。

5. 元组的可变性

元组是不可变的对象,意味着其元素无法被修改。

>>> x = (1, 2, 3)>>> x[0] = 4Traceback (most recent call last):  File "
", line 1, in
TypeError: 'tuple' object does not support item assignment

如果需要修改元组中的元素,可以将其转换为列表进行操作。

>>> x = [1, 2]>>> x = (x, 3)>>> x[0].append(4)>>> x([1, 2, 3, 4], 3)

需要注意的是,列表和元组是不同的对象类型。

>>> y = x[0]>>> y += [5]>>> x([1, 2, 3, 4, 5], 3)>>> y[1, 2, 3, 4, 5, 6]

y 被重新赋值时,x[0]y 不再共享同一个对象。

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() 转换整数时,前导零会导致语法错误。

>>> eval("'09'")Traceback (most recent call last):  File "
", line 1, in
File "
", line 1 09SyntaxError: invalid token

转载地址:http://ooyx.baihongyu.com/

你可能感兴趣的文章
Oracle中merge into的使用
查看>>
oracle中sql查询上月、本月、上周、本周、昨天、今天的数据!
查看>>
oracle中sql的case语句运用--根据不同条件去排序!
查看>>
Oracle中Transate函数的使用
查看>>
oracle中关于日期问题的汇总!
查看>>
Oracle中常用的语句
查看>>
Oracle中序列的操作以及使用前对序列的初始化
查看>>
oracle中新建用户和赋予权限
查看>>
Oracle中的NVL,NVL2,NULLIF以及COALESCE函数使用
查看>>
Oracle中的rownum 和rowid的用法和区别
查看>>
oracle中的大小写、字符、dual、数字、处理、日期、函数、显/隐式、时间、条件表达式case、decode、to_date、to_char、sysdate
查看>>
oracle中表和视图的区别,oracle中常用表和视图
查看>>
oracle之表空间(tablespace)、方案(schema)、段(segment)、区(extent)、块(block)
查看>>
Oracle从11g导出后导入10g
查看>>
oracle从备份归档日志的方法集中回收
查看>>
oracle优化器analyzed,Oracle 学习之 性能优化(十三) 索引
查看>>
Oracle修改字段类型
查看>>
Oracle修改表或者字段的注释
查看>>
oracle典型安装失败,安装oracle 10失败
查看>>
Oracle内存结构详解(四)--Oracle SGA其他组成部分
查看>>