стиль Python ** вопрос - PullRequest
       15

стиль Python ** вопрос

7 голосов
/ 21 июля 2011

Я работаю над своим первым проектом на Python 2.7. Мы пришли из Java-фона, и нашим первым инстинктом было написать код на языке Python в стиле Java. Но сейчас мы пытаемся максимально адаптироваться. Пока что мы используем pylint для адаптации нашего кода.

Теперь я продолжаю сталкиваться с ситуацией с pylint . Каждый раз, когда я использую что-то вроде **data для передачи значений в метод, я получаю предупреждение pylint об использовании * или **. Теперь мой вопрос: является ли использование ** плохим стилем для написания кода на Python? Есть ли какая-то стандартная замена для использования этого?

С уважением, Богдан

Ответы [ 3 ]

4 голосов
/ 21 июля 2011

** может привести к еще более сложной ошибке, потому что она будет принимать все что угодно. Обычно вам нужен код, который ломается при неправильном вызове Вот пример:

def dostuff(**kwargs):
 force = 3
 if kwargs.get('reallyhard', False):
     force += 5 
 # and so on

# Now you need luck to find this bug  ...
dostuff(fancy=True, funky=False, realyhard=True)

Вы не должны использовать ** только потому, что вам лень набирать имена аргументов. Это не всегда возможно, поэтому есть и законное использование.

2 голосов
/ 21 июля 2011

** отлично подходит для того, для чего он предназначен: для передачи аргументов другим функциям.Вы определенно можете делать плохие вещи, которые ухудшают читабельность вашего кода, но это не считается плохой практикой как таковой.

2 голосов
/ 21 июля 2011

Практически невозможно использовать статический анализ, чтобы проверить, что аргументы, сгенерированные **, являются действительными, но если это единственный подходящий механизм, они непременно его используют.

...