Timing sia sembra str.islower
è molto più efficiente in modo che non è solo il sovraccarico di dover importare:
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
python3
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
Una differenza/Il vantaggio è che non si deve effettivamente eseguire il cast su un oggetto str, è possibile passare una stringa di un carattere o un intero.
In [38]: ascii.islower(97)
Out[38]: True
Ma usando chr con str.lower
è ancora più efficiente:
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
L'unico riferimento la curses howto documentation fa circa l'uso di curses.ascii
è come può essere utile quando si utilizza la libreria 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
Il modulo curses.ascii fornisce classe ASCII funzioni di appartenenza che accettano argomenti interi o stringa di 1 carattere; questi possono essere utili per scrivere test più leggibili per i tuoi interpreti di comando. Fornisce anche funzioni di conversione che accettano argomenti interi o stringa di 1 carattere e restituiscono lo stesso tipo.
penso vi sarà difficile trovare alcun vantaggio utilizzando ascii.islower
oltre str.islower
al di fuori di qualsiasi questione relativa al modulo di maledizioni.
fonte
2015-02-17 20:27:43
Lasciamo aperto. Non penso sia troppo ampio. OP sta chiedendo perché il modulo esista considerando che alcune funzioni sembrano essere ben trattate altrove. Penso che sia una domanda a cui si può rispondere in modo sintetico. –
'ascii.islower' funziona esplicitamente su ascii. presumibilmente questo potrebbe essere più efficiente di 'str.islower'? – njzk2