Найти - Пользователи
Полная версия: set object is not callable
Начало » Python для новичков » set object is not callable
1
PogChamp
Здравствуйте.
Помогите разобраться, в чем ошибка, пожалуйста.

Создал модуль vsearch c двумя функциями search4vowels и search4letters.

 def search4vowels(phrase: str) -> set:
    """Возвращает гласные, найденные в указанной фразе"""
    vowels = set('aeiou')
    return vowels.intersection(set(phrase))
def search4letters(phrase: str, letters: str='aeiou') -> set:
    """Возвращает буквы, найденные в указанной фразе"""
    return set(letters).intersection(set(phrase))

Потом используют функцию search4letters из этого модуля в следующем коде:

 from flask import Flask
from vsearch import search4letters
app = Flask(__name__)
@app.route('/')
def hello() -> str:
	return 'Hello world from Flask!'
@search4letters('/search4')
def do_search() -> str:
	return str(search4letters('life, the universe, and everything', 'eiru,!'))
	
app.run()

И когда пытаюсь запустить его в командной строке, выдает ошибку
'set' object is not callable
Хотя в книге, откуда взяты примеры, у авторов все работает. Книга переведенная, может, дело в опечатке, но сам, сколько голову ни ломал, додуматься не могу.
Stright
Поправьте декоратор у функции do_search()
PogChamp
 def @do_search() -> str:
Вот так? Ругается на invalid syntax.
Stright
Вы написали:
 @search4letters('/search4')
def do_search() -> str:
	return str(search4letters('life, the universe, and everything', 'eiru,!'))
Функция search4letters не может быть декоратором, вы, должно быть хотели написать:
 @app.route('/search4')
def do_search() -> str:
	return str(search4letters('life, the universe, and everything', 'eiru,!'))
PogChamp
Действительно.
Спасибо за помощь.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB