рдкрд╛рдпрдерди рдЗрдВрдЯрд░реНрдирд▓реНрд╕ред рдИрд╕реНрдЯрд░ рдЕрдВрдбреЗ

рдирдорд╕реНрддреЗ! рд╣реЗрдмреЗрд░рд╛ рдкрд░ рдЕрдЬрдЧрд░ рдХреЗ рдИрд╕реНрдЯрд░ рдЕрдВрдбреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рдлреА рдХреБрдЫ рд▓реЗрдЦ рдереЗ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдХреЛрдИ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдпрд╣ рд╕рдм рдЕрдВрджрд░ рд╕реЗ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдиреМрд╕рд┐рдЦрд┐рдП pythonists рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред рдЗрд╕ рдкрд░ рдХрдЯ рдХреЗ рддрд╣рдд рдЪрд░реНрдЪрд╛ рд╣реЛрдЧреА!

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕ рдЕрдЬрдЧрд░ рдХрд╛ рдЕрдВрдбрд╛рдгреБ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ?

рдмреЗрд╢рдХ рдкрд╛рдпрдерди рдХреЗ рдЬрд╝реЗрди (рдЗрд╕реЗ рдЖрдпрд╛рдд рдХрд░реЗрдВ)

рдкрд╛рдпрдерди рд╕реЛрд░реНрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдпрд╛ рдЧрд┐рдЯрд╣рдм рдЦреЛрд▓реЗрдВред
рдпрд╣рд╛рдБ рдЗрд╕рдХрд╛ рд╕реНрд░реЛрдд рд╣реИ:

Cyrtsy
s = """Gur Mra bs Clguba, ol Gvz Crgref Ornhgvshy vf orggre guna htyl. Rkcyvpvg vf orggre guna vzcyvpvg. Fvzcyr vf orggre guna pbzcyrk. Pbzcyrk vf orggre guna pbzcyvpngrq. Syng vf orggre guna arfgrq. Fcnefr vf orggre guna qrafr. Ernqnovyvgl pbhagf. Fcrpvny pnfrf nera'g fcrpvny rabhtu gb oernx gur ehyrf. Nygubhtu cenpgvpnyvgl orngf chevgl. Reebef fubhyq arire cnff fvyragyl. Hayrff rkcyvpvgyl fvyraprq. Va gur snpr bs nzovthvgl, ershfr gur grzcgngvba gb thrff. Gurer fubhyq or bar-- naq cersrenoyl bayl bar --boivbhf jnl gb qb vg. Nygubhtu gung jnl znl abg or boivbhf ng svefg hayrff lbh'er Qhgpu. Abj vf orggre guna arire. Nygubhtu arire vf bsgra orggre guna *evtug* abj. Vs gur vzcyrzragngvba vf uneq gb rkcynva, vg'f n onq vqrn. Vs gur vzcyrzragngvba vf rnfl gb rkcynva, vg znl or n tbbq vqrn. Anzrfcnprf ner bar ubaxvat terng vqrn -- yrg'f qb zber bs gubfr!""" d = {} for c in (65, 97): for i in range(26): d[chr(i+c)] = chr((i+13) % 26 + c) print("".join([d.get(c, c) for c in s])) 


рдЦреИрд░? рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реНрд▓ рджрд▓рд┐рдпрд╛ ... рдЖрдкрдХреЛ рдХреЛрдб рджреНрд╡рд╛рд░рд╛ рдЪрд░рд┐рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдкрдбрд╝рд╛? рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

рдЖрдЧреЗ рдмрдврд╝реЛред рд╣рдо рдЧрд┐рддреБрдм рдкрд░ рдПрдВрдЯреАрдЧреНрд░реЗрд╡рд┐рдЯреА рдХреА рддрд▓рд╛рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдо рдпрд╣ рдкрд╛рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЛрдИ рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рд╣реИред

рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдпрд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рд╢рд╛рдпрдж рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдлрд╝рд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ред рдкрд╛рдпрдерди рд╕реНрд░реЛрдд рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ ./configure рдЪрд▓рд╛рдПрдБред

рд╣рдо рд▓рд┐рдм рдлрд╝реЛрд▓реНрдбрд░ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╡рд╣рд╛рдВ рдПрдВрдЯреАрдЧреНрд░реЗрд╡рд┐рдЯреАрдлреНрд░реЗрдо рдЦреЛрдЬрддреЗ рд╣реИрдВ

рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА:

antigravity
 import webbrowser import hashlib webbrowser.open("https://xkcd.com/353/") def geohash(latitude, longitude, datedow): '''Compute geohash() using the Munroe algorithm. >>> geohash(37.421542, -122.085589, b'2005-05-26-10458.68') 37.857713 -122.544543 ''' # https://xkcd.com/426/ h = hashlib.md5(datedow).hexdigest() p, q = [('%f' % float.fromhex('0.' + x)) for x in (h[:16], h[16:32])] print('%d%s %d%s' % (latitude, p[1:], longitude, q[1:])) 

рдЖрдпрд╛рдд рдХрд░рддреЗ рд╕рдордп, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреИрд╕реЗ рдЦреБрд▓рддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдореЗрдВ рдкреГрд╖реНрда
рдПрдХ рдЕрдЬрдЧрд░ рдХреЙрдорд┐рдХ рдХреЗ рд╕рд╛рдеред

https://xkcd.com/353/

рд╡реИрд╕реЗ, рдПрдВрдЯреАрдЧреИрд╡рд┐рдЯреА рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдЬрд┐рдпреЛрд╣реИрд╢ рдлрд╝рдВрдХреНрд╢рди рднреА рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ,
рдЕрдХреНрд╖рд╛рдВрд╢, рджреЗрд╢рд╛рдВрддрд░ рдФрд░ рддрд┐рдерд┐ рд╕реЗ рдПрдХ рд╣реИрд╢ рдмрдирд╛рддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдФрд░ рдХреНрдпрд╛ рд╣реИ? рд░рд╛рдЗрдЯ, __future__ рдореЙрдбреНрдпреВрд▓ред рд╕реНрд░реЛрдд / рдкрд╛рдпрдерди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реА рдлрд╝рд╛рдЗрд▓ рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЖрдк __future__ рдЖрдпрд╛рдд рд╕реБрд╡рд┐рдзрд╛ рд╕реЗ рдХрдм рд▓рд┐рдЦрддреЗ рд╣реИрдВ
рдЖрдк рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рджреБрднрд╛рд╖рд┐рдпрд╛ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдлрд╝рд╛рдЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣рд╛рдВ C рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЛрдб рдореЗрдВ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕реНрдерд╛рди рд╣реИрдВ, рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рдкреВрд░реЗ рдмрд┐рдВрджреБ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред

рд╕реА рдХреЛрдб
 //    #define UNDEFINED_FUTURE_FEATURE "future feature %.100s is not defined" #define ERR_LATE_FUTURE \ "from __future__ imports must occur at the beginning of the file" //    static int future_check_features(PyFutureFeatures *ff, stmt_ty s, PyObject *filename) { int i; asdl_seq *names; assert(s->kind == ImportFrom_kind); names = s->v.ImportFrom.names; for (i = 0; i < asdl_seq_LEN(names); i++) { alias_ty name = (alias_ty)asdl_seq_GET(names, i); const char *feature = PyUnicode_AsUTF8(name->name); if (!feature) return 0; //   ,   if (strcmp(feature, FUTURE_NESTED_SCOPES) == 0) { continue; } else if (strcmp(feature, FUTURE_GENERATORS) == 0) { continue; //  ,    } //             //    } else if (strcmp(feature, FUTURE_BARRY_AS_BDFL) == 0) { ff->ff_features |= CO_FUTURE_BARRY_AS_BDFL; } else if (strcmp(feature, FUTURE_GENERATOR_STOP) == 0) { continue; } else if (strcmp(feature, FUTURE_ANNOTATIONS) == 0) { ff->ff_features |= CO_FUTURE_ANNOTATIONS; } else if (strcmp(feature, "braces") == 0) { PyErr_SetString(PyExc_SyntaxError, "not a chance"); //    ,     PyErr_SyntaxLocationObject(filename, s->lineno, s->col_offset + 1); return 0; } else { PyErr_Format(PyExc_SyntaxError, UNDEFINED_FUTURE_FEATURE, feature); //-  ,   PyErr_SyntaxLocationObject(filename, s->lineno, s->col_offset + 1); return 0; } } return 1; } //     if (s->kind == ImportFrom_kind) { identifier modname = s->v.ImportFrom.module; if (modname && _PyUnicode_EqualToASCIIString(modname, "__future__")) { //   if (done) { PyErr_SetString(PyExc_SyntaxError, ERR_LATE_FUTURE); //           PyErr_SyntaxLocationObject(filename, s->lineno, s->col_offset); return 0; } if (!future_check_features(ff, s, filename)) return 0; ff->ff_lineno = s->lineno; } else { done = 1; } } else { done = 1; } } return 1; } 


рдЕрдЪреНрдЫрд╛, рдпрд╣ рд╕рдм :-) рд▓рдЧрддрд╛ рд╣реИ

рд▓реЗрдХрд┐рди рдЕрдЬрдЧрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрдо рдХреЗ рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИ!



рдкреБрдирд╢реНрдЪ: рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдореЛрддреА рдкрд░ рдХреЛрдИ рднреА рдХреЛрдбрд░ рдирд╛рд░рд╛рдЬ рдирд╣реАрдВ рдерд╛, рдЗрд╕ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рд╢рд╛рдВрдд рд╕рд╛рдордЧреНрд░реА рд▓рд┐рдЦреА рдЧрдИ рд╣реИред

Source: https://habr.com/ru/post/hi430308/


All Articles