Java -> Python?

votos
28

Além da natureza dinâmica do Python (e a sintaxe), que são algumas das principais características da linguagem Python que Java não tem, e vice-versa?

Publicado 08/09/2008 em 15:36
fonte usuário
Em outras línguas...                            


5 respostas

votos
46

  1. Compreensões lista. Sinto-me frequentemente filtragem / listas de mapeamento, e ser capaz de dizer [line.replace("spam","eggs") for line in open("somefile.txt") if line.startswith("nee")]é muito bom.

  2. Funções são objetos de primeira classe. Eles podem ser transmitidos como parâmetros para outras funções, definidas dentro outra função, e têm escopo lexical. Isto torna muito fácil dizer coisas como people.sort(key=lambda p: p.age)e, assim, classificar um grupo de pessoas sobre sua idade, sem ter que definir uma classe comparador personalizado ou algo igualmente detalhado.

  3. Tudo é um objeto. Java tem tipos básicos que não são objetos, razão pela qual muitas classes da biblioteca padrão definir 9 versões diferentes de funções (por boolean, byte, char, double, float, int, long, objeto, short). Array.sorté um bom exemplo. Autoboxing ajuda, embora ele faz as coisas difíceis quando algo acaba por ser nulo.

  4. Propriedades. Python permite criar classes com campos de somente leitura, campos preguiçosamente gerados, bem como campos que são verificados mediante a cessão para se certificar de que eles nunca são 0 ou nulo ou o que quiser para se proteger contra, etc.'

  5. Padrão e os argumentos de palavra-chave. Em Java se você quiser um construtor que pode demorar até 5 argumentos opcionais, você deve definir 6 versões diferentes do que construtor. E não há nenhuma maneira em tudo para dizerStudent(name="Eli", age=25)

  6. Funções só podem retornar 1 coisa. Em Python você tem atribuição de tupla, então você pode dizer spam, eggs = nee(), mas em Java você precisa se quer recorrer a mutável os parâmetros ou ter uma classe personalizada com 2 campos e, em seguida, tem duas linhas de código adicionais para extrair esses campos.

  7. Built-in sintaxe para listas e dicionários.

  8. Sobrecarga de operador.

  9. Geralmente melhor bibliotecas projetadas. Por exemplo, para analisar um documento XML em Java, você diz
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("test.xml");
    e em Python você diz
    doc = parse("test.xml")

De qualquer forma, eu poderia ir sobre e com outros exemplos, mas Python é apenas em geral uma linguagem muito mais flexível e expressiva. É também de tipagem dinâmica, o que eu realmente gosto, mas que vem com algumas desvantagens.

Java tem um desempenho muito melhor do que Python e tem maneira melhor suporte da ferramenta. Às vezes essas coisas são muito importantes e Java é a linguagem melhor do que Python para uma tarefa; I continuar a usar Java para alguns novos projectos, apesar de gostar de Python muito mais. Mas como uma língua que eu acho que Python é superior para a maioria das coisas que eu acho-me a necessidade de realizar.

Respondeu 08/09/2008 em 16:35
fonte usuário

votos
16

Eu acho que este par de artigos por Philip J. Eby faz um ótimo trabalho discutindo as diferenças entre as duas línguas (principalmente sobre a filosofia / mentalidade em vez de características específicas de linguagem).

Respondeu 08/09/2008 em 15:40
fonte usuário

votos
5

Uma diferença chave em Python é um espaço em branco significativo . Isso coloca um monte de gente fora - me muito por um longo tempo - mas uma vez que você passa parece natural e faz muito mais sentido do que ;é em todos os lugares.

De uma perspectiva pessoal, Python tem as seguintes vantagens sobre Java:

Além destas, esta página no Python Wiki é um bom lugar para olhar com lotes de links para artigos interessantes.

Respondeu 08/09/2008 em 15:43
fonte usuário

votos
3

Com Jython você pode ter ambos. É apenas com Python 2.2, mas ainda muito útil se você precisar de um intérprete embutido que tem acesso ao tempo de execução Java.

Respondeu 08/09/2008 em 16:13
fonte usuário

votos
2

Além do que Eli Courtwright disse:

  • Acho iterators em Python mais concisa. Você pode usar para i em alguma coisa , e ele funciona com praticamente tudo. Sim, Java ficou melhor desde 1.5, mas por exemplo, você pode iterar uma string em python com este mesmo construto.
  • Introspecção: Em Python você pode obter em informações de tempo de execução sobre um objeto ou um módulo sobre seus símbolos, métodos, ou até mesmo seus docstrings. Você também pode instanciar-los dinamicamente. Java tem alguns dos isso, mas geralmente em Java que demora meia página de código para obter uma instância de uma classe, enquanto que em Python é cerca de 3 linhas. E, tanto quanto eu sei a coisa docstrings não está disponível em Java
Respondeu 09/09/2008 em 11:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more