Ну яж не говорю, что логика отсутствует :) Просто если по-нормальному читать, то берём строку и объединяем с массивом - хрень какая-то... Понятное дело, что человек ко всему привыкает, но вопрос зачем это делать, если можно было бы без этого обойтись?
Мне это тоже показалось сначала странным, потом начал рассуждать так: в питоне строка — не список (как в ерланге, например), поэтому join можно применить только к списку строк, а список у нас может содержать не только строки, но и всё, что угодно. Значит, делать join одним из методов списка неправильно. Но использовать ",".join(...) вообще страшно, поэтому я использую str.join(",", ["qwe", "asd"])
А по-моему тут проблема, что ООПшный взгляд тут только мешает, выделение какого-либо аргументов в качестве this не несёт большого смысла, поэтому самым логичным для меня была бы "свободная" функция, но в рамках Питона самым внятным будут твои последние 2 варианта.
А что не так?
ОтветитьУдалитьнелогично...
ОтветитьУдалитьобратный порядок (как, например, в жабаскрипте) чуть лучше, но самым нормальным было бы имхо что-нибудь около words.join_with(';')
Этот комментарий был удален автором.
ОтветитьУдалитьjoin() - строковый метод, ';' - строка. Логика есть :)
ОтветитьУдалитьНу яж не говорю, что логика отсутствует :)
ОтветитьУдалитьПросто если по-нормальному читать, то берём строку и объединяем с массивом - хрень какая-то...
Понятное дело, что человек ко всему привыкает, но вопрос зачем это делать, если можно было бы без этого обойтись?
words не просто массив, а вообще iterator
ОтветитьУдалитьНичего конкретно не доказываю, просто в голову пришло.
Кстати да, важное замечание, об этом как-то я не подумал...
ОтветитьУдалитьАга, а еще str.__len__() или len(str) вместо ожидаемого str.len()
ОтветитьУдалитьДумаю, это говорит о том, что даже у Гвидо есть кривые руки и прямые извилины...
а что плохого в len(str). len - полиморфная функция, по-моему всё ок.
ОтветитьУдалитьМне это тоже показалось сначала странным, потом начал рассуждать так: в питоне строка — не список (как в ерланге, например), поэтому join можно применить только к списку строк, а список у нас может содержать не только строки, но и всё, что угодно. Значит, делать join одним из методов списка неправильно. Но использовать ",".join(...) вообще страшно, поэтому я использую str.join(",", ["qwe", "asd"])
ОтветитьУдалитьИли string.join(["qwe", "xcv"], ",")
Так-то :)
А по-моему тут проблема, что ООПшный взгляд тут только мешает, выделение какого-либо аргументов в качестве this не несёт большого смысла, поэтому самым логичным для меня была бы "свободная" функция, но в рамках Питона самым внятным будут твои последние 2 варианта.
ОтветитьУдалитьГоворят, правда, что string — устаревший модуль, оставлен только для совместимости, поэтому лучше юзать str, наверное.
ОтветитьУдалить