Python中的一些面试题(2)

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

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



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

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

def test():
    x = 6
    print x #x is local variabl is 6



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

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

mod.py
import config
config.x #引用全局变量

main.py
import config
import mod
print 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*value

a = test(4)
print a(4)
#结果是16



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

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



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

Python内建方法int()
但是int()只能转换十进制的字符串:
例如
int(‘1233‘):结果是1233
int(‘0x88‘)这个就会引发ValueError
int(‘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 copy
test = 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 bibao

name = test()
print name(5)


本文出自 “专注linux” 博客,请务必保留此出处http://forlinux.blog.51cto.com/8001278/1416670

Python中的一些面试题(2),布布扣,bubuko.com

Python中的一些面试题(2)

上一篇:c语言之流程控制


下一篇:java.lang.OutOfMemoryError