Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Da Javascript a Python, da Python a Javascript

Una serie di esempi pratici che mostrano le differenze principali tra le sintassi di Python e Javascript, utili a migrare da un linguaggio all'altro.
Una serie di esempi pratici che mostrano le differenze principali tra le sintassi di Python e Javascript, utili a migrare da un linguaggio all'altro.
Link copiato negli appunti

Javascript e Python sono due tra i più popolari linguaggi di programmazione. Per gli sviluppatori Javascript che hanno necessità o intenzione di migrare a Python, e per il caso precisamente inverso, abbiamo a disposizione due ottimi lavori, sviluppati da Saya e Ilya Schurov, che ci forniscono chiari clean sheets sul confronto tra le sintassi dei due linguaggi di programmazione, confrontati con costrutti che svolgono compiti identici o simili. Basandoci su questi lavori, in questo articolo cercheremo di fare chiarezza per facilitare, il più possibile, la migrazione da un linguaggio all'altro.

Il lavoro di Saya riassume le differenze raggruppandole come di seguito:

  • Operazioni matematiche (Math)
  • Operatori di controllo del flusso (if/else, costrutto try/catch, booleani, operatore ternario, eccezioni, cicli interrotti e cosi via)
  • Lavoro con le stringhe (concatenazione, interpolazione)
  • Lavoro con le liste e gli array (iterazione, operazioni con gli elementi e gli indici)
  • Lavoro con i dizionari/oggetti (iterazione, mappatura, operazioni con le keywords, operazioni con i valori, lavoro con JSON)
  • Lavoro le funzioni (definizione, dichiarazione di parametri, dichiarazione di parametri di default, parametri posizionali, parametri variabili)
  • Lavoro con le classi (dichiarazione, creazione di istanze)

Quanto segue tiene in considerazione la versione 3 di Python e lo standard Ecma Script 2015 per Javascript.

Nel lavoro di Ilya

  • Liste e array
  • Ciclo for e cicli iterativi
  • Dizionari e oggetti
  • Scope delle variabili
  • Tipizzazione e tipi di variabili
  • Comparazione tra variabili ed operatori di comparazione
  • Funzioni
  • Vediamo qualche esempio che ci permette di capire come questi clean sheets possono essere utili nella pratica di migrazione tra un linguaggio di programmazione e l'altro, analizzando alcune delle voci elencate in precedenza.

    Math: operazioni di arrotondamento

    Python

    import math
    # 2
    print(math.ceil(1.5))
    # 1
    print(math.floor(1.5))
    # 2
    print(round(1.5))

    Javascript

    // 2
    console.log(Math.ceil(1.5))
    // 1
    console.log(Math.floor(1.5))
    // 2
    console.log(Math.round(1.5))

    Operatore If/else

    Python

    some_number = 3
    # Number is 3
    if some_number == 1:
    print("Number is 1")
    elif some_number == 2:
    print("Number is 2")
    elif some_number == 3:
    print("Number is 3")
    else:
    print("?")

    Javascript

    const someNumber = 3
    // Number is 3
    if (someNumber === 1) {
    console.log('Number is 1')
    } else if (someNumber === 2) {
    console.log('Number is 2')
    } else if (someNumber === 3) {
    console.log('Number is 3')
    } else {
    console.log('?')
    }

    Ciclo for, break/continue

    Python

    # 1
    # 2
    # Fizz
    # 4
    # Buzz
    for number in range(1, 101):
    if number == 3:
    print("Fizz")
    continue
    if number == 5:
    print("Buzz")
    break
    print(number)

    Javascript

    // 1
    // 2
    // Fizz
    // 4
    // Buzz
    for (let i = 1; i <= 100; i = i + 1) {
    if (i === 3) {
    console.log('Fizz')
    continue
    }
    if (i === 5) {
    console.log('Buzz')
    break
    }
    console.log(i)
    }

    Interpolazione di stringhe

    Python

    x = "Hello"
    # Hello World
    print(f"{x} World")

    Javascript

    const x = 'Hello'
    // Hello World
    console.log(`${x} World`)

    Enumerazione di array

    Python

    some_list = [6, 3, 5]
    # 0 6
    # 1 3
    # 2 5
    for i, item in enumerate(some_list):
    print(f"{i} {item}")
    # If you're not using this in a for loop, use list()
    # list(enumerate(some_list)) # [(0, 6), (1, 3), (2, 5)]

    Javascript

    const someList = [6, 3, 5]
    // 0 6
    // 1 3
    // 2 5
    someList.forEach((element, index) => {
    console.log(`${index} ${element}`)
    })

    Oggetti: lavorare con i valori

    Python

    some_dict = {"one": 1, "two": 2, "three": 3}
    # 1
    # 2
    # 3
    # NOTE: If you're not using this in a for loop,
    # convert it into a list: list(some_dict.values())
    for x in some_dict.values():
    print(x)

    Javascript

    const someDict = { one: 1, two: 2, three: 3 }
    // 1
    // 2
    // 3
    Object.values(someDict).forEach(element => {
    console.log(element)
    })

    Funzioni: argomenti di default

    Python

    def greet(name, word="Hello"):
    print(f"{word} {name}")
    # Hello World
    greet("World")
    # Goodbye World
    greet("World", "Goodbye")

    Javascript

    const greet = (name, word = 'Hello') => {
    console.log(`${word} ${name}`)
    }
    // Hello World
    greet('World')
    // Goodbye World
    greet('World', 'Goodbye')

    Classi

    Python

    class Duck:
    def __init__(self, name):
    self.name = name
    def fly(self):
    print(f"{self.name} can fly")
    # not @classmethod: call a method on an instance
    # duck = Duck(...)
    # duck.create(...)
    #
    # @classmethod: call a method on a class
    # Duck.create(...)
    @classmethod
    def create(cls, name, kind):
    if kind == "mallard":
    return MallardDuck(name)
    elif kind == "rubber":
    return RubberDuck(name)
    else:
    # cls = Duck
    return cls(name)
    class MallardDuck(Duck):
    # @property:
    # use duck.color instead of duck.color()
    @property
    def color(self):
    return "green"
    class RubberDuck(Duck):
    def __init__(self, name, eye_color="black"):
    super().__init__(name)
    self.eye_color = eye_color
    def fly(self):
    super().fly()
    print(f"Just kidding, {self.name} cannot fly")
    @property
    def color(self):
    return "yellow"
    regularDuck = Duck("reggie")
    # reggie can fly
    regularDuck.fly()
    mallardDuck = Duck.create("mal", "mallard")
    # mal
    print(mallardDuck.name)
    # green
    print(mallardDuck.color)
    rubberDuck = RubberDuck("vic", "blue")
    # vic can fly
    # Just kidding, vic cannot fly
    rubberDuck.fly()
    # yellow
    print(rubberDuck.color)
    # blue
    print(rubberDuck.eye_color)

    Javascript

    class Duck {
    constructor(name) {
    this.name = name
    }
    fly() {
    console.log(`${this.name} can fly`)
    }
    // not static: call a method on an instance
    // const duck = new Duck(...)
    // duck.create(...)
    //
    // static: call a method on a class
    // Duck.create(...)
    static create(name, kind) {
    if (kind === 'mallard') {
    return new MallardDuck(name)
    } else if (kind === 'rubber') {
    return new RubberDuck(name)
    } else {
    // this = Duck
    return new this(name)
    }
    }
    }
    class MallardDuck extends Duck {
    // get:
    // use duck.color instead of duck.color()
    get color() {
    return 'green'
    }
    }
    class RubberDuck extends Duck {
    constructor(name, eyeColor = 'black') {
    super(name)
    this.eyeColor = eyeColor
    }
    fly() {
    super.fly()
    console.log(`Just kidding, ${this.name} cannot fly`)
    }
    get color() {
    return 'yellow'
    }
    }
    const regularDuck = new Duck('reggie')
    // reggie can fly
    regularDuck.fly()
    const mallardDuck = Duck.create('mal', 'mallard')
    // mal
    console.log(mallardDuck.name)
    // green
    console.log(mallardDuck.color)
    rubberDuck = new RubberDuck('vic', 'blue')
    // vic can fly
    // Just kidding, vic cannot fly
    rubberDuck.fly()
    // yellow
    console.log(rubberDuck.color)
    // blue
    console.log(rubberDuck.eyeColor)

    Nelle pagine ufficiali dei lavori sopra citati, sono disponibili una moltitudine di esempi aggiuntivi, molto utili a comprendere le differenze tra Javascript e Python, facilitando quindi la migrazione tra questi linguaggi.

Ti consigliamo anche