1659435972
Pendant longtemps, JavaScript a été le langage dominant dans le développement frontal en raison de sa capacité à s'exécuter nativement dans le navigateur et à interagir avec HTML et CSS via l'API DOM. Avec l'avènement de WebAssembly, les choses ont commencé à changer lentement. Des langages tels que Go, Rust, C, C++ et bien d'autres peuvent désormais s'exécuter dans le navigateur à des vitesses quasi natives, et Python n'a pas été laissé pour compte.
Avec l'introduction de PyScript, les développeurs frontend peuvent désormais créer des frontends riches avec Python. En outre, ils peuvent également puiser dans l'écosystème Python, qui contient des modules scientifiques utiles tels que NumPy , Matplotlib et bien d'autres.
Pour tirer le meilleur parti de ce tutoriel, vous aurez besoin de :
PyScript est un framework Web open source qui vous permet de créer des applications Web frontales à l'aide de Python. Avec PyScript, vous pouvez soit intégrer du code Python dans HTML, soit créer un lien vers un fichier Python et le code s'exécutera dans le navigateur, sans exécuter Python dans le backend.
PyScript a été créé par Anaconda et a été annoncé publiquement le 30 avril à PyCon US 2022. Au moment de la rédaction de cet article, PyScript est dans un état alpha et est en cours de développement, donc des changements de rupture et de nouvelles fonctionnalités sont à prévoir car il n'a pas n'a pas encore été publié de manière stable.
PyScript s'appuie sur Pyodide , qui porte CPython sur WebAssembly. WebAssembly est un format binaire de bas niveau qui vous permet d'écrire des programmes dans d'autres langages, qui sont ensuite exécutés dans le navigateur. Avec CPython dans WebAssembly, nous pouvons installer et exécuter des packages Python dans le navigateur, tandis que PyScript résume la plupart des opérations Pyodide, vous permettant de vous concentrer sur la création d'applications frontales avec Python dans le navigateur.
Avant de commencer à utiliser PyScript, créons le répertoire où résidera notre code.
Pour ce faire, ouvrez votre terminal et créez le répertoire du projet à l'aide de la mkdir
commande à l'emplacement de votre choix :
mkdir pyscript_demo
Ensuite, déplacez-vous dans le répertoire que vous venez de créer à l'aide de la cd
commande :
cd pyscript_demo
Souvent, les développeurs frontend utilisent des outils de formatage automatique comme Prettier dans leurs éditeurs de texte pour formater le code lors de l'enregistrement. Bien que cela fonctionne bien pour HTML, CSS et JavaScript, cela peut entraîner des problèmes dans le code Python car Python est strict en matière d'indentation.
Actuellement, les outils de formatage automatique comme Prettier ne reconnaissent pas la syntaxe PyScript, qui date d'environ deux mois au moment de la rédaction de cet article. Ces outils formatent automatiquement le code Python comme JavaScript, ce qui rompt l'indentation du code. Pour remédier à cela, nous désactiverons pour l'instant le formatage automatique de ce répertoire.
En supposant que vous utilisez VSCode, nous pouvons désactiver le formatage automatique comme suit.
Dans votre répertoire de projet, créez un .vscode
répertoire et naviguez dans le répertoire avec la commande suivante.
mkdir .vscode && cd .vscode
Ensuite, créez un settings.json
fichier et ajoutez le contenu suivant :
{
"editor.formatOnSave": false
}
Avec cela, la fonction de formatage automatique lors de l'enregistrement de ce répertoire a été désactivée dans VSCode et nous sommes maintenant prêts à commencer à utiliser PyScript.
Maintenant que notre répertoire est configuré pour PyScript, nous allons d'abord ajouter des liens vers les ressources PyScript comprenant un fichier CSS et un fichier JavaScript dans la <head>
section d'une page HTML.
Une fois les actifs ajoutés, vous pouvez utiliser PyScript dans un fichier HTML de deux manières :
<py-script>
balise d'un fichier HTML. La <py-script>
balise peut être ajoutée dans la balise <head>
ou <body>
en fonction de votre tâche à accomplir.py
extension, que vous pouvez ensuite référencer dans la <py-script>
balise à l'aide de l' src
attributLe moyen le plus simple et le plus rapide de commencer à utiliser PyScript consiste à intégrer du code Python dans le fichier HTML. Faisons cela!
Ouvrez votre éditeur de texte préféré, créez le hello-world.html
fichier et ajoutez le contenu suivant :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Hello World!</title>
<!-- linking to PyScript assets -->
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<!-- Put Python code inside the the <py-script> tag -->
<py-script>print("Hello World!")</py-script>
</body>
</html>
Dans la <head>
section, nous établissons un lien vers le pyscript.css
fichier, qui contient des styles pour les composants visuels PyScript, REPL, le chargeur PyScript, etc. Après cela, nous établissons un lien vers le pyscript.js
fichier, qui configure les fonctionnalités nécessaires à l'utilisation de PyScript, telles que la création de balises comme <py-script>
où vous pouvez écrire votre code Python.
Dans la <body>
balise, vous intégrez du code Python dans la <py-script>
balise. Nous gardons les choses simples pour l'instant, nous imprimons donc simplement Hello World
à l'utilisateur.
Assurez-vous d'enregistrer votre fichier à la racine du répertoire de votre projet et ouvrez le hello-world.html
fichier dans Chrome. Le chargement prendra quelques secondes, et une fois la page chargée, elle ressemblera à ceci :
Bien que l'insertion de code Python dans la <py-script>
balise fonctionne, une approche bien meilleure et plus évolutive consiste à ajouter le code dans un fichier externe et à le référencer dans le fichier HTML lorsque vous créez plus de pages HTML ou que vos scripts deviennent plus volumineux.
Voici quelques-unes des raisons pour lesquelles vous devriez envisager d'utiliser du code PyScript dans un fichier externe :
Pour utiliser PyScript en externe, nous allons créer un index.html
fichier, un fichier Python se terminant par une .py
extension contenant notre code Python, et enfin référencer le fichier Python dans le index.html
fichier.
index.html
fichierCréez un index.html
fichier et un lien vers les ressources PyScript :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Greetings!</title>
<!-- linking to PyScript assets -->
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
</body>
</html>
Le fichier ne fait pas grand-chose ; nous ne faisons que créer un lien vers les ressources PyScript. Pour le rendre plus utile, nous allons créer un main.py
fichier où résidera notre code Python.
main.py
fichierCréons une fonction Python qui imprime un message d'accueil.
Dans votre éditeur de texte, créez le main.py
fichier et ajoutez le code ci-dessous :
def greetings(name):
print(f'Hi, {name}')
greetings('John Doe')
La greetings()
fonction prend un name
paramètre et imprime un message d'accueil avec le nom stocké dans le name
paramètre. Lorsque nous appelons la greetings()
fonction avec John Doe
comme argument, elle imprime hi, John Doe
.
main.py
fichier dans le fichier HTMLMaintenant que vous avez créé le code Python, vous allez référencer le main.py
fichier dans le index.html
fichier.
Ouvrez le index.html
et ajoutez la ligne à l'intérieur de la <body>
balise :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Greetings!</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
// add the following line
<py-script src="./main.py"></py-script>
</body>
</html>
La <py-script>
balise a une src
balise qui accepte le chemin d'accès au fichier Python.
index.html
fichier dans le navigateurMaintenant que tout est en place, nous allons ouvrir le index.html
dans le navigateur.
Cependant, les navigateurs refuseront de charger et d'exécuter le fichier Python externe en raison de l' erreur de politique Cross-Origin Resource Sharing (CORS) . Pour résoudre ce problème, nous devrons utiliser un serveur. Heureusement que Python est livré avec un serveur Web que nous pouvons utiliser ! Le serveur n'a pas besoin d'être créé par Python, vous pouvez utiliser live-server ou n'importe quel serveur de votre choix.
Pour créer un serveur, ouvrez le terminal dans le répertoire racine de votre projet et exécutez la commande suivante :
python -m http.server
Ensuite, ouvrez Chrome et visitez http://0.0.0.0:8000/
. Le serveur chargera automatiquement le index.html
fichier et vous verrez ce qui suit :
Pour le reste de ce didacticiel, nous ferons référence à un fichier Python externe, ce qui nous obligera à utiliser un serveur pour éviter les erreurs CORS, et parfois nous intégrerons du code Python dans HTML par souci de brièveté.
PyScript est livré avec une boucle de lecture-évaluation-impression (REPL), que vous pouvez utiliser pour expérimenter et essayer le code Python.
Pour utiliser le REPL, ajoutez le <py-repl>
tag dans le <body>
tag de votre index.html
fichier :
<!DOCTYPE html>
...
<body>
<py-script src="./main.py"></py-script>
// add the following tag
<py-repl></py-repl>
</body>
</html>
Avec le serveur toujours en cours d'exécution, visitez http://0.0.0.0:8000/
. Vous verrez une nouvelle section où vous pourrez entrer du code Python.
Vous pouvez importer des modules, évaluer des expressions, créer des fonctions et bien d'autres choses encore. Pour voir à quoi correspond une expression, vous devez cliquer sur l' icône de lecture verte.
L'image suivante montre certaines des opérations que vous pouvez effectuer :
Maintenant que nous savons comment utiliser un REPL, nous allons maintenant apprendre à créer et à utiliser des modules dans PyScript.
Dans cette section, nous allons créer un module Python personnalisé et l'utiliser dans notre code. Nous utiliserons également des modules de la bibliothèque standard Python, ainsi que des modules tiers.
Pour utiliser les modules, nous allons introduire une nouvelle balise, <py-env>
, qui nous permet de référencer des modules ou des chemins de fichiers de modules.
Créons un module local contenant deux fonctions.
Créez un mathslib.py
fichier dans votre répertoire de projet et ajoutez le code ci-dessous :
def add(num1, num2):
return num1 + num2
def subtract(num1, num2):
return num1 - num2
Ici, nous avons créé deux fonctions qui effectuent des opérations d'addition et de soustraction.
Ensuite, créez un modules.html
fichier et ajoutez le contenu suivant :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>local modules</title>
<!-- linking to PyScript assets -->
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<py-env>
- paths:
- mathslib.py
</py-env>
<py-script>
from mathslib import subtract
print(subtract(8, 4))
<py-script>
</body>
</html>
Dans la <body>
balise, nous utilisons la <py-env>
balise, qui accepte une liste YAML qui a paths
pour clé. est le mathslib.py
chemin d'accès au fichier du module personnalisé relatif au modules.html
fichier. Une fois le chemin d'accès au module personnalisé spécifié, PyScript importera le module dans le fichier.
Avec le module chargé, dans la <py-script>
balise, nous importons la subtract()
fonction de mathslib.py
et invoquons la fonction avec les arguments 8
et 4
.
Avec le serveur en cours d'exécution, visitez http://0.0.0.0:8000/modules.html
et vous verrez une page similaire à celle-ci :
PyScript, avec l'aide de Pyodide, donne accès à de nombreux modules disponibles dans la bibliothèque standard Python qui sont prêts à être utilisés, à l'exception des suivants :
Visitez la documentation de Pyodide pour voir une liste complète. Notez également les modules inclus mais non fonctionnels, tels que les modules de multitraitement, de threading et de sockets.
Les modules de la bibliothèque standard sont disponibles dans l'espace de noms PyScript par défaut ; il vous suffit de les importer pour les utiliser dans le fichier.
Toujours dans le modules.html
fichier, modifiez le code Python dans la <py-script>
balise pour générer un nombre aléatoire à l'aide du random
module :
from mathslib import subtract
import random
print(subtract(8, 4))
print("random number generated: ")
print(random.randint(1, 12))
Visitez maintenant la http://0.0.0.0:8000/modules.html
page et vous verrez un nombre aléatoire généré chaque fois que vous actualisez la page :
Outre l'utilisation de modules Python intégrés, vous pouvez également utiliser des bibliothèques tierces fournies dans Pyodide, telles que :
Pour une liste complète des packages tiers pris en charge, consultez la documentation Pyodide ou gardez un œil attentif sur le référentiel Pyodide GitHub .
Pour ajouter un package tiers, créez un nouveau fichier HTML, third-party.html
, et ajoutez le code suivant :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>local modules</title>
<!-- linking to PyScript assets -->
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<!-- thirdparty dependencies added here -->
<py-env>
- numpy
- matplotlib
</py-env>
<py-script>
import numpy as np
import matplotlib.pyplot as plt
arr = np.array([1, 2, 3, 4, 5])
plt.plot(arr)
plt
<py-script>
</body>
</html>
Dans la <py-env>
balise, nous ajoutons une liste de packages tiers que nous souhaitons utiliser dans notre projet, qui sont les packages NumPy et Matplotlib. Ensuite, dans la <py-script>
balise, nous importons NumPy en tant que np
et Matplotlib en tant que plt
. Ensuite, nous appelons la array
méthode de NumPy, qui crée un tableau qui est ensuite stocké dans la arr
variable. Après cela, nous appelons la plot
méthode de Matplotlib avec le tableau arr
comme argument pour tracer un graphique.
Assurez-vous que votre fichier est enregistré et visitez la http://0.0.0.0:8000/third-party.html
page. Vous devriez voir un graphique semblable au suivant :
Maintenant que vous comprenez comment utiliser des modules intégrés personnalisés et des packages tiers, nous apprendrons comment accéder et manipuler les éléments HTML dans la section suivante.
Dans cette section, nous apprendrons comment sélectionner un élément HTML à l'aide d'un ID ou d'une classe CSS, modifier un élément, attacher des événements à un élément et créer de nouveaux éléments à l'aide de PyScript.
Element
classePyScript est livré avec la Element
classe, qui vous permet de sélectionner un élément HTML à l'aide de son ID.
Pour voir comment cela fonctionne, créez un elements.html
fichier et insérez le contenu suivant :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Element class</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<ul id="navigation">
<li class="home">home</li>
<li class="about">about</li>
<li class="services">services</li>
<li class="contact">contact</li></ul>
</div>
<div id="output"></div>
<py-script src="./access-elements.py"></py-script>
</body>
</html>
Dans la <body>
balise, nous avons un <ul>
élément avec un ID de navigation
. Nous utiliserons l'ID pour sélectionner cet élément à l'aide de la Element
classe. L'instance sélectionnée nous donnera des méthodes que nous pouvons utiliser pour sélectionner les descendants et les manipuler.
Une autre balise que nous utiliserons est le <div>
avec un ID de output
. Nous allons le modifier innerHTML
pour écrire une nouvelle valeur. Enfin, après la <div>
balise, nous établissons un lien vers le access-elements.py
fichier qui contiendra notre code Python. Il n'existe pas encore, alors allons-y et créons-le.
Une fois le fichier créé access-elements.py
, ajoutez-y le code suivant :
ul_element = Element("navigation")
first_element = ul_element.select('.home').add_class('first')
second_element = ul_element.select('.about').remove_class('about')
div_element = Element("output")
div_element.write("Value set from PyScript")
Dans le code précédent, nous utilisons la Element
classe pour accéder à l' <ul>
élément à l'aide de l' navigation
ID.
Lorsqu'un élément est sélectionné à l'aide de la Element
classe, vous pouvez tirer parti de certaines des méthodes suivantes :
write()
: Définit la innerHTML
valeurselect()
: Utilise un sélecteur CSS pour trouver des éléments descendantsadd_class()
: Ajoute une ou plusieurs classes à un élémentremove_class()
: Supprime une ou plusieurs classes d'un élémentDans la deuxième ligne, nous utilisons la select()
méthode pour sélectionner le premier élément enfant de l' <ul>
élément en utilisant son nom de classe, home
. Après avoir sélectionné l'enfant, nous appelons la add_class()
méthode pour ajouter une nouvelle classe first
à l' <li>
élément.
Dans la troisième ligne, nous accédons au deuxième élément enfant par son nom de classe about
, puis supprimons sa classe about
à l'aide de la remove_class()
méthode.
Ensuite, nous appelons la Element
classe avec l' ID output
, qui fournit une référence à l' <div>
élément qui réside après l' ul
élément dans le elements.html
fichier. Enfin, nous appelons la write()
méthode avec la chaîne Value set from PyScript
. La méthode définira la valeur de l' <div>
élément innerHTML
sur l'argument de chaîne.
Avec le serveur toujours actif, visitez http://0.0.0.0:8000/elements.html
et inspectez l' <ul>
élément. Vous verrez que le premier <li>
élément a maintenant une classe supplémentaire ( first
), le deuxième élément n'a pas de classe et l' div
élément a maintenant le texte que nous avons défini en Python.
Nous pouvons maintenant sélectionner des éléments HTML et effectuer quelques manipulations de base. Dans cette section, nous allons attacher un événement click à un élément et faire exécuter du code Python lorsque l'élément a été cliqué.
Créez un events.html
fichier et écrivez le code ci-dessous :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Adding Events</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<button id="click-btn" class="bg-blue-500 text-white" pys-onClick="handle_click">Click</button>
<div id="output"></div>
<py-script src="./event-handlers.py"></py-script>
</body>
</html>
Dans la <body>
balise, nous avons un <button>
avec un class
attribut contenant certaines classes qui font partie du pyscript.css
fichier. La <button>
balise a également un pys-onclick
attribut, qui attache un click
événement au bouton. L' pys-onclick
attribut accepte le nom de la fonction handle_click
, qui sera la fonction qui s'exécute lorsque le bouton est cliqué.
Ensuite, nous avons l' div
élément avec un ID de output
. Nous allons modifier l'élément innerHTML
avec la handle_click
fonction que nous définissons.
Enfin, nous établissons un lien vers le event-handlers.py
fichier, qui contiendra la fonction de gestionnaire d'événements.
Définissons le event-handlers.py
et ajoutons ce qui suit :
def handle_click(e):
pyscript.write("output", "you clicked the button")
La handle_click
fonction a un paramètre, e
qui est un objet événement transmis automatiquement à la fonction lorsque vous cliquez sur le bouton. A l'intérieur de la fonction, nous invoquons la write()
méthode de PyScript, qui prend deux arguments : l'ID de l'élément output
et la valeur que nous voulons écrire, dans notre cas, you clicked the button
.
Assurez-vous que votre serveur est en cours d'exécution :
python -m http.server
Ensuite, visitez l'URL http://0.0.0.0:8000/events.html
dans Chrome. Lorsque la page se charge, cliquez sur le bouton et un message indiquant "vous avez cliqué sur le bouton" apparaît :
PyScript est livré avec un js
module qui vous donne accès à des méthodes JavaScript, telles que querySelector()
, createElement()
, appendChild()
, etc., pour accéder et manipuler des éléments HTML. Avec ceux-ci, vous pourrez mélanger JavaScript et Python pour effectuer des manipulations DOM intéressantes. Voici un exemple:
import js
print(js.window.innerHeight)
nav = js.document.createElement("div")
js.document.body.prepend(nav)
js.console.log("nav element created")
Comme vous pouvez le voir, nous mélangeons des méthodes de code Python print()
avec JavaScript window
ou document
des propriétés.
Dans cette section, nous nous concentrerons principalement sur les document
méthodes, et commodément, PyScript les rend automatiquement disponibles dans la portée Python. Nous n'aurons même pas besoin d'importer le js
module pour utiliser les document
méthodes.
Créez un dom.html
fichier et ajoutez le code suivant :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Mixing JavaScript and Python</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<ul id="navigation">
</ul>
<py-script src="./js-dom.py"></py-script>
</body>
</html>
Dans la <body>
balise, nous n'avons qu'un <ul>
élément vide avec un ID de navigation
. Ensuite, nous référençons le js-dom.py
qui contiendra notre code Python.
Créez le js-dom.py
fichier et ajoutez le contenu suivant :
nav_parent = document.querySelector('#navigation')
nav_texts = ["home", "about", "services", "contact"]
for text in nav_texts:
nav_item = document.createElement("li")
nav_item.textContent = text
nav_item.className = "nav_element"
nav_parent.appendChild(nav_item)
Dans la première ligne, nous appelons la querySelector()
méthode du document
module avec #navigation
comme argument. La méthode trouvera et renverra un élément avec un ID de navigation
, qui est l' <ul>
élément dans le dom.html
fichier.
Dans la deuxième ligne, nous créons une liste de texte de navigation et la stockons dans la nav_texts
variable. Après cela, nous parcourons la nav_texts
liste. A chaque itération, nous invoquons la createElement()
méthode avec une chaîne li
pour créer un <li>
élément.
Ensuite, nous ajoutons du texte à l' <li>
élément à l'aide de la textContent
propriété et ajoutons un nom de classe nav_element
à l' <li>
élément à l'aide de la className
propriété. Enfin, nous ajoutons l' <li>
élément à l' <ul>
élément en appelant le appendChild()
avec l' nav_item
élément comme argument.
Assurez-vous que votre fichier est enregistré et que le serveur est toujours en cours d'exécution. Visitez http://0.0.0.0:8000/dom.html
, et vous verrez une page qui ressemble à ce qui suit :
Si vous creusez plus loin et inspectez les éléments, vous verrez que les <li>
éléments ont été créés avec le nom de classe nav_element
, que nous avons défini en Python :
Nous pouvons maintenant accéder et manipuler le DOM à l'aide de la Element
classe, attacher des événements aux éléments et utiliser JavaScript pour interroger et modifier le DOM. Ensuite, nous allons récupérer les données d'une API à l'aide de PyScript.
Dans cette section, nous utiliserons PyScript pour envoyer une GET
requête à une API afin de récupérer des données. L'API que nous utiliserons est l' API Random Data . Nous allons créer un bouton avec un événement click qui exécute une fonction qui appelle l'API chaque fois que le bouton est cliqué.
Créez un fetch_data.html
fichier dans votre répertoire et ajoutez le contenu suivant :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Fetch data from API</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<button id="get-name" class="bg-green-600 text-white" pys-onClick="get_random_name">Generate Random Name</button>
<div id="output"></div>
<py-script src="./fetch.py"></py-script>
</body>
</html>
Le code devrait être familier à ce stade. La partie la plus importante est la <button>
balise, qui a l' pys-onClick
attribut qui accepte la get_random_name()
fonction. La fonction résidera dans le fetch.py
fichier lié en bas. Continuons et créons le fichier.
Dans votre éditeur de texte, créez un nouveau fichier nommé fetch.py
avec le contenu suivant :
from pyodide.http import pyfetch
import asyncio
async def get_random_name(e):
response = await pyfetch(url="https://random-data-api.com/api/name/random_name", method="GET")
data = await response.json()
first_name = data.get('first_name')
middle_name = data.get('middle_name')
last_name = data.get('last_name')
output = f"Random name: {first_name} {middle_name} {last_name}"
pyscript.write('output', output)
Dans la première ligne, nous importons la pyfetch()
méthode du pyodide.http
module, ce qui nous permet de faire des requêtes réseau asynchrones. Dans la deuxième ligne, nous importons le asyncio
module, qui fait partie de la bibliothèque standard Python et fournit les mots-clés async
et await
utiles pour créer des fonctions asynchrones.
Ensuite, nous définissons une fonction asynchrone get_random_name()
en la préfixant avec le async
mot clé du asyncio
module. Au sein de la fonction, nous invoquons la pyfetch()
méthode qui accepte deux arguments :
URL
: Le point de terminaison de l'APImethod
: spécifie la méthode HTTP que vous souhaitez utiliser, qui est la GET
méthode ici.Lorsqu'il pyfetch()
s'exécute, il renvoie un objet, qui est ensuite stocké dans la response
variable. Dans la ligne qui suit, nous appelons le json()
sur l' response
objet pour analyser le JSON et renvoyer un dictionnaire Python, qui est ensuite stocké dans la data
variable.
Dans les lignes suivantes, vous extrayez le prénom, le deuxième prénom et le nom de famille du data
dict et les stockez dans leurs variables respectives. Enfin, nous concaténons les noms à l'aide des f-strings de Python et invoquons la pyscript.write()
méthode pour écrire les données dans l' <div>
élément avec un ID de output
.
Assurez-vous que votre serveur est en cours d'exécution et visitez la http://0.0.0.0:8000/fetch_data.html
page. Une fois la page chargée, cliquez sur le Generate Random Name
bouton. Vous verrez qu'un nouveau nom est généré à chaque clic sur le bouton :
localStorage
Dans cette section, nous utiliserons le stockage local pour enregistrer et récupérer des données. Le stockage local est un objet du navigateur Web qui peut stocker des données sans date d'expiration. Python peut utiliser le stockage local en l'important depuis le js
module.
Pour utiliser le stockage local, nous allons créer une zone de texte permettant aux utilisateurs de saisir des commentaires. S'ils souhaitent enregistrer le commentaire, ils cliqueront sur un save
bouton qui exécutera une fonction qui enregistre les données dans le stockage local. Chaque fois que la page est visitée, les données seront extraites du stockage local et la zone de texte sera définie sur les données.
Créez un storage.html
fichier et ajoutez le contenu suivant :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Store data in local storage</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<textarea id="comment" class="block border"></textarea>
<button id="save" class="bg-green-600 text-white"
pys-onClick="save_comment">Save</button>
<py-script src="./local-storage.py"></py-script>
</body>
</html>
Dans la <body>
balise, nous créons une <textarea>
balise avec un ID comment
. Nous utiliserons cet ID pour obtenir une référence de l'élément de zone de texte en Python. Ensuite, nous avons un bouton qui a save
pour identifiant et un événement click qui invoquera la fonction save_comment
, que nous n'avons pas encore définie. Enfin, nous référençons le local-storage.py
, qui contiendra notre code Python. Créons le fichier maintenant.
Créez local-storage.py
et ajoutez les éléments suivants :
from js import localStorage
def save_comment(e):
text = Element("comment").value
localStorage.setItem("comment", text)
if localStorage.getItem("comment"):
text_area = Element("comment")
text_area.write(localStorage.getItem("comment"))
Tout d'abord, nous importons l' localStorage
objet depuis le js
module. Ensuite, nous définissons la save_comment()
fonction, qui prend e
comme paramètre. Dans la fonction, nous invoquons la Element
classe avec l'ID comment
pour obtenir une référence de zone de texte. Une fois que la méthode trouve la zone de texte, nous utilisons la value
propriété pour obtenir le contenu de la zone de texte et stocker la valeur dans la text
variable. Dans la ligne suivante, nous invoquons la setItem()
méthode de l' localStorage
objet pour enregistrer le texte du commentaire dans l' localStorage
objet sous la comment
clé.
Désormais, la save_comment()
fonction ne s'exécutera que lorsque le save
bouton sera cliqué. Cependant, en procédant hors de la save_comment()
fonction, les lignes qui suivent la fonction ne s'exécuteront que lors du chargement de la page.
Lorsque la page est chargée pour la première fois, nous utilisons l' if
instruction pour vérifier si l' localStorage
objet contient des données sous la comment
clé. Si vrai, nous référençons la zone de texte à l'aide de la Element
classe et stockons son instance dans la text_area
variable. Ensuite, nous invoquons la write()
méthode de l' text_area
instance pour mettre à jour le contenu de la zone de texte avec les données du stockage local.
Assurez-vous que votre serveur est en cours d'exécution et visitez http://0.0.0.0:8000/storage.html
. Saisissez le texte de votre choix et cliquez sur le bouton Enregistrer .
Ensuite, actualisez l'URL et vous verrez que la zone de texte contient le texte que vous avez enregistré lors de la première visite.
Avec cela, vous savez maintenant comment tirer parti localStorage
de PyScript. Ensuite, nous allons lire un fichier dans le système de fichiers en utilisant PyScript.
Dans cette section, nous utiliserons PyScript pour lire les données d'un fichier en clair dans le système de fichiers local et ajouter son contenu dans le DOM.
Commençons par créer un fichier contenant les données que nous voulons lire. Dans le répertoire principal de votre projet, exécutez la commande suivante pour créer et déplacer dans un nouveau répertoire :
mkdir data && cd data
Ensuite, créez un names.txt
fichier et ajoutez le contenu suivant, qui sont des noms de frameworks Web Python :
Django
Flask
FastAPI
web2p
Enregistrez le fichier et revenez à la racine du répertoire de votre projet :
cd ..
Une fois le fichier créé, créez un file-system.html
fichier dans votre éditeur de texte avec les éléments suivants :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Read data from file system</title>
<link rel="stylesheet" href="https://pyscript.net/alpha/pyscript.css" />
<script defer src="https://pyscript.net/alpha/pyscript.js"></script>
</head>
<body>
<py-env>
- paths:
- /data/names.txt
</py-env>
<ul id="frameworks">
</ul>
<py-script src="./read-file.py"></py-script>
</body>
</html>
Dans la <py-env>
balise, nous spécifions le chemin vers le names.txt
, qui est relatif au file-system.html
chemin. Ensuite, nous créons une <ul>
balise vide avec un frameworks
ID. Enfin, nous faisons référence au read-file.py
, que nous définirons bientôt.
Créez un read-file.py
avec le contenu suivant :
ul_element = document.querySelector("#frameworks")
with open("names.txt") as f:
for line in f:
li_element = document.createElement("li")
li_element.innerText = line
ul_element.appendChild(li_element)
Dans la première ligne, nous invoquons la querySelector()
méthode avec un ID selector #frameworks
, qui obtient une référence de l' <ul>
élément. Dans la deuxième ligne, nous appelons la open()
méthode avec le nom de fichier names.txt
et stockons l'objet fichier sous f
.
Dans l' with
instruction, nous parcourons chaque ligne stockée dans le fichier object f
. Lors de chaque itération, nous créons un <li>
élément en utilisant la méthode document
de l'objet createElement()
. Ensuite, nous définissons le <li>
contenu du texte sur la valeur de la line
variable à l'aide de la innerText
propriété de l' li_element
instance. Enfin, nous ajoutons l' <li>
élément à l' <ul>
élément en appelant le appendChild()
avec le li_element
comme argument.
Redémarrez le serveur (si vous l'avez arrêté avant) :
python -m http.server
Visitez l' http://0.0.0.0:8000/file-system.html
URL et vous verrez le contenu du fichier en clair s'afficher sur la page :
Si vous inspectez les éléments, vous verrez qu'il y a quatre <li>
éléments qui ont été ajoutés à l' <ul>
élément.
Avec cela, vous pouvez maintenant lire les fichiers dans le système de fichiers. Vous pouvez utiliser la même approche pour lire les fichiers CSV et de nombreux autres formats de fichiers.
Dans ce didacticiel, nous avons appris à utiliser le REPL PyScript, à créer des modules personnalisés, à utiliser des modules de la bibliothèque standard Python et à importer des modules tiers. Nous avons également appris à accéder et à manipuler des éléments à l'aide de PyScript, à effectuer des requêtes API, à utiliser localStorage
et à lire un fichier en texte brut à partir du système de fichiers.
Pour explorer davantage PyScript, visitez la page d'accueil de PyScript . De plus, consultez la page de documentation de Pyodide pour en savoir plus sur les possibilités qu'il permet dans le navigateur.
Source : https://blog.logrocket.com/pyscript-run-python-browser/
1626775355
No programming language is pretty much as diverse as Python. It enables building cutting edge applications effortlessly. Developers are as yet investigating the full capability of end-to-end Python development services in various areas.
By areas, we mean FinTech, HealthTech, InsureTech, Cybersecurity, and that's just the beginning. These are New Economy areas, and Python has the ability to serve every one of them. The vast majority of them require massive computational abilities. Python's code is dynamic and powerful - equipped for taking care of the heavy traffic and substantial algorithmic capacities.
Programming advancement is multidimensional today. Endeavor programming requires an intelligent application with AI and ML capacities. Shopper based applications require information examination to convey a superior client experience. Netflix, Trello, and Amazon are genuine instances of such applications. Python assists with building them effortlessly.
Python can do such numerous things that developers can't discover enough reasons to admire it. Python application development isn't restricted to web and enterprise applications. It is exceptionally adaptable and superb for a wide range of uses.
Robust frameworks
Python is known for its tools and frameworks. There's a structure for everything. Django is helpful for building web applications, venture applications, logical applications, and mathematical processing. Flask is another web improvement framework with no conditions.
Web2Py, CherryPy, and Falcon offer incredible capabilities to customize Python development services. A large portion of them are open-source frameworks that allow quick turn of events.
Simple to read and compose
Python has an improved sentence structure - one that is like the English language. New engineers for Python can undoubtedly understand where they stand in the development process. The simplicity of composing allows quick application building.
The motivation behind building Python, as said by its maker Guido Van Rossum, was to empower even beginner engineers to comprehend the programming language. The simple coding likewise permits developers to roll out speedy improvements without getting confused by pointless subtleties.
Utilized by the best
Alright - Python isn't simply one more programming language. It should have something, which is the reason the business giants use it. Furthermore, that too for different purposes. Developers at Google use Python to assemble framework organization systems, parallel information pusher, code audit, testing and QA, and substantially more. Netflix utilizes Python web development services for its recommendation algorithm and media player.
Massive community support
Python has a steadily developing community that offers enormous help. From amateurs to specialists, there's everybody. There are a lot of instructional exercises, documentation, and guides accessible for Python web development solutions.
Today, numerous universities start with Python, adding to the quantity of individuals in the community. Frequently, Python designers team up on various tasks and help each other with algorithmic, utilitarian, and application critical thinking.
Progressive applications
Python is the greatest supporter of data science, Machine Learning, and Artificial Intelligence at any enterprise software development company. Its utilization cases in cutting edge applications are the most compelling motivation for its prosperity. Python is the second most well known tool after R for data analytics.
The simplicity of getting sorted out, overseeing, and visualizing information through unique libraries makes it ideal for data based applications. TensorFlow for neural networks and OpenCV for computer vision are two of Python's most well known use cases for Machine learning applications.
Thinking about the advances in programming and innovation, Python is a YES for an assorted scope of utilizations. Game development, web application development services, GUI advancement, ML and AI improvement, Enterprise and customer applications - every one of them uses Python to its full potential.
The disadvantages of Python web improvement arrangements are regularly disregarded by developers and organizations because of the advantages it gives. They focus on quality over speed and performance over blunders. That is the reason it's a good idea to utilize Python for building the applications of the future.
#python development services #python development company #python app development #python development #python in web development #python software development
1602968400
Python is awesome, it’s one of the easiest languages with simple and intuitive syntax but wait, have you ever thought that there might ways to write your python code simpler?
In this tutorial, you’re going to learn a variety of Python tricks that you can use to write your Python code in a more readable and efficient way like a pro.
Swapping value in Python
Instead of creating a temporary variable to hold the value of the one while swapping, you can do this instead
>>> FirstName = "kalebu"
>>> LastName = "Jordan"
>>> FirstName, LastName = LastName, FirstName
>>> print(FirstName, LastName)
('Jordan', 'kalebu')
#python #python-programming #python3 #python-tutorials #learn-python #python-tips #python-skills #python-development
1602666000
Today you’re going to learn how to use Python programming in a way that can ultimately save a lot of space on your drive by removing all the duplicates.
In many situations you may find yourself having duplicates files on your disk and but when it comes to tracking and checking them manually it can tedious.
Heres a solution
Instead of tracking throughout your disk to see if there is a duplicate, you can automate the process using coding, by writing a program to recursively track through the disk and remove all the found duplicates and that’s what this article is about.
But How do we do it?
If we were to read the whole file and then compare it to the rest of the files recursively through the given directory it will take a very long time, then how do we do it?
The answer is hashing, with hashing can generate a given string of letters and numbers which act as the identity of a given file and if we find any other file with the same identity we gonna delete it.
There’s a variety of hashing algorithms out there such as
#python-programming #python-tutorials #learn-python #python-project #python3 #python #python-skills #python-tips
1597751700
Magic Methods are the special methods which gives us the ability to access built in syntactical features such as ‘<’, ‘>’, ‘==’, ‘+’ etc…
You must have worked with such methods without knowing them to be as magic methods. Magic methods can be identified with their names which start with __ and ends with __ like init, call, str etc. These methods are also called Dunder Methods, because of their name starting and ending with Double Underscore (Dunder).
Now there are a number of such special methods, which you might have come across too, in Python. We will just be taking an example of a few of them to understand how they work and how we can use them.
class AnyClass:
def __init__():
print("Init called on its own")
obj = AnyClass()
The first example is _init, _and as the name suggests, it is used for initializing objects. Init method is called on its own, ie. whenever an object is created for the class, the init method is called on its own.
The output of the above code will be given below. Note how we did not call the init method and it got invoked as we created an object for class AnyClass.
Init called on its own
Let’s move to some other example, add gives us the ability to access the built in syntax feature of the character +. Let’s see how,
class AnyClass:
def __init__(self, var):
self.some_var = var
def __add__(self, other_obj):
print("Calling the add method")
return self.some_var + other_obj.some_var
obj1 = AnyClass(5)
obj2 = AnyClass(6)
obj1 + obj2
#python3 #python #python-programming #python-web-development #python-tutorials #python-top-story #python-tips #learn-python
1593156510
At the end of 2019, Python is one of the fastest-growing programming languages. More than 10% of developers have opted for Python development.
In the programming world, Data types play an important role. Each Variable is stored in different data types and responsible for various functions. Python had two different objects, and They are mutable and immutable objects.
Table of Contents hide
III Built-in data types in Python
The Size and declared value and its sequence of the object can able to be modified called mutable objects.
Mutable Data Types are list, dict, set, byte array
The Size and declared value and its sequence of the object can able to be modified.
Immutable data types are int, float, complex, String, tuples, bytes, and frozen sets.
id() and type() is used to know the Identity and data type of the object
a**=25+**85j
type**(a)**
output**:<class’complex’>**
b**={1:10,2:“Pinky”****}**
id**(b)**
output**:**238989244168
a**=str(“Hello python world”)****#str**
b**=int(18)****#int**
c**=float(20482.5)****#float**
d**=complex(5+85j)****#complex**
e**=list((“python”,“fast”,“growing”,“in”,2018))****#list**
f**=tuple((“python”,“easy”,“learning”))****#tuple**
g**=range(10)****#range**
h**=dict(name=“Vidu”,age=36)****#dict**
i**=set((“python”,“fast”,“growing”,“in”,2018))****#set**
j**=frozenset((“python”,“fast”,“growing”,“in”,2018))****#frozenset**
k**=bool(18)****#bool**
l**=bytes(8)****#bytes**
m**=bytearray(8)****#bytearray**
n**=memoryview(bytes(18))****#memoryview**
Numbers are stored in numeric Types. when a number is assigned to a variable, Python creates Number objects.
#signed interger
age**=**18
print**(age)**
Output**:**18
Python supports 3 types of numeric data.
int (signed integers like 20, 2, 225, etc.)
float (float is used to store floating-point numbers like 9.8, 3.1444, 89.52, etc.)
complex (complex numbers like 8.94j, 4.0 + 7.3j, etc.)
A complex number contains an ordered pair, i.e., a + ib where a and b denote the real and imaginary parts respectively).
The string can be represented as the sequence of characters in the quotation marks. In python, to define strings we can use single, double, or triple quotes.
# String Handling
‘Hello Python’
#single (') Quoted String
“Hello Python”
# Double (") Quoted String
“”“Hello Python”“”
‘’‘Hello Python’‘’
# triple (‘’') (“”") Quoted String
In python, string handling is a straightforward task, and python provides various built-in functions and operators for representing strings.
The operator “+” is used to concatenate strings and “*” is used to repeat the string.
“Hello”+“python”
output**:****‘Hello python’**
"python "*****2
'Output : Python python ’
#python web development #data types in python #list of all python data types #python data types #python datatypes #python types #python variable type