А также я знаю, PYTHONSTARTUP для команд, которые будут выполняться, когда интерпретатор запускает [1] . rlcompleter
для автозавершения внутренние Ваш сценарий, если это использует readline
библиотека. Что-то вроде этого:
$ ./myscript.py
My Script version 3.1415.
Enter your commands:
myscript> Begin
myscript> End
В Вашем примере Вы хотите завершиться на оболочка командная строка. Это автозавершение является функцией оболочки (или bash
или zsh
, независимо от того, что Вы используете). Посмотрите, например, введение для избиения автозавершения (также часть 2 ). Для zsh
посмотрите, например это руководство .
Просто сделайте эксперимент, люди!
Вот код для эксперимента, который я разработал:
#include <iostream>
#include <string>
#include <ctime>
using namespace std;
class foo {
public:
void foobar(int k) {
for (k; k > 0; k--) {
cout << k << endl;
}
}
void initialize() {
accessor = "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdf";
}
string accessor;
};
struct bar {
public:
void foobar(int k) {
for (k; k > 0; k--) {
cout << k << endl;
}
}
void initialize() {
accessor = "asdfasdfasdfasdfasdfasdfasdfasdfasdfasdf";
}
string accessor;
};
int main() {
clock_t timer1 = clock();
for (int j = 0; j < 200; j++) {
foo f;
f.initialize();
f.foobar(7);
cout << f.accessor << endl;
}
clock_t classstuff = clock();
clock_t timer2 = clock();
for (int j = 0; j < 200; j++) {
bar b;
b.initialize();
b.foobar(7);
cout << b.accessor << endl;
}
clock_t structstuff = clock();
cout << "struct took " << structstuff-timer2 << endl;
cout << "class took " << classstuff-timer1 << endl;
return 0;
}
На моем компьютере struct взяла 1286 тактов, а класс - 1450 часов клещи. Чтобы ответить на ваш вопрос, struct немного быстрее. Однако это не должно иметь значения, потому что в наши дни компьютеры работают очень быстро.
Фокус на создании эффективной структуры данных и эффективной логики для манипулирования структурой данных. Классы C ++ по своей природе не медленнее структур типа C, поэтому не позволяйте этому ограничивать ваш дизайн.