Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Это добросовестный выбор из Python.
Во-первых, что касается исправления встроенного типа, это, прежде всего, решение [] и только во второй раз оптимизация. Я узнал из многих скрытых в Python Mailing List, что исправление обезьян на встроенных типах, хотя и приятное для небольших скриптов, не служит никакой цели в чем-то большем.
Библиотеки, например, делают определенные предположения о типах. Если бы было предложено расширить типы по умолчанию, многие библиотеки в конечном итоге будут бороться друг с другом. Это также препятствовало бы созданию новых типов - deque - это deque, упорядоченный набор - упорядоченный набор, словарь - это словарь, и это должно быть.
Литеральный синтаксис особенно важный момент. Если вы не можете гарантировать, что [1, 2, 3]
является списком, что вы можете гарантировать? Если люди могут изменить эти поведения, это будет иметь такое глобальное воздействие, чтобы разрушить стабильность большого количества кода. Существует причина goto , и глобальные переменные обескуражены.
Существует один конкретный взлом, который я am любит. Когда вы видите r"hello"
, это похоже на расширенную литеральную форму.
Так почему бы не r[1, 2, 3]
?
class ListPrefixer:
def __init__(self, typ):
self.typ = typ
def __getitem__(self, args):
return self.typ(args)
class MyList(list):
def each(self, func):
return MyList(func(x) for x in self)
e = ListPrefixer(MyList)
e[1, 2, 3, 4].each(lambda x: x**2)
#>>> [1, 4, 9, 16]
Наконец, если вы действительно хотите сделайте глубокие хаки АСТ, проверьте MacroPy .
[1, 2, 3]
является списком, что вы можете гарантировать? & Quot; И в отношении вашего примера: вы орехи! :) – Benjamin Hodgson♦ 29 September 2013 в 22:25