Можно использовать то, что кодировки символов для цифр - все в порядке от 48 (для '0') к 57 (для '9'). Это сохраняется для ASCII, UTF-x и практически вся другая кодировка ( см. комментарии ниже для больше на этом ).
Поэтому целочисленное значение для любой цифры является цифрой минус '0' (или 48).
char c = '1';
int i = c - '0'; // i is now equal to 1, not '1'
синонимично с
char c = '1';
int i = c - 48; // i is now equal to 1, not '1'
Однако, я нахожу первое c - '0'
намного более читаемым.
try:
thevariable
except NameError:
print("well, it WASN'T defined after all!")
else:
print("sure, it was defined.")
For this particular case it's better to do a = None
instead of del a
. This will decrement reference count to object a
was (if any) assigned to and won't fail when a
is not defined. Note, that del
statement doesn't call destructor of an object directly, but unbind it from variable. Destructor of object is called when reference count became zero.
Я думаю, что лучше избегать такой ситуации. Будет чище и понятнее написать:
a = None
if condition:
a = 42
'a' в vars () или 'a' в globals ()
если вы хотите быть педантичным, вы также можете проверить встроенные функции
'a' в vars ( __builtins __)
try:
a # does a exist in the current namespace
except NameError:
a = 10 # nope