对两者进行计时似乎str.islower
效率更高,因此这不仅仅是需要导入的开销:
Python2:
In [68]: timeit islower("f")
1000000 loops, best of 3: 641 ns per loop
In [69]: timeit "f".islower()
10000000 loops, best of 3: 50.5 ns per loop
蟒蛇3
In [2]: timeit "f".islower()
10000000 loops, best of 3: 58.7 ns per loop
In [3]: timeit islower("f")
1000000 loops, best of 3: 801 ns per loop
一个区别/优势是您实际上不必强制转换为 str 对象,您可以传递一个字符串或一个整数。
In [38]: ascii.islower(97)
Out[38]: True
但是使用 chr withstr.lower
仍然更有效:
In [51]: timeit ascii.islower(122)
1000000 loops, best of 3: 583 ns per loop
In [52]: timeit chr(122).islower()
10000000 loops, best of 3: 122 ns per loop
curses howto 文档中关于使用 的唯一参考是它在使用库curses.ascii
时如何有用 :curses
while 1:
c = stdscr.getch()
if c == ord('p'):
PrintDocument()
elif c == ord('q'):
break # Exit the while()
elif c == curses.KEY_HOME:
x = y = 0
curses.ascii 模块提供了 ASCII 类成员函数,它接受整数或 1 个字符的字符串参数;这些可能有助于为您的命令解释器编写更具可读性的测试。它还提供采用整数或 1 个字符的字符串参数并返回相同类型的转换函数。
我认为您将很难在与 curses 模块相关的任何内容之外找到任何ascii.islower
优势。str.islower