Подчеркивание (символ _) — играет важную роль в языке Python и используется в очень разных ситуациях: от улучшения читаемости и управления приватными атрибутами до особой функциональности при обработке данных и интернационализации.
В этой статье мы рассмотрим различные случаи применения этого символа, от общих до весьма специфических, о которых, вы, вероятно никогда не слышали.
Имена функций должны быть написаны в нижнем регистре, а слова разделены подчёркиваниями для улучшения читаемости.
Имена переменных должны следовать той же конвенции, что и имена функций.
write_to_database()
read_data()
df_history
df_actual
Если имя аргумента функции конфликтует с зарезервированным ключевым словом, обычно лучше добавить одно подчеркивание в конце, чем использовать аббревиатуру или искажённое написание. То есть, class_ лучше, чем clss.
Константы обычно определяются на уровне модуля и записываются прописными буквами, а слова разделяются подчеркиванием.
NO_OF_DAYS
SIGNIF_LEVEL
RUN_DEBUGGER
x = [1, 2, 3]
print(len(x))
# 3
print(x.__len__())
# 3
for i in range(1, 4):
print(f"number {i}")
# 1
# 2
# 3
for _ in range(3):
print("Hello, World!")
# Hello, World!
# Hello, World!
# Hello, World!
def save(obj: Any, path: pathlib.Path) -> bool:
# объект успешно или неуспешно сохраняется
if not success:
return False
return True
_ = save(obj, pathlib.Path("file.csv"))
saved = save(obj, pathlib.Path("file.csv")
class Me:
def __init__(self, name, smile=":-D"):
self.name = name
self.smile = smile
self._thoughts = []
def say(self, what):
return str(what)
def _think(self, what):
self._thoughts += what
def say_thought(self, which):
return self._thoughts[which]
>>> 1 + 2
3
>>> _ * 3
9
>>> y = 10
>>> _
9
>>> 100
>>> _
100
x = 1_000_000
print(x)
# 1000000
print(1.009_232_112)
# 1.009232112
print(1_021_232.198_231_111)
# 1021232.198231111
from functools import singledispatch
@singledispatch
def fun(arg, verbose=False):
if verbose:
print("Let me just say,", end=" ")
print(arg)
@fun.register(int)
def _(arg, verbose=False):
if verbose:
print("Strength in numbers, eh?", end=" ")
print(arg)
@fun.register(list)
def _(arg, verbose=False):
if verbose:
print("Enumerate this:")
for i, elem in enumerate(arg):
print(i, elem)
print(i, elem)
import gettext
import locale
# Устанавливаем русскую локаль:
locale.setlocale(locale.LC_ALL, "ru_RU.UTF-8")
# Устанавливаем путь к файлам перевода .mo
# и выбираем текстовый домен:
gettext.bindtextdomain(
"myapp",
"/path/to/my/locale/directory"
)
gettext.textdomain("myapp")
# Подчеркивание обычно используется в качестве псевдонима для gettext.gettext:
_ = gettext.gettext
# _() оборачивает текст для перевода.
# gettext.gettext() _() — извлекает переведенную строку.
# Использование подчеркивания проще; сравните:
print(_("Hello, World!")) # Привет, мир!
print(gettext.gettext("Hello, World!")) # Привет, мир!
a, _, b = (1, 2, 3)
print(a)
# 1
print(b)
# 3
a, *_, b = [1, 2, 3, 4, 5]
print(a)
# 1
print(b)
# 5
Источник: Towards Data Science