** * Attention Ajoutez ce que vous avez remarqué dans l'ordre **
La boutique java commence à utiliser python et répertorie les choses qui ont surpris la différence. Aussi, laissez la méthode d'adaptation.
Il n'y a pas de syntaxe de commutateur en python. Il semble que s'il n'y a pas de commutateur, cela devrait être fait avec if. Alternativement, il existe également une méthode utilisant un dictionnaire.
Pourquoi n'y a-t-il pas d'instruction switch ou case en Python? (Site officiel)
Méthode utilisée dans le dictionnaire
def function_1():
print('function_1')
def function_2():
print('function_2')
functions = {'a': function_1, 'b': function_2}
func = functions['b']
func()
↓ Résultat de l'exécution ↓
function_1
python n'a pas de constantes strictes En le nommant en toutes lettres majuscules, il est traité comme une constante opérationnellement. C'est juste une variable, donc bien sûr vous pouvez la changer si vous le souhaitez.
Il n'y a pas d'interface en python. Il existe un concept de classes abstraites appelé ABC (Abstract Base Classes), donc je me demande s'il y a un problème particulier. Tout ce que vous avez à faire est d'en faire une méthode abstraite.
Comment écrire une classe abstraite(abctest.py)
from abc import ABC, abstractmethod
class Animal(ABC):
@abstractmethod
def sound(self):
pass
class Cow(Animal):
def sound(self):
print("moo")
class Penguin(Animal):
pass #N'implémente pas de méthodes abstraites
if __name__ == "__main__":
hanako = Cow()
hanako.sound()
taro = Penguin() #J'obtiens une erreur lors de l'instanciation car je n'ai pas implémenté de méthode abstraite
Résultat d'exécution
moo
Traceback (most recent call last):
File "abctest.py", line 19, in <module>
taro = Penguin()
TypeError: Can't instantiate abstract class Penguin with abstract methods sound
Il n'y a pas de concept de surcharge en python. Utilisez les paramètres d'argument par défaut et les arguments de longueur variable pour effectuer des opérations telles que la surcharge.
Ce n'est pas bien
class Farm:
def add(self, animal):
print(animal)
def add(self, animal1, animal2):
print(animal1)
print(animal2)
if __name__ == "__main__":
farm = Farm()
farm.add('Dog')
farm.add('Jersey','Holstein')
↓ Résultat de l'exécution ↓
Traceback (most recent call last):
File "farmtest.py", line 13, in <module>
farm.add()
TypeError: add() missing 2 required positional arguments: 'animal1' and 'animal2'
class Farm:
def add(self, animal='Chicken'):
print(animal)
if __name__ == "__main__":
farm = Farm()
farm.add()
farm.add('Dog')
↓ Résultat de l'exécution ↓
Chicken
Dog
class Farm:
def add(self, *args):
if len(args) == 0:
print('blank')
for i in args:
print(i)
if __name__ == "__main__":
farm = Farm()
farm.add()
farm.add('Dog')
farm.add('Jersey','Holstein')
↓ Résultat de l'exécution ↓
blank
Dog
Jersey
Holstein
ApplicationContext
Il n'y a pas de servlet Java ou de framework Spring dans django qui correspond à un contexte d'application plus large que la portée de la session. Utilisez-vous django?
Il n'y a pas de pause étiquetée en python à utiliser lorsque vous voulez sortir d'une double boucle en java. Je ne l'utilise pas beaucoup en java, donc ça va.
python est valide dans la fonction. java est valide dans le bloc.
C'est gênant pour une boutique java ...
Notez que si vous l'écrivez comme une variable d'instance java, cela signifiera une variable de classe en python! Quand j'ai fait une erreur au début, j'ai été surpris que le mouvement soit inattendu.
class Cow:
type = 'Holstein' #Variable de classe
def __init__(self, name):
self.name = name #Variable d'instance
def walk(self):
print(self.name + 'Marcher')
hanako = Cow('Hanako')
hanako.walk()
↓ Résultat de l'exécution ↓
Promenades Hanako
Recommended Posts