Olá,
Ao criar um novo projeto no Pycharm, é possível escolher o interpretador existente e um virtual. Qual seria a diferença entre eles? E quando devo utilizar um ou outro?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá,
Ao criar um novo projeto no Pycharm, é possível escolher o interpretador existente e um virtual. Qual seria a diferença entre eles? E quando devo utilizar um ou outro?
Roger,
O python em duas versões a 2.7 e 3.6 que são um pouco diferentes, no curso de Django usamos a 2.7 com a versão do Django 1.7.4, porque na versão atual, 2.0.6 tem vários comandos deprecados.
No python 2.7 vc pode escrever assim:
>>> entrada = raw_input("Digite seu nome: ")
Digite seu nome: Welton
>>> print entrada
Welton
>>>
O mesmo no python3:
>>> entrada = raw_input("Digite seu nome: ")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'raw_input' is not defined
>>> entrada = input("Digite seu nome: ")
Digite seu nome: Welton
>>> print entrada
File "<stdin>", line 1
print entrada
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(entrada)?
>>> print(entrada)
Welton
>>>
O primeiro erro "NameError: name 'raw_input' is not defined", não tem a função raw_input no python3, ficou apenas "input"
entrada = input("Digite seu nome: ")
O segundo erro, "print entrada", no Python3 é uma (Print) é função, e não uma instrução:
Diferenças mais impactantes Dito isso, não sei dizer quais são todas essas diferenças, mas dentre as principais segundo a documentação as que considero mais impactantes são as seguintes:
print no 3 é uma função, e não uma instrução:
print 42 # Python 2 print(42) # Python 3
Várias funções built-in e métodos dos principais tipos, que antes retornavam listas, agora retornam iteradores. Isso não é um problema nos usos mais corriqueiros, mas se em algum momento você realmente precisar de uma lista, acostume-se a criar uma explicitamente:
x = list(range(10)) # No Python 2 range já retorna uma lista, você apenas a copia
for i in range(10): # Igual em ambos (mais eficiente no 3) Strings no 3 são Unicode por padrão, e sequências de bytes devem estar prefixadas por b:
x = "Olá" # No 2, sem o "import unicode_literals", seria inválido
x = u"Olá" # Como era no 2, NÃO RECOMENDADO usar em códigos novos
y = b"\x80" # Só existe a partir do 3; note que 0x80 não é um caractere ASCII válido Inteiro dividido por inteiro é inteiro no 2, mas é ponto flutuante no 3:
x = 3/2 # 1.5 no Python 3, 1 no Python 2 sem o "import division"
y = 3//2 # 1 em ambos ("//" é a divisão inteira)
mais sobre este assunto: https://pt.stackoverflow.com/questions/114088/diferen%C3%A7as-entre-as-vers%C3%B5es-3-x-e-2-7-do-python?rq=1
@weltonvaz, obrigado pelas explicações.
A minha dúvida se refere ao começar um projeto no Pycharm, onde é possível escolher um ambiente virtual e o interpretador que já está na pasta C:\python3.
Roger,
Vc abre ou cria um projeto novo no Pycharm em baixo no console do Pycharm, Vc cria com o virtualenv o seu ambiente de desenvolvimento. Ou ainda pode usar, onde aprendi: https://youtu.be/SeyoRF1hu54