É possível declarar uma variável em Python, assim?
var
para que seja inicializado como Nenhum? Parece que o Python permite isso, mas assim que você acessa, ele trava. Isso é possível? Se não, por que?
EDIT: Eu quero fazer isso para casos como este:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
Duplicado
- Valor não inicializado em python (do mesmo autor)
- Existem palavras-chave de declaração no Python? (do mesmo autor)
Relacionado
python
variable-assignment
variable-declaration
Joan Venge
fonte
fonte
Respostas:
Por que não fazer isso:
Python é dinâmico, então você não precisa declarar coisas; eles existem automaticamente no primeiro escopo em que foram atribuídos. Portanto, tudo o que você precisa é de uma declaração de atribuição antiga regular, como acima.
Isso é legal, porque você nunca terminará com uma variável não inicializada. Mas tenha cuidado - isso não significa que você não acabará com variáveis inicializadas incorretamente . Se você iniciar algo
None
, verifique se é isso que realmente deseja e atribua algo mais significativo, se puder.fonte
Eu recomendo que você leia Outras línguas têm "variáveis" (adicionei-o como um link relacionado) - em dois minutos você saberá que o Python tem "nomes", não "variáveis".
fonte
val = val or any_object
para inicializá-lo.is
para testar se um valor éNone
.No Python 3.6+, você pode usar as Anotações de variáveis para isso:
https://www.python.org/dev/peps/pep-0526/#abstract
O PEP 484 introduziu dicas de tipo, também conhecidas como anotações de tipo. Embora seu foco principal fosse anotações de funções, também introduziu a noção de comentários de tipo para anotar variáveis:
O PEP 526 visa adicionar sintaxe ao Python para anotar os tipos de variáveis (incluindo variáveis de classe e variáveis de instância), em vez de expressá-las através de comentários:
Parece estar mais diretamente alinhado com o que você estava perguntando "É possível declarar apenas uma variável sem atribuir qualquer valor no Python?"
fonte
Não tenho certeza do que você está tentando fazer. Python é uma linguagem muito dinâmica; você normalmente não precisa declarar variáveis até que você realmente as atribua ou use. Eu acho que o que você quer fazer é apenas
que irá atribuir o valor
None
à variávelfoo
.Edição: O que você realmente parece querer fazer é apenas isso:
É um pouco difícil dizer se esse é realmente o estilo certo para usar em um exemplo de código tão curto, mas é uma maneira mais "pitônica" de trabalhar.
EDIT: abaixo é comentado por JFS (postado aqui para mostrar o código)
Não relacionado à pergunta do OP, mas o código acima pode ser reescrito como:
OBSERVAÇÃO: se
some_condition()
gera uma exceção, elefound
é ilimitado.OBSERVAÇÃO: se len (sequência) == 0, então
item
não será vinculado.O código acima não é aconselhável. Seu objetivo é ilustrar como as variáveis locais funcionam, ou seja, se "variável" é "definida" pode ser determinada apenas em tempo de execução nesse caso. Maneira preferível:
Ou
fonte
Normalmente, inicializo a variável para algo que denota o tipo
ou
Se for um objeto, não o inicialize até que você o instancie:
fonte
Bem, se você deseja verificar se uma variável está definida ou não, por que não verificar se está nas matrizes locals () ou globals ()? Seu código reescrito:
Se você procura uma variável local, substitua globals () por locals ().
fonte
Primeiro de tudo, minha resposta à pergunta que você fez originalmente
P: Como descubro se uma variável está definida em um ponto do meu código?
R: Leia o arquivo de origem até ver uma linha em que essa variável está definida.
Além disso, você deu um exemplo de código de que existem várias permutações bastante pitônicas. Você está procurando uma maneira de varrer uma sequência em busca de elementos que correspondam a uma condição, então, aqui estão algumas soluções:
Claramente, neste exemplo, você pode substituir o
raise
por umreturn None
dependendo do que deseja alcançar.Se você quisesse tudo que correspondesse à condição, poderia fazer o seguinte:
Existe outra maneira de fazer isso com
yield
que eu não vou me incomodar em mostrar a você, porque é bastante complicado na maneira como funciona.Além disso, existe uma maneira única de conseguir isso:
fonte
Se estou entendendo o seu exemplo corretamente, você não precisa se referir a 'value' na instrução if de qualquer maneira. Você está saindo do circuito assim que possível.
fonte
Parece que você está tentando escrever C em Python. Se você deseja encontrar algo em uma sequência, o Python possui funções internas para fazer isso, como
fonte
É uma boa pergunta e, infelizmente, respostas ruins, como
var = None
já está atribuindo um valor, e se o seu script for executado várias vezes, ele será substituído porNone
sempre.Não é o mesmo que definir sem atribuição. Ainda estou tentando descobrir como ignorar esse problema.
fonte
É possível declarar uma variável em Python (var = None):
fonte
fonte
Se
None
for um valor de dados válido, você precisará da variável de outra maneira. Você poderia usar:Este sentinela é sugerido por Nick Coghlan .
fonte
Você pode enganar um intérprete com este oneliner feio.
if None: var = None
Ele não faz mais nada além de adicionar uma variávelvar
ao dicionário de variáveis local, sem inicializá-lo. O intérprete lançará a exceção UnboundLocalError se você tentar usar essa variável em uma função posteriormente. Isso funcionaria para versões python muito antigas também. Não é simples, nem bonito, mas não espere muito do python.fonte