Python空格的问题
__metaclass__ = type # super only works with new-style classes
def checkIndex(key):
"""
Is the given key an acceptable index?
To be acceptable, the key should be a non-negative integer. If it
is not an integer, a TypeError is raised; if it is negative, an
IndexError is raised (since the sequence is of infinite length).
"""
if not isinstance(key, (int, long)): raise TypeError
if key<0: raise IndexError
class ArithmeticSequence:
def __init__(self, start=0, step=1):
"""
Initialize the arithmetic sequence.
start - the first value in the sequence
step - the difference between two adjacent values
changed - a dictionary of values that have been modified by
the user
"""
self.start = start # Store the start value
self.step = step # Store the step value
self.changed = {} # No items have been modified
def __getitem__(self, key):
"""
Get an item from the arithmetic sequence.
"""
checkIndex(key)
try:
return self.changed[key] # Modified?
except KeyError: # otherwise...
return self.start + key*self.step # ...calculate the value
def __setitem__(self, key, value):
"""
Change an item in the arithmetic sequence.
"""
checkIndex(key)
self.changed[key] = value # Store the changed value
上面是我从电子书上复制的代码,运行后提示有缩进问题,谁能帮我排查一下?谢谢!!!
另外,有没有什么工具可以使缩进不正确的python代码缩进正确?我曾经就见过eclipse格式化Java代码,请问有对应的Python工具吗?
[解决办法]
总结前面所述:
1.python中,没有(类似于其他语言可用的,比如SourceFormatX之类的)代码格式话工具,即意味着,你无法用工具,打开python文件,直接点击某个按钮,就可以帮你全部格式化好了。
2.只能通过手工去格式化你的python代码
所谓手工,那就是,把属于每个函数(def关键字)所属代码,按照自己对代码的内在逻辑的理解,去一行行的缩进
此工作,目前只能手工做,好像也没有其他更加方便的方法。
3.单独针对手工一行行的处理python代码,不同的工具中,实现的效率也会不同。
推荐使用Notepad++,因为此软件有很多方便你格式化Python代码的功能:
(1)可以显示所有特殊字符,包括空格,TAB键,行尾符等
具体参考:
http://www.crifan.com/files/doc/docbook/crifan_rec_soft/release/html/crifan_rec_soft.html#npp_func_show_special_char
(2)支持将TAB键自动转换为空格
目的在于,对于Python这样的语言,是靠缩进来决定代码逻辑的,所以对于缩进,TAB键和(4个连续的)空格,两者之间不是等价的,会产生语法错误的。
此时就可以利用Notepad++的,将TAB键自动转为(默认为4个,可以自定义个数)空格,实现很方便的代码格式化。
具体参考:
http://www.crifan.com/files/doc/docbook/crifan_rec_soft/release/html/crifan_rec_soft.html#npp_func_space_replace_tab
总之,需要手动处理Python代码,但是用Notepad++去处理,可以极大地提高效率。