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?
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