Funkcje notesu polyglot
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"; nameW 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
displaydo odwołania, wywołującUpdatemetodę , 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ść.
- Można to nazwać wielokrotnie. Możesz na przykład wywołać metodę
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:
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.