python的一些总结

 

Python程序员常犯的10个错误 

http://bookshadow.com/weblog/2014/05/14/top-10-mistakes-that-python-programmers-make/

 

PyCharm中Python代码提示:Shadows name from outer scope

        函数内部的变量,如果和函数被调用的外部的变量一样的话,就被PyCharm中叫做shadows name,这样的话,容易引发不容易觉察到的,由于函数内部和外部的变量名一致而引发的一些问题:

         比如:内部函数名引用时不小心写错了时,就会导致其实调用了外部变量名,从而导致逻辑错乱。

所以解决办法是:

          确保函数内部和外部的变量名不要重复,这样就不会导致可能由此导致的错误了。

 

1.list索引超出范围

list_1 = []
print list_1[3]  # IndexError: list index out of range

2.除法

整型地板除:在python2、C、C++、Java中常见,特点是整数相除舍弃小数取整,浮点数相除则保留小数(如果有);

1 >>>1/2
2 0
3 >>>1.0/2.0
4 0.5

完全地板除:只留整数的除法,特点是无论整数还是浮点数,均不保留小数(如果有);

>>>1//2
0
>>>1.0//2.0
0.0

精确除法。特点是无论整数还是浮点数,均保留小数(如果有)。

python2中需要在开头加上 from __future__ import division; python3中 / 默认的为精确除法,因此python2的代码在python3里,整形相除的运算结果都会变化;

 from __future__ import division
1 >>>1/2
2 0.5
3 >>>1.0/2.0
4 0.5

Tip : 表达式中除法运算时,除非只要保留整数,最好用浮点数代替整数,如 2/3 写成 2.0/3 或 2/3.0 或 2.0/3.0 ,特别是表达式中存在大量符号运算时,(....)/(....) 往往会得到意想不到的结果。

 

3.类继承时,若子类重写了__init__()方法,则父类的__init__()方法不会在子类实例化时执行。此时,若子类和父类中的相关方法,用到了,在父类的__init__()方法中定义的一些数据成员,运行时会出现该数据成员未定义的报错;

解决此错误,需要在子类中显示调用父类__init__()方法,类似如下:

class WalkManager(WalkPlaner):

    def __init__(self):
        print " WalkManager.__init__() run"
        # super(WalkManager, self).__init__()  # super()调用父类__init__(),否则,父类__init__()不会运行;
        WalkPlaner.__init__(self)  # 直接调用父类__init__(),self不能省略

 

4.

python中万物皆为对象,用None表示一个空对象。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。可以将None赋值给任何变量,也可以给None值变量赋值。

>>>type(None)
<class 'NoneType'>

 

5.随机数  random()

random()产生的是[0,1)范围内的随机数,不同于C++中的rand()函数,该每次运行产生的随机数不同;

C++中的rand()函数,每次运行产生的随机数相同,可借助于srand(seed)函数,来产生不同的随机数,但前提是,每次的seed要不同;

from random import random

 for i in range(10):
      print " random {}  =  {}".format(i, random())

结果如下:

 random 0  =  0.593180204205
 random 1  =  0.0984847619278
 random 2  =  0.303697634057
 random 3  =  0.44980140159
 random 4  =  0.575947041285
 random 5  =  0.782555323799
 random 6  =  0.10262314415
 random 7  =  0.567161032414
 random 8  =  0.480536145764
 random 9  =  0.328421075104

 

6.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值