Olá, preciso de apoio com relação a definição do método isidentifier()
Sim, já pesquisei na documentação, porém não compreendi muito bem o que é um identificador válido especificamente.
Olá, preciso de apoio com relação a definição do método isidentifier()
Sim, já pesquisei na documentação, porém não compreendi muito bem o que é um identificador válido especificamente.
Li a doc desse link: Python String isidentifier() Method, e vi isso:
A string is considered a valid identifier if it only contains alphanumeric letters (a-z) and (0-9), or underscores (_). A valid identifier cannot start with a number, or contain any spaces.
Entendi que o método isidentifier()
retornará true
caso um identificador (a string
no caso) seja composto apenas por letras e/ou números e underscores.
Segundo a documentação oficial da linguagem:
Retorna
True
se a string é um identificador válido conforme a definição da linguagem, seção Identificadores e palavras-chave.
E se você clicar em “Identificadores e palavras-chave”, vai para este link, que infelizmente não foi traduzido para o português (somente o título), mas enfim…
Basicamente, a definição é essa:
identifier ::= xid_start xid_continue*
id_start ::= <all characters in general categories Lu, Ll, Lt, Lm, Lo, Nl, the underscore, and characters with the Other_ID_Start property>
id_continue ::= <all characters in id_start, plus characters in the categories Mn, Mc, Nd, Pc and others with the Other_ID_Continue property>
xid_start ::= <all characters in id_start whose NFKC normalization is in "id_start xid_continue*">
xid_continue ::= <all characters in id_continue whose NFKC normalization is in "id_continue*">
A definição é um pouco complicada, mas em resumo, um identificador válido pode começar com uma letra ou _
, e depois pode ter outras letras, números, _
, etc.
Repare que ele cita categorias Unicode (Lu, que são as letras maiúsculas, Nd, que são os números decimais, etc). Aqui você pode ver todas as categorias, e clicar nelas para ver os respectivos caracteres (e veja como a lista é enorme).
Isso inclui também letras acentuadas e de outros alfabetos, o que quer dizer que a definição não se restringe ao ASCII. Por exemplo, o código abaixo imprime True
três vezes:
for s in ('Ж', 'áä', '和製'):
print(s.isidentifier())
Basicamente, ser um identificador válido significa que ele pode ser usado como nomes de variáveis, funções, classes, etc. Ou seja, o código abaixo é perfeitamente válido (apesar de não ser comum):
和製 = 10
if 和製 > 0:
print(和製 + 5) # 15
def Ж߁Dž():
print('chamando função Ж߁Dž')
# chamando a função
Ж߁Dž()
class देवनागरी:
def __init__(self, x):
self.val = x
def á(self):
print(self.val)
x = देवनागरी(10)
x.á() # 10