python3 常见问题解决

彩笔编程时遇到的问题总结一下。

常见问题解决

1. 不是类方法不要多加self

def fun(self,*a):
    return a
print(fun(*(1,2,3,4,5,6)))
#(2, 3, 4, 5, 6)

2. 传递一个可变对象(如列表)作为默认参数,那么这个对象将在函数定义时被创建,并在所有的函数调用中被共享。

def demo(new,old=[]):#第一次调用时创建列表添加元素后old为['a'],第二次调用添加一个元素后为['a','b']
    old.append(new)
    return old
print(demo('a'))#['a']
print(demo('b'))#['a', 'b']
#改正
def demo(new, old=None):  
    if old is None:  
        old = []  
    old.append(new)  
    return old
print(demo('a'))#['a']
print(demo('b'))#['b']

3. 在循环中试图修改正在迭代的对象容易出问题。

x=[1,2,1,2,1,2]
for i in x:
    x.remove(i)
print(x)#[2, 2, 2]
#正确写法
x=[1,2,1,2,1,2]
for i in x[::]:#x[::]是x的副本
    x.remove(i)#[]

4. 解包优先问题

def fun(a,b,c):
    print(a,b,c)
fun(a=1,*(2,3))#报错,因为先解包a=2,b=3,然后a=1,a被重复赋值了,所以报错
fun(c=3,*(1,2))

5. 浮点数计算错误

print(1.5*1.1234)
#1.6850999999999998
#正确

import decimal
a=decimal.Decimal('1.1234')
b=decimal.Decimal('1.5')
print("%s"%(str(a*b).rstrip('0')))#计算并去掉小数点后最右边多余的0
#1.6851

你可能感兴趣的:(python学习,python,开发语言)