L'un des défis pour moi de saisir la with asfonctionnalité en Python, son besoin n'est pas apparent à moins que vous n'ayez une compréhension plus approfondie des limites du langage Python.
Un développeur Ruby, Julia, Lua, Go, JavaScript ou Swift, par exemple, n'aurait pas besoin d'ajouter cette déclaration. Pourquoi donc?
Au cœur du problème se trouve une fonctionnalité chère à de nombreux développeurs Python : l'utilisation de l'indentation pour indiquer les blocs de code.
En JavaScript, je pourrais écrire par exemple
openfile('foobar.txt', function(file) {
// called after file has been opened
// file is a handle to the open file
read_data(file)
...
});
openfile("foobar.txt", function(file)
-- called after file has been opened
-- file is a handle to the open file
read_data(file)
...
end)
openfile("foobar.txt", def (file):
# called after file has been opened
# file is a handle to the open file
read_data(file)
...
Il illustre l'avantage d'avoir un symbole pour signaler la fin d'un bloc de code plutôt qu'un changement d'indentation.
Entrons un peu dans les détails des avantages d'avoir une syntaxe conviviale pour les fermetures multilignes en ligne. Je vais illustrer avec un exemple de code Julia, bien que JavaScript, Lua et de nombreux autres langages fonctionnent tout aussi bien.
function openfile(callback, filename::String)
file = open(filename)
callback(file)
close(file)
end
openfile(file -> print(readline(file)), "foobar.txt")
openfile("foobar.txt") do file
print(readline(file))
end
La beauté de cette façon d'ouvrir et de fermer des fichiers, c'est que vous n'oublierez pas de fermer le fichier.
Comme expliqué, il est difficile d'obtenir la même chose dans Python sa syntaxe. Ainsi with-asa été inventé. Permettez-moi de montrer comment l'exemple précédent serait implémenté en Python.
class openfile:
def __init_(self, filename):
self.filename
def __enter__(self):
self.file = open(self.filename)
return file
def __exit__(self, exc_type, exc_val, exc_tb):
close(self.file)
Nous pouvons utiliser cette classe pour ouvrir et lire un fichier de cette manière :
with openfile("foobar.txt") as file:
print(readline(file))
openfileclasse est appelé et nous stockons le nom du fichier que nous voulons ouvrir.openfileclasse est passée à la with-asconstruction, ce qui provoque l' __enter__appel de sa méthode. Il est censé acquérir nos ressources désirées. Un descripteur de fichier dans ce cas.as. Se réfère donc as fileà l'objet renvoyé par __enter__. Les noms ne doivent pas correspondre. Nous aurions pu écrire as foobarà la place.with-asbloc a été exécuté, Python invoquera __exit__pour libérer les ressources. Cela sera également appelé au cas où des exceptions seraient levées.Il existe de nombreuses variantes dans la manière de créer ces classes de gestionnaire de contexte , soit en sous-classant, soit en utilisant des décorateurs.
Lorsque vous faites une demande à facebook.com, votre ordinateur recherche le nom de domaine pour traduire ce nom de domaine en une adresse IP afin que votre ordinateur puisse établir cette connexion.
Notre langue est un outil puissant qui peut façonner nos pensées, nos attitudes et nos actions. Même des termes apparemment inoffensifs peuvent perpétuer des préjugés et des stéréotypes nuisibles.
Hier, nous avons fermé la porte du concours Eurovision de la chanson de cette année avec une grande finale scintillante et chaotique où la chanteuse suédoise Loreen a remporté le trophée, devenant la première femme à gagner deux fois et ramenant la couronne à la Suède 50 ans après qu'ABBA a remporté le concours. avec "Waterloo". Ils sont devenus l'un des plus grands groupes du canon de la musique pop.
En 2022, avec la sortie de GPT-3, la compétence en écriture semble devenir moins importante. Avec l'IA, les personnes ayant une mauvaise écriture peuvent également générer du personnel de qualité.
Tout esprit rationnel sait que les milieux politiques et médiatiques sont dominés par la gauche, voire l'extrême gauche, un état de fait qui crée un déséquilibre dans le discours politique. Dans le domaine religieux, ce déséquilibre est bien visible : les journaux et les réseaux de gauche ne se précipitent pas pour défendre la foi chrétienne.