Как постараться не писать запрос. GET.get () дважды для печати его?

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

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

существует много вещей, что я думаю, необходимы , но не достаточные, для этого для появления (без определенного порядка):

  • предложенные люди, которые будут добавлены к проекту, должны иметь:
    • , По крайней мере, разумное понимание проблемной области проекта
    • Быть опытным на языке проекта и определенных технологий, которые они использовали бы для задач, которые им дадут
    • , Их мастерство должно/not/быть намного меньше или намного больше, чем самый слабый или самый сильный существующий участник соответственно. Слабые участники истощат Ваш существующий штат с третичными проблемами, в то время как новый человек, который слишком силен, разрушит команду с тем, как все они сделали и делают, является неправильным.
    • Имеют хорошие коммуникативные навыки
    • быть высоко мотивированным (например, быть в состоянии работать независимо, не подталкивая)
  • , существующие члены команды должны иметь:
    • Отличные коммуникативные навыки
    • Превосходные навыки тайм-менеджмента
  • руководитель проекта / управление должен иметь:
    • Хорошие способности к установлению приоритетов и распределению ресурсов
    • высокий уровень А уважения от существующих членов команды
    • Отличные коммуникативные навыки
  • проект должен иметь:
    • А хорошая, завершенная, и зарегистрированная спецификация
    • разработки программного обеспечения Хорошая документация вещей уже реализовала
    • модульная конструкция А, чтобы позволить ясным блокам ответственности быть вырезанными
    • Достаточные автоматизированные процессы для гарантии качества для необходимого количества дефектов, Они могли бы включать такие вещи как: модульные тесты, регрессионные тесты, автоматизированное развертывание сборки, и т.д.)
    • система слежения ошибки/функции А, которая является в настоящее время оперативной и используемой командой (например, trac, SourceForge, FogBugz, и т.д.).

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

, Если результат вышеупомянутого абзаца не достаточен, то посетите список выше. При ловле промаха расписания рано добавление правильных членов команды в нужное время может сохранить выпуск. К сожалению, чем ближе Вы добираетесь до своей ожидаемой даты поставки, тем больше вещей может пойти не так, как надо с добавляющими людьми. Однажды, Вы пересечете "точку невозврата", где никакое количество изменения (кроме поставки текущего ответвления разработки) не может сохранить Ваш выпуск.

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

  • Были поздними перед запуском (больше материала, чем время), и/или
  • подсунул 1 час, 1 день во время.

Hope, которая помогает!

41
задан kenorb 23 May 2015 в 19:31
поделиться

7 ответов

Наверное, не совсем то, о чем вы думали, но ...

q = request.GET.get('q')
if q:
    print q

это?

25
ответ дан 27 November 2019 в 00:45
поделиться

См. Мой рецепт 8-летней давности здесь только для этой задачи.

# In Python, you can't code "if x=foo():" -- assignment is a statement, thus
# you can't fit it into an expression, as needed for conditions of if and
# while statements, &c.  No problem, if you just structure your code around
# this.  But sometimes you're transliterating C, or Perl, or ..., and you'd
# like your transliteration to be structurally close to the original.
#
# No problem, again!  One tiny, simple utility class makes it easy...:

class DataHolder:
    def __init__(self, value=None): self.value = value
    def set(self, value): self.value = value; return value
    def get(self): return self.value
# optional but handy, if you use this a lot, either or both of:
setattr(__builtins__,'DataHolder',DataHolder)
setattr(__builtins__,'data',DataHolder())

# and now, assign-and-set to your heart's content: rather than Pythonic
while 1:
    line = file.readline()
    if not line: break
    process(line)
# or better in modern Python, but quite far from C-like idioms:
for line in file.xreadlines():
    process(line)
# you CAN have your C-like code-structure intact in transliteration:
while data.set(file.readline()):
    process(data.get())
25
ответ дан 27 November 2019 в 00:45
поделиться

Ну, это будет односторонний

q = request.GET.get('q')
if q:
    print q

Более короткий (но не лучший, из-за призыва «ничего не печатать») будет

print request.GET.get('q') or '',
0
ответ дан 27 November 2019 в 00:45
поделиться
q = request.GET.get('q')
if q:
    print q
else:
    # q is None
    ...

Невозможно выполнить присваивание и условные обозначения за один раз ...

2
ответ дан 27 November 2019 в 00:45
поделиться

Если get () выдает исключение, когда его нет, вы можете сделать

try:
   q = request.GET.get('q')
   print q
except :
   pass
1
ответ дан 27 November 2019 в 00:45
поделиться

Вариант Ответ Алекса :

class DataHolder:
    def __init__(self, value=None, attr_name='value'):
        self._attr_name = attr_name
        self.set(value)
    def __call__(self, value):
        return self.set(value)
    def set(self, value):
        setattr(self, self._attr_name, value)
        return value
    def get(self):
        return getattr(self, self._attr_name)
save_data = DataHolder()

Использование:

if save_data(get_input()):
    print save_data.value

или, если вы предпочитаете альтернативный интерфейс:

if save_data.set(get_input()):
    print save_data.get()

Я считаю это полезным для тестирования серии регулярных выражений в конструкции if-elif-elif-elif и т. д., как в этот вопрос SO :

import re

input = u'test bar 123'
save_match = DataHolder(attr_name='match')
if save_match(re.search('foo (\d+)', input)):
    print "Foo"
    print save_match.match.group(1)
elif save_match(re.search('bar (\d+)', input)):
    print "Bar"
    print save_match.match.group(1)
elif save_match(re.search('baz (\d+)', input)):
    print "Baz"
    print save_match.match.group(1)
9
ответ дан 27 November 2019 в 00:45
поделиться
config_hash = {}
tmp_dir = ([config_hash[x]  for x in ["tmp_dir"] if config_hash.has_key(x)] or ["tmp"])[0]
print tmp_dir
config_hash["tmp_dir"] = "cat"
tmp_dir = ([config_hash[x]  for x in ["tmp_dir"] if config_hash.has_key(x)] or ["tmp"])[0]
print tmp_dir
0
ответ дан 27 November 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: