python有什么工具可以找程序的bug,和分析程序的错误?

PyChecker:PyChecker是一个python脚本分析工具,它可以发现python脚本中的bugsPylint:ylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准和有潜在问题的代码。Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等。

怎么在函数中使用全局变量?

global variable 在函数中声明使用全局变量x = 5def test():    print x #x global variable is 5def test():    x = 6    print x #x is local variabl is 6

如何在各个modules下共享全局变量?

使用一个特殊的modules,来实现全局变量的共享,通常我们叫做配置文件config.pyx = 0 #默认的配置mod.pyimport configconfig.x #引用全局变量main.pyimport configimport modprint config.x

对象的深拷贝方式?

列表的深拷贝方式一:    a=[1,2,3]    b = a[:]方式二:    from copy import deepcopy    a = [1,3,5]    b = deepcopy(a)字典的深拷贝    a={1:2,3:4}    b = a.copy()#方式一    c = deepcopy(a)#方式二

python对象中的__call__的作用?

__call__返回一个可调用的对象, 但是有一个缺点就是很慢example:class test(object):    def __init__(self,value):        self.x = value    def __call__(self,value):        return self.x*valuea = test(4)print a(4)#结果是16

怎么找到一个对象中的所有方法或属性?

dir(x) x可以是一个实列也可以是一个类这个函数将会返回一个按字母顺序排列的方法和属性的列表

怎么将一个字符串转换成数字?

Python内建方法int()但是int()只能转换十进制的字符串:例如int('1233'):结果是1233int('0x88')这个就会引发ValueErrorint('agd')这个就会引发ValueError总结之:int()只能转换全是数字字符的并且必须是十进制的字符串

怎么将数字转换成字符串?

使用内建方法str(),但是若想将十六进制或者八进制的数字转换成字符串就需要使用hex()和oct()例如:str(123)str(0x11)str(011)#结果分别是'123','17','9'hex(0x11)oct(011)#结果分别是'0x11','011'

如何修改字符串中某个位置的字符?

字符串是不可变的类型,需要转换成list或array来实现方法一:转换成list来做s = "Hello world"a = list(s)a[2:] = list("!!!!!")''.join(a)方法二:转换成数组import array#array有两个参数第一个代表转换的类型#c 代表字符a = array.array('c',s)#接着就可以对s中的字符串做任意修改了,但是只能一个一个字符的修改a[2] = "!"

怎么使用一个字符串去调用一个方法?

有很多方式:最好的一个就是使用map映射一个字符串到一个函数:方法一:列子:def func1():    print "I am func1"def func2():    print "I am func2"StrMap={"first1":func1,"first2":func2}StrMap["first1"]()#调用func1,结果是I am func1方法二:getattr()这个函数用于获取一个类的方法和属性例子:import copytest = getattr(copy,"deepcopy")a={1,2,4}b=test(a)print b方法三:使用locals(),def myFunc():    print "hello"fname = "myFunc"#locals()包含了执行到此刻代码中的所有本地变量f = locals()[fname]f()#eval将会把参数的中字符串当作有效的python表达式执行f = eval(fname)f()方法四:闭包def test():    x = 5    def bibao(name):        return x*name    return bibaoname = test()print name(5)