- 1
- 2
except Exception:
raise
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−129
except Exception:
raise
−119
import inspect
def phpformat(fmt):
return fmt.format(**inspect.getouterframes(inspect.currentframe())[1][0].f_locals)
surname = "Бонд"
name = "Джеймс"
num = 7
print(phpformat("{surname}. {name} {surname}. Агент {num:03d}."))
PHP'шная интерполяция строк теперь и в питоне.
Родилось в http://govnokod.ru/18147#comment285697
−94
# Мы хотели бы подключиться к базе данных. Мы не знаем, верны ли логин и пароль
# Если соединение с базой будет неуспешно, то
# Он бросит исключение. Обратите внимание, что MyDatabase и DatabaseException
# НЕ являются реальными классами, мы просто используем их в качестве примеров.
try:
database = MyDatabase(db_host, db_user, db_password, db_database)
database_connection = database.connect()
except DatabaseException:
pass
if database_connection is None:
print('The database could not connect')
else:
print('The database could connect')
Часто вы хотите выполнить действие, которое может работать либо завершиться неудачно. Используя None, вы можете проверить успех действия. Вот пример:
−118
def get_a():
print("Hello goblin")
return get_a
get_a()()()()()()()()()()()()()
Осталось понять зачем
−180
try:
ip_port = sys.argv[1].split(':')
ip = ip_port[0]
if len(ip_port) == 2:
port = ip_port[1]
elif len(ip_port) == 1:
port = "80"
else:
raise IndexError
except IndexError:
print "Usage: %s <target ip:port>" % sys.argv[0]
sys.exit(1)
Эксплоиты. Неиссякаемый источник ГК.
Я бы сделал так:
try:
ip_port = sys.argv[1].split(':')
ip = ip_port[0]
try:
port = ip_port[1]
except IndexError:
port = 80
except IndexError:
print "Usage: %s <target ip:port>" % sys.argv[0]
sys.exit(1)
−120
class Column(object):
"""
Элемент конфигурации
"""
def __init__(self, *args, **kwargs):
hid = False
filters = []
sorters = []
if len(args) == 3:
inner_name, verbose_name, width = args
elif len(args) == 2:
inner_name, verbose_name = args
width = 20
elif len(args) == 4:
inner_name, verbose_name, width, hid = args
elif len(args) == 5:
inner_name, verbose_name, width, hid, filters = args
elif len(args) == 6:
inner_name, verbose_name, width, hid, filters, sorters = args
special_attrs = ['locked', 'editable']
self.code = inner_name
self.name = verbose_name
self.width = width
self.hidden = hid
self.idx = 0
if sorters:
sorters.column = self
if filters:
filters.column = self
filters.code = self.code
#здесь хранятся экземпляры фильтров для колонок
self.filters = filters
#здесь хранятся экземпляры сортировщиков для колонок
self.sorters = sorters
def get_config(self):
''' ?
'''
config = dict()
config['data_index'] = self.code
config['header'] = self.name
config['width'] = self.width
config['hidden'] = self.hidden
return config
Разбор параметров
−241
def __repr__(self):
# почему здесь бесконечная рекурсия?
return repr(self.__repr__)
−180
max(0, 0, *list)
Костыль, чтобы в случае пустого списка возвращало 0
−124
if __name__ == "__main__":
def f():
pass
Динамичненько
−117
self.symbol_ban = {".":".00", "!":".01", "@":".02", "#":".03", "$":".04", "%":".05", "^":".06",
"&":".07", "*":".08", "+":".09", "\n":".10", "\t":".11", "\"":".12", "\'":".13",
"/":".14", "<":".15", ">":".16", '`':".17", '\\':".19", " ":".20", "=":".21",
"(":".22", ")":".23"}
new_path = map((lambda x, y: [x, y]), ["a_"+"".join([j if (j not in self.symbol_ban) else self.symbol_ban[j] for j in i[0]]) for i in path], [j[1] if j[1] in ("dir", "file") else self.Ex(1) for j in path])
часть sax парсера xml для экранирования входных данных, писал для бакалаврской. диплом отдали