- 1
- 2
- 3
- 4
- 5
- 6
import execjs
js = '{"1": "2", "3": [4,5]}'
default = execjs.get()
print default.eval(js)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−267
import execjs
js = '{"1": "2", "3": [4,5]}'
default = execjs.get()
print default.eval(js)
Раз уже астрологи объявили неделю ебанутого парсенья json.
−120
sqlalchemy.orm.relationship(argument, secondary=None, primaryjoin=None, secondaryjoin=None, foreign_keys=None, uselist=None, order_by=False, backref=None, back_populates=None, post_update=False, cascade=False, extension=None, viewonly=False, lazy=True, collection_class=None, passive_deletes=False, passive_updates=True, remote_side=None, enable_typechecks=True, join_depth=None, comparator_factory=None, single_parent=False, innerjoin=False, distinct_target_key=None, doc=None, active_history=False, cascade_backrefs=True, load_on_pending=False, strategy_class=None, _local_remote_pairs=None, query_class=None, info=None)
Охуенный АПИ: прочитал и сразу запомнил.
−123
def run(code):
def func(operator):
from functools import reduce
add = lambda a, b: float(a) + float(b)
mul = lambda a, b: float(a) * float(b)
div = lambda a, b: float(a) / float(b)
deduct = lambda a, b: float(a) - float(b)
d = {
'+': lambda arr: reduce(add, arr),
'*': lambda arr: reduce(mul, arr),
'/': lambda arr: reduce(div, arr),
'-': lambda arr: reduce(deduct, arr)
}
return d[operator]
def lex(token):
if token in ('+', '-', '/', '*', '%'):
return "operator"
elif token == '(':
return "lbracket"
elif token == ')':
return "rbracket"
elif token[0].isalpha():
return "name"
elif token[0] == token[-1] and token[0] in ('"', "'"):
return "string"
else:
try:
float(token)
return "number"
except:
raise ValueError
def getArgs(words):
args = []
arg = []
i = 0
for word in words[2:]:
if word == '(':
i += 1
arg.append(word)
elif word == ')':
i -= 1
arg.append(word)
if i == 0:
args.append(arg)
arg = []
elif i == 0:
arg.append(word)
args.append(arg)
arg = []
else:
arg.append(word)
return args
def expr(words):
args = getArgs(words)
args_ = []
for arg in args:
if len(arg) == 1:
args_.append(arg)
else:
args_.append(expr(arg))
if lex(words[1]) == "operator":
return func(words[1])(list(map(lambda a: (type(a) in (list, tuple) and a[0]) or a, args_)))
lines = code.split("\n")
for line in lines:
word = ''
words = []
chars = tuple(line)
for i in tuple(line):
if i in ('(', ')'):
if word: words.append((word, lex(word)))
words.append((i, lex(i)))
word = ''
elif i == ' ':
if word: words.append((word, lex(word)))
word = ''
else:
word += i
if word: words.append((word, lex(word)))
words_ = list(map(lambda arr: arr[0], words))
print(expr(words_))
функция считает лиспоподобные арифметические выражения, например так:
run("(+ 2 (* 3 4))") # 14
в своё оправдание могу лишь сказать, что писал это в электричке на планшете
−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__)