Сколько записей имеет ваш фрейм данных? это не имеет значения, хотя.
Я полагаю, что он ведет себя так, как ожидалось, так как вы показываете всего 5 записей, ваш второй запрос возвращает другой набор данных после разбиения.
попробуйте отсортировать по некоторому столбцу и получить первые 5 результатов, он должен дать вам одинаковые результаты до и после разбиения.
Благодаря
Если это - действительно функция, которая является внутренней только к этому.c файл, то да. Это должно помочь постараться не загрязнять глобальное пространство имен. Кроме того, я думаю, что компилятор может сделать некоторую оптимизацию с соглашениями о вызовах, если функция статична начиная с него knowns, никакой другой исходный файл не должен знать, как назвать его. Это только действительно относится к c, потому что, поскольку другие отметили, C++ имеет пространства имен для решения этой проблемы.
В C++ Вы объявили бы функцию, частную как это:
class MyClass
{
public:
void publiclyAccessibleFunction();
private:
void onlyAccesibleFromWithinTheClass();
int some_member_parameter;
};
Отметьте onlyAccesibleFromWithinTheClass()
функция.
Если Вы используете GCC, то необходимо смотреть на флаг видимости (см. http://gcc.gnu.org/wiki/Visibility для полного обсуждения).
Это скроет символы полностью в противоположность маркировке их недостижимый. Это уменьшает таблицу символов и помогает уменьшить времена ссылки.
Не только, что, это открывает дверь для большего количества встраивания, если это - то, что Вы после.
Если 'модулем' Вы просто имеете в виду файл CPP, Вы могли бы просто поместить объявление и определение прямо в файле CPP.
В коде C сделайте свои функции статичными по умолчанию. Только сделайте нестатические функции и.h объявления для функций, которые будут необходимы другим модулям.
В коде C++, помещенном те функции, которые локальны для файла в анонимное пространство имен и делают их статичными. В компиляторе GNU, по крайней мере, это приведет к лучшему и наименьшему коду, потому что никакая функция не будет записана, если все использование будет встроено. Если Вы предназначаете это, чтобы быть встроенными, то, конечно, маркировка его встраивает, еще лучше, чем статичный.
Я не знаю, почему g ++ пишет неуместные тела функции, которые находятся в анонимных пространствах имен в вывод вообще, но он делает. Функции со скрытой видимостью, кажется, обнаруживаются также; отмеченный как скрытые символы, но все еще создание неиспользованных блоков кода в объектном файле. GCC, вероятно, не понимает, что код не необходим в тех случаях. Или я пропускаю что-то, всегда возможное.
Очень похожий вопрос задали прежде здесь. Существует пример пограничного случая, где объявление функциональных статических результатов в поведении, очень отличающемся к той из функции пространства имен без имени. См. мой ответ.
О единственном потенциально полезном свойстве я могу думать для этого использования "статических" в C++, который не обеспечивают анонимные пространства имен, то, что существует предупреждение в GCC, который можно включить для неиспользованных статических функций (форма мертвого кода). Вы не получаете это для неиспользованных функций в анонимных пространствах имен, поэтому в маловероятном случае, что Вы хотите, чтобы компилятор сказал Вам, когда Вы прекращаете использовать функцию, сделайте это тот путь.
Договорились. Как следствие прототипы для статических функций должны пойти наверху.c файла, не в.h файле.
В C++ необходимо использовать анонимное пространство имен, как так:
// foo.cpp
namespace
{
class Core { ... };
void InternalFandango(Core *);
}
void SomeGloballyVisibleFunction()
{
InternalFandango(&core);
}
Преимущество: это применимо к структуре / объявления класса, также.
В C просто отметьте "статичные" функции. Нет ничего против использования "статичного" в C++ также, но я учился предпочитать пространство имен, поскольку это - одно единственное понятие, которое работает на все объявления.
В C я делаю все - функции и переменные - статичным в объеме файла, пока я не могу продемонстрировать, что они необходимы вне файла. Я сделаю вещи статичными в функции, если только, что функция будет использовать их и они не будут слишком огромны. В основном, если объявление больше, чем остальная часть функции, я могу поместить объявление вне функции. И, конечно, существует заголовок для услуг общего пользования, предоставленных исходным файлом.
Для C++ лучшее, чем статичный должно поместить его в (анонимное) пространство имен без имени. Это - предпочтительный способ предотвратить загрязнение Глобального пространства имен.
namespace {
void myLocalFunction() {
// stuff
}
}
Был много о деталях реализации и не слишком много о понятии.
Ограничение объема переменной/функции и т.д. хорошая практика действительно. Это - фундаментальное понятие объектно-ориентированного проектирования - Вы хотите, сохраняют частными как частными. Таким образом, Ваш интерфейс является более чистым, и обслуживание кода легче. И Вы не найдете один день, что изменение чего-то, что Вы рассмотрели как частное, повредило компиляцию, потому что кто-то в другой части проекта любил Вашу функцию и решил использовать его.
Я думаю, что C и C++ имеют различные ограничения относительно static
: в C у Вас нет пространств имен, и.c файлы являются Вашими модулями, таким образом, действительно действительно важно поместить все непубличные функции как статичные для предотвращения ошибок!