Funkcje notesu polyglot

Ukończone

W tym momencie znasz już funkcje, których możesz oczekiwać od notesu Jupyter Notebook. Notesy Wielojęzyczne naprawdę świecić, gdy trzeba pracować z wieloma różnymi rzeczami. Może to być praca ze źródłem danych, zapleczem i frontonem, a może nie możesz (lub nie wolisz) używać tego samego języka w całym stosie.

W tej lekcji omówimy funkcję, taką jak polecenia magiczne, a raczej konkretną koncepcję znaną jako udostępnianie zmiennych.

Praca z danymi wyjściowymi

Jeśli chcesz uzyskać dane wyjściowe z komórki, masz kilka różnych technik, na których można polegać, na przykład:

  • Wyrażenie: W tym przypadku zmienną należy umieścić w autonomicznym wierszu w następujący sposób:

    var name = "Diego";
    name
    

    W tym przykładzie zobaczysz, jak nazwa zmiennej jest umieszczana w ostatnim wierszu i nie ma średnika. Notesy Wielojęzyczne interpretować to jako wyrażenie, a nie instrukcję (kod, który jest wypełniony średnikiem na końcu).

  • Dane wyjściowe specyficzne dla języka: w zależności od języka, w którym piszesz, sposób uzyskiwania informacji wyjściowych ma inną składnię. Oto dwa przykłady języków C# i JavaScript, odpowiednio:

    var name = "Diego";
    Console.WriteLine(name);
    

    Następnie utwórz oddzielną komórkę kodu za pomocą języka JavaScript jako wybranego jądra:

    name = "Chris";
    console.log(name)
    
  • Wyświetl polecenie: aby jeszcze bardziej ulepszyć dane wyjściowe, możesz użyć pomocnika wyświetlania. Wywołanie displayfunkcji zapewnia bardziej atrakcyjne dane wyjściowe. Inne korzyści wynikające z używania pomocnika wyświetlania obejmują:

    • Można to nazwać wielokrotnie. Możesz na przykład wywołać metodę Display() przy użyciu jednego z następujących fragmentów kodu, a każde dane wyjściowe są wyświetlane:
    (1+1).Display();
    name.Display();
    
    • Reaguje na aktualizacje. Możesz przypisać wynik wywołania display do odwołania, wywołując Updatemetodę , a wynik zostanie zaktualizowany w danych wyjściowych komórki w następujący sposób:
    var displayRef =  "initial value".Display(); 
    System.Threading.Thread.Sleep(10000); 
    displayRef.Update("different value");
    

    Ta komórka kodu pokazuje wartość początkową, a 10 sekund później pokazuje inną wartość.

Polecenia magiczne

Polecenia magic są prostymi poleceniami, które wykonują coś specjalnego, co może oznaczać czas, nawiązywanie połączenia ze źródłem danych lub udostępnianie wartości między komórkami i jądrami. Polecenie magic może przyjmować parametry. Możesz rozpoznać polecenie magic, jeśli kod zaczyna się od #!, a następnie polecenie, jak pokazano poniżej:

#!mycommand 

W poniższym przykładzie użyjemy set polecenia . Polecenie set pozwala nam używać zmiennej między jądrami. Poniżej przedstawiono sposób używania parametrów za set pomocą polecenia :

#!set --value @csharp:name --name name

To polecenie pozwala nam używać zmiennej name w naszym jądrze języka C# na potrzeby operacji w naszym jądrze Języka JavaScript.

Udostępnianie wartości między komórkami kodu

Jak widać, możesz użyć tego, co piszesz w jednej komórce w innej komórce. Jeśli na przykład zdefiniujesz tablicę w komórce kodu, możesz użyć tej samej tablicy w innej komórce:

let companies = ["Microsoft", "Apple"]; // a code cell
console.log(companies[0]); // a different code cell, prints "Microsoft"

Powyższy przypadek nie jest tym, co oznacza udostępnianie zmiennych, ale wbudowaną funkcją. Udostępnianie zmiennych wchodzi w grę, gdy musisz współdzielić zmienne między komórkami kodu, więc opiszmy to w następnej sekcji.

Udostępnianie zmiennych

W tym scenariuszu chcesz napisać kod w języku C# i inny kod w języku JavaScript, który najprawdopodobniej będzie wykonywać różne czynności. Być może chcesz, aby kod języka C# pobierał dane, a następnie używać języka JavaScript do renderowania go inaczej lub użyć biblioteki, której nie ma w języku C#. Teraz, gdy mamy przypadek użycia, jak by to się stało?

Polecenie Ustaw

Aby przeprowadzić udostępnianie zmiennych, możemy użyć set polecenia . Załóżmy, że mamy kod napisany w komórce kodu w języku C#:

var cars = new []{"Saab", "Volvo","BMW" };
Console.WriteLine(cars[0]);

Aby użyć zmiennej cars w komórce kodu JavaScript, musimy użyć set polecenia . Najpierw przełącz jądro do języka JavaScript, a następnie wprowadź następujący kod:

#!set --value @csharp:cars --name carsFromCSharp
console.log(carsFromCSharp)

Podsumujmy, co set robi polecenie. Polecenie set zwraca uwagę, która zmienna ma być współużytkowa za pośrednictwem --value @csharp:carsmetody , a następnie nada zmiennej nazwę zmiennej w komórce JavaScript na carsFromCsharp.

Największym wnioskiem jest to, że nazwy parametrów są różne, ale w przeciwnym razie są równoważne.

Jak więc używać wartości w komórce JavaScript? Cóż, nadaliśmy mu nazwę carsFromSharp, więc musimy odwoływać się do:

console.log(carsFromCSharp[0]); // prints "Saab"

Widok zmiennych

Podczas tworzenia zmiennych w komórkach kodu istnieje element interfejsu użytkownika — widok zmiennych — który śledzi wszystkie utworzone zmienne. Zawiera on informacje o zmiennej, takie jak typ, wartość, jądro itd. Oto jak wygląda:

Zrzut ekranu przedstawiający tabelę, która śledzi wszystkie zmienne utworzone w Notesy Wielojęzyczne i ich szczegóły.

Na obrazie widać nazwę zmiennej (cars), jej wartości (Saab, Volvo i BMW), jego typ i jądro. Jądro staje się bardzo interesujące, ponieważ mamy również kolumnę Akcje , która umożliwia udostępnianie tej konkretnej zmiennej w innej komórce innego typu jądra.

Dane wejściowe użytkownika

Aby kod był elastyczny, możesz chcieć polegać na danych wejściowych użytkownika. Możesz poprosić użytkownika o informacje o elementach, takich jak konfiguracja, wpisy tajne, klucze interfejsu API i nie tylko. Notesy Wielojęzyczne oferują sposób zbierania danych wejściowych użytkownika przy użyciu prefiksu@input. Chodzi o to, że dodając ten prefiks, użytkownik otrzymuje monit i może przesłać swoją wartość przypisaną do określonej zmiennej. Oto przykład działania:

#!set --name url --value @input:"Please enter a URL"

W kodzie zostanie wyświetlony monit o wprowadzenie tekstu Proszę wprowadzić adres URL, a wynik jest przechowywany w zmiennej url .

Bezpośredni wpis danych za pomocą polecenia #!value

Inną przydatną funkcją jest przechowywanie wartości różnych typów. Wyobraź sobie, że masz kilka wierszy kodu JSON lub XML i chcesz przechowywać wartość w taki sam sposób. Oto doskonały prefiks, którego można użyć dla wywołania: #!value. Oto przykład:

#!value --name productsJSON
[
    {"id": 1, "name": "video game"},
    {"id": 2, "name": "book"}
]

Dobrze jest przechowywać wartość, jak pokazano, że ta zmienna (productsJSON) nie jest powiązana z żadnym konkretnym językiem programowania. W związku z tym można go używać z różnych komórek z różnymi jądrami. Można na przykład użyć jej z komórki platformy .NET lub komórki Języka JavaScript za pośrednictwem udostępniania zmiennych.