Π£ 3.6% протСстованих Python-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Ρ–Ρ—Π² виявлСно ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ, ΠΏΠΎΠ²'язані Π· ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°ΠΌΠΈ.

ΠžΠΏΡƒΠ±Π»Ρ–ΠΊΠΎΠ²Π°Π½ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈ дослідТСння ΡΡ…ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚Ρ– ΠΊΠΎΠ΄Ρƒ мовою Python Π΄ΠΎ ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ, ΠΏΠΎΠ²'язаних Π· Π½Π΅ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΈΠΌ використанням ΠΊΠΎΠΌ Π² ΠΊΠΎΠ΄Ρ–. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΈΠΊΠ»ΠΈΠΊΠ°Π½Ρ– Ρ‚ΠΈΠΌ, Ρ‰ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Ρ€Π°Ρ…ΡƒΠ½ΠΊΡƒ Python Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ ΠΎΠ±'Ρ”Π΄Π½ΡƒΡ” рядки Π² списку, якщо Π²ΠΎΠ½ΠΈ Π½Π΅ Ρ€ΠΎΠ·Π΄Ρ–Π»Π΅Π½Ρ– комою, Π° Ρ‚Π°ΠΊΠΎΠΆ обробляє значСння як ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, якщо після значСння слід ΠΊΠΎΠΌΠ°. ΠŸΡ€ΠΎΠ²Ρ–Π²ΡˆΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΎΠ²Π°Π½ΠΈΠΉ Π°Π½Π°Π»Ρ–Π· 666 GitHub-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Ρ–Ρ—Π² Π· ΠΊΠΎΠ΄ΠΎΠΌ мовою Python, дослідники виявили ΠΌΠΎΠΆΠ»ΠΈΠ²Ρ– ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Ρ–Π· ΠΊΠΎΠΌΠ°ΠΌΠΈ Ρƒ 5% Π²ΠΈΠ²Ρ‡Π΅Π½ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ–Π².

Подальша Ρ€ΡƒΡ‡Π½Π° ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»Π°, Ρ‰ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ– ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ присутні лишС Π² 24 рСпозиторіях (3.6%), Π° Ρ€Π΅ΡˆΡ‚Π° 1.4% Ρ” Ρ…ΠΈΠ±Π½ΠΈΠΌΠΈ ΡΠΏΡ€Π°Ρ†ΡŒΠΎΠ²ΡƒΠ²Π°Π½Π½ΡΠΌΠΈ (Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, ΠΊΠΎΠΌΠ° ΠΌΠΎΠ³Π»Π° Π±ΡƒΡ‚ΠΈ ΡΠΏΠ΅Ρ†Ρ–Π°Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ΠΌΡ–ΠΆ рядками для ΠΎΠ±'єднання Ρ€ΠΎΠ·Π±ΠΈΡ‚ΠΈΡ… Π½Π° ΠΊΡ–Π»ΡŒΠΊΠ° рядків Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈΡ… ΡˆΠ»ΡΡ…Ρ–Π², Π΄ΠΎΠ²Π³ΠΈΡ… Ρ…Π΅ΡˆΡ–Π², HTML-Π±Π»ΠΎΠΊΡ–Π² Π°Π±ΠΎ SQL-Π²ΠΈΡ€Π°Π·Ρ–Π²). ΠŸΡ€ΠΈΠΌΡ–Ρ‚Π½ΠΎ, Ρ‰ΠΎ сСрСд 24 Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Ρ–Ρ—Π² Π· Ρ€Π΅Π°Π»ΡŒΠ½ΠΈΠΌΠΈ ΠΏΠΎΠΌΠΈΠ»ΠΊΠ°ΠΌΠΈ виявилися Ρ‚Π°ΠΊΡ– Π²Π΅Π»ΠΈΠΊΡ– ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, як Tensorflow, Google V8, Sentry, Pydata xarray, rapidpro, django-colorfield Ρ– django-helpdesk. ΠŸΡ€ΠΈ Ρ†ΡŒΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Ρ–Π· ΠΊΠΎΠΌΠ°ΠΌΠΈ Π½Π΅ спСцифічні для Python Ρ– часто ΡΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡŒ Ρƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… Π½Π° C/C++ (ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·Π½ΠΎ Π΄ΠΎ Π½Π΅Π΄Π°Π²Π½Ρ–Ρ… Π²ΠΈΠΏΡ€Π°Π²Π»Π΅Π½ΡŒ β€” LLVM, Mono, Tensorflow).

ΠžΡΠ½ΠΎΠ²Π½Ρ– Π²ΠΈΠ΄ΠΈ Π²ΠΈΠ²Ρ‡Π΅Π½ΠΈΡ… ΠΏΠΎΠΌΠΈΠ»ΠΎΠΊ:

  • Π’ΠΈΠΏΠ°Π΄ΠΊΠΎΠ²ΠΎ ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ΠΊΠΎΠΌΠ° Ρƒ списках, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ°Ρ… Ρ‚Π° ΠΌΠ½ΠΎΠΆΠΈΠ½Π°Ρ…, Ρ‰ΠΎ ΠΏΡ€ΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎ ΠΎΠ±'єднання рядків Π·Π°ΠΌΡ–ΡΡ‚ΡŒ Ρ—Ρ… Ρ–Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†Ρ–Ρ— як ΠΎΠΊΡ€Π΅ΠΌΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΡŒ. Наприклад, Π² Sentry Π² ΠΎΠ΄Π½ΠΎΠΌΡƒ Π· тСстів Π±ΡƒΠ»Π° ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ΠΊΠΎΠΌΠ° ΠΌΡ–ΠΆ рядками "releases" Ρ– "discover" Ρƒ списку, Ρ‰ΠΎ ΠΏΡ€ΠΈΠ·Π²Π΅Π»ΠΎ Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ Π½Π΅Ρ–ΡΠ½ΡƒΡŽΡ‡ΠΎΠ³ΠΎ ΠΎΠ±Ρ€ΠΎΠ±Π½ΠΈΠΊΠ° "/releasesdiscover", Π·Π°ΠΌΡ–ΡΡ‚ΡŒ Ρ€ΠΎΠ·Π΄Ρ–Π»ΡŒΠ½ΠΎΡ— ΠΏΠ΅Ρ€Π΅Π²Ρ–Ρ€ΠΊΠΈ "/releases" Ρ– "/discover".
    Π£ 3.6% протСстованих Python-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Ρ–Ρ—Π² виявлСно ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ, ΠΏΠΎΠ²'язані Π· ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°ΠΌΠΈ.

    Π†Π½ΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΊΠ»Π°Π΄ - ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ΠΊΠΎΠΌΠ° Π² rapidpro ΠΏΡ€ΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π° Π΄ΠΎ ΠΎΠ±'єднання Π΄Π²ΠΎΡ… Ρ€Ρ–Π·Π½ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» Ρƒ рядку 572:

    Π£ 3.6% протСстованих Python-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€Ρ–Ρ—Π² виявлСно ΠΏΠΎΠΌΠΈΠ»ΠΊΠΈ, ΠΏΠΎΠ²'язані Π· ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°ΠΌΠΈ.

  • ΠŸΡ€ΠΎΠΏΡƒΡ‰Π΅Π½Π° ΠΊΠΎΠΌΠ° Π² ΠΊΡ–Π½Ρ†Ρ– визначСння ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°, Ρ‰ΠΎ ΠΏΡ€ΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, Ρ‰ΠΎ Π² Ρ…ΠΎΠ΄Ρ– присвоєння Π±ΡƒΠ΄Π΅ присвоєно ΠΊΠΎΡ€Ρ‚Π΅ΠΆ, Π° Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΈΠΉ Ρ‚ΠΈΠΏ. Наприклад, Π²ΠΈΡ€Π°Π· "values ​​= (1,)" ΠΏΡ€ΠΈΠ·Π²Π΅Π΄Π΅ Π΄ΠΎ присвоєння Π·ΠΌΡ–Π½Π½ΠΎΡ— ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π°, Π°Π»Π΅ "values ​​= (1)" ΠΏΡ€ΠΈΠ·Π²Π΅Π΄Π΅ Π΄ΠΎ присвоєння Ρ†Ρ–Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΡƒ. Π”ΡƒΠΆΠΊΠΈ Π² Π·Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΡ… присвоєннях Π½Π΅ Π²ΠΏΠ»ΠΈΠ²Π°ΡŽΡ‚ΡŒ Π½Π° визначСння Ρ‚ΠΈΠΏΡƒ Ρ– Ρ” Π½Π΅ΠΎΠ±ΠΎΠ²'язковими, Π° Π½Π°ΡΠ²Π½Ρ–ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ Π²ΠΈΠ·Π½Π°Ρ‡Π°Ρ”Ρ‚ΡŒΡΡ парсСром Ρ‚Ρ–Π»ΡŒΠΊΠΈ Π½Π° основі ΠΊΠΎΠΌ. REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated' # Π·Π°ΠΌΡ–ΡΡ‚ΡŒ ΠΊΠΎΡ€Ρ‚Π΅ΠΆΡƒ Π±ΡƒΠ΄Π΅ присвоєно рядок. ) }
  • Π—Π²ΠΎΡ€ΠΎΡ‚Π½Π° ситуація - Π·Π°ΠΉΠ²Ρ– ΠΊΠΎΠΌΠΈ ΠΏΡ€ΠΈ присвоєнні. Π―ΠΊΡ‰ΠΎ Π² ΠΊΡ–Π½Ρ†Ρ– присвоєння Π²ΠΈΠΏΠ°Π΄ΠΊΠΎΠ²ΠΎ залишСна ΠΊΠΎΠΌΠ°, Ρ‚ΠΎ як значСння Π·Π°ΠΌΡ–ΡΡ‚ΡŒ Π·Π²ΠΈΡ‡Π°ΠΉΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΡƒ Π±ΡƒΠ΄Π΅ присвоєно ΠΊΠΎΡ€Ρ‚Π΅ΠΆ (Π½Π°ΠΏΡ€ΠΈΠΊΠ»Π°Π΄, якщо Π·Π°ΠΌΡ–ΡΡ‚ΡŒ "value = 1" Π²ΠΊΠ°Π·Π°Π½ΠΎ "value = 1,").

Π”ΠΆΠ΅Ρ€Π΅Π»ΠΎ: opennet.ru

Π”ΠΎΠ΄Π°Ρ‚ΠΈ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ Π°Π±ΠΎ Π²Ρ–Π΄Π³ΡƒΠΊ