【python】a.append(x)小坑

a.append(x)是很方便的用法:将x追加至a的尾部
当a为list,a的元素成员增加
当a为dataframe,a没有改变,必须a=a.append(x)

### Python 中不为人知的潜在问题和陷阱 #### 隐式的可变默认参数 当定义带有默认参数值的函数时,默认参数只会在函数被定义的时候求值一次。如果该默认参数是可变对象(如列表或字典),那么每次调用此函数而未提供相应参数的情况下都会共享同一个对象。 ```python def add_item(item, items=[]): items.append(item) return items print(add_item(1)) # 输出: [1] print(add_item(2)) # 可能期望得到 [2], 实际输出却是 [1, 2] ``` 这种行为通常不是开发者所预期的结果,应该避免使用可变类型的默认参数[^1]。 #### 字符串比较中的全角半角字符混淆 在处理来自不同源的数据时可能会遇到这样的情况:两个看似相同的字符串因为包含了全角字母与对应的半角字母而导致相等性判断失败。尽管这些字符看起来相似,在内部表示上它们有着不同的Unicode码位。 ```python str_a = "hello" str_b = "hello" # 使用的是全角字符 print(str_a == str_b) # False ``` 为了防止此类问题的发生,可以在输入验证阶段统一转换成相同形式再做对比操作。 #### 浮点数精度丢失 由于浮点数是以二进制方式存储的小数值近似表示法,因此某些十进制分数无法精确地用有限长度的二进制序列来描述。这可能导致简单的算术运算产生意外的结果。 ```python a = 0.1 + 0.2 b = 0.3 print(a == b) # False print(f"{a:.17f}") # 显示更多有效数字以查看差异 ``` 对于金融计算等领域来说非常重要,建议采用`decimal.Decimal`类来进行高精度计算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值