Разница между {'some_string'} и установленным ('some_string) в качестве аргументов ключевых слов в Python 3.7+ - PullRequest
2 голосов
/ 03 марта 2020

Я даю отзыв группе студентов по заданию, многие из которых пытаются передать набор в качестве аргумента ключевого слова в функцию, передав строку в фигурных скобках. Когда я печатаю (type({'some_string'})), я получаю class = set. Но когда я передаю тот же аргумент, что и set('some_string'), я получаю другой вывод.

например,

some_random_function (kwarg = {'some_string'})

отличается от

some_random_funtion(kwarg = set('some_string'))

Может кто-нибудь помочь мне понять, почему?

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Функция set обрабатывает свой аргумент как итеративный, и фактически повторяет по вашей строке, создавая набор букв - вы получите тот же результат из

set(['s', 'o', 'm', 'e', '_', 's', 't', 'r', 'i', 'n', 'g'])`

То, что вы действительно хотели, это set(['some_string']).

0 голосов
/ 03 марта 2020

Это потому, что {'some_string'} отличается от set('some_string')

a= set('some_string')
# {'_', 'e', 'g', 'i', 'm', 'n', 'o', 'r', 's', 't'}

a= {'some_string'}
# {some_string'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...