Tout d'abord, vérifiez tgray de et Lundström conseils.
Ensuite, certaines choses que vous voudrez peut-être savoir:
Python est dynamiquement typé, donc, à la différence de C#, vous ne serez pas
type de chèque mais un comportement. Vous pouvez google à propos de canard
la frappe. Il implique que vous n'avez pas à traiter avec la boxe et
unboxing.
Python est entièrement orienté objet, mais la syntaxe n'est pas
appliquer ce paradigme. Vous pouvez écrire sans l'aide de Python
le mot "classe".
La bibliothèque d'interface graphique en vedette avec Python ne peut pas comparer avec
De C#. Vérifier PyQt, GTK ou wxPython bibliothèques.
Python a beaucoup de concepts que vous ne pouvez pas être familier avec:
liste des compréhensions, des générateurs (le"rendement" n'existe pas en C#
mais n'est pas beaucoup utilisée), les décorateurs, les metaclasses, etc. Ne pas
ayez peur, vous pouvez programmer en Python sans eux. Ils
sont juste des outils intelligents n'est pas obligatoire.
Comme en C#, Python standard library est énorme. Toujours
regarder lorsque vous rencontrez un quelconque problème. Il est le plus
probablement que quelqu'un a déjà résolu.
Python utiliser la liaison TARDIVE et les étiquettes des variables. C'est beaucoup trop
début pour quelqu'un en commençant par la langue de s'inquiéter
à ce sujet, mais n'oubliez pas qu'un jour, vous rencontrerez un
comportement avec les variables qui SEMBLE illogique, et vous aurez
vérifier que. Pour le moment:
Rappelez-vous juste de ne jamais faire ce qui suit:
def myfunc(my_list=[]) :
# bla
Au lieu de cela:
def myfunc(my_list=()) :
my_list = list(my_list)
Et vous serez bon. Il y a une bonne raison à cela, mais
ce n'est pas le point :-)
Python est multi plate-forme, profiter de l'écriture sur Mac, et
fonctionner sur Linux, si vous le souhaitez.
Python n'est pas fourni avec un complexe IDE (vous l'avez d'INACTIVITÉ:-)).
Si vous êtes un Visual Studio addict, consultez la Clairière. C'est
pas aussi avancé que Visual Studio, mais c'est toujours un bon RAD.
Si vous souhaitez développer quelques applications web en Python,
rappelez-vous que Python n'est pas .NET. Vous devez ajouter un site web
cadre à elle si vous voulez comparer. J'aime Django.
Python n'a pas besoin d'un énorme IDE de travailler avec. SciTE,
Notepad++, INACTIF, Kate, gedit...
Léger éditeurs sont vraiment suffisant.
Python applique une indentation d'utiliser des espaces et de saut de ligne,
vous ne pouvez pas changer cela. Vous devriez éviter d'utiliser des onglets pour
l'indentation et de choisir des espaces à la place. L'équivalent de
vide bracelets {} est le mot "pass".
Python n'a pas d'appliquer privé de vars. Vous pouvez définir un
private var à l'aide de "__" (2 trait de soulignement) au début de
le var nom, mais c'est toujours insertions by-passables dans certains délicat
façons. Python généralement supposer programmeurs sont des adultes
qui savent ce qu'ils font et de communiquer.
Python utilise itération. Beaucoup. Beaucoup de beaucoup de. Et donc, la
module itertools est le meilleur ami.
Python n'a pas de délégués. Le délégué du module
pas ce que vous en pensez. Pour la programmation événementielle, utiliser un
GUI lib (ou code le patron de vous-même, ce n'est pas que
difficile).
Python est un interprète: vous pouvez tester presque tout,
vivre. Il doit toujours être en cours d'exécution à côté de votre texte
de l'éditeur. Python interpréteur basic n'est pas beaucoup, essayez de IPython
pour quelque chose de savoureux.
Python est autodocumented: utilisation docstrings dans votre propre code
et consulter d'autres de l'aide "help()" dans l'interpréteur python
Module de base :
- sys: manipuler les fonctionnalités du système
- os: définir les informations d'identification, de manipuler les chemins de fichiers, les renommer, les récursive fichier à pied, etc
- shutil: traitement des fichiers de commandes (telles que la suppression récursive)
- re: regexp
- urllib et urllib2: HTTPscripting comme le téléchargement, la post / get s'agit des requêtes, etc
- datetime: manipuler la date, l'heure ET la DURÉE
- fil de discussion: vous vous en doutez
- zlib: la compression
- pickle: la sérialisation
- xml: analyse / Rédaction XML avec SAX ou DOM
Il y a des centaines de modules. Profitez de.
Quelques exemples de façons de faire les choses en Python:
Boucles:
Python codeurs utilisent massivement l'équivalent de la boucle foreach C#
boucle, et le préfèrent à tous les autres :
De base itérations:
for item in collection:
print str(item)
"collection" peut être une chaîne de caractères, une liste, un tuple... Tout
itératif: tout objet de définir les .la méthode next (). Il y a
beaucoup de iterables en Python. E. g: typiquement, un langage Python
pour lire les fichiers:
for line in open("/path/to/file") :
print line
Un raccourci vers la boucle est appelée "liste de compréhension".
C'est une façon de créer un nouvel objet iterable en une seule ligne:
Création d'une liste filtrée avec la compréhension de liste:
my_list = [item for item in collection if condition]
La création d'une nouvelle liste, avec une compréhension de liste:
my_list = [int(item) * 3 for item in collection]
La création d'un nouveau générateur avec une compréhension de liste:
my_list = (int(item) * 3 for item in collection)
Même que ci-dessus, mais les valeurs sont générées à la volée
lors de la première itération, puis perdu. Plus d'infos à ce sujet ici.
Ordinaire pour la boucle
Si vous souhaitez exprimer une habitude pour la boucle, vous pouvez utiliser le
xrange() fonction. for (int i = 0; i < 5; i++) devient:
for i in xrange(0,5) :
faire tout en équivalent
Il n'y a pas de "Faire Tout" en Python. Je n'ai jamais manqué, mais si
vous devez utiliser cette logique, procédez de la manière suivante:
while True : # yes, this is an infinite loop. Crazy, hu ?
# do your stuff
if condition :
break
Déballage
La permutation des variables:
a, b = b, a
Plusieurs assignations:
Le ci-dessus ne sont que le résultat de ce que nous appelons le "déballage" (ici
appliqué à un n-uplet). Une façon simple d'expliquer c'est que vous
pouvez attribuer à chaque valeur de n'importe quelle séquence directement sur un pied d'égalité
nombre des variables, en une seule ligne:
animal1, animal2, animal3, animal4 = ["cow", "dog", "bird", "fish"]
Cela a beaucoup de conséquences. Lors de l'itération sur une
tableau multidimensionnel, vous devez normalement obtenir chaque sous-séquence
un par un, puis de l'utiliser, de l'e.g :
agenda = [("steve", "jobs"), ("linus", "torvald"), ("bill", "gates"),("jon", "skeet")]
for person in agenda:
print person[0], person[1]
Mais avec le déballage, vous pouvez affecter directement les valeurs de
les variables ainsi:
agenda = [("steve", "jobs"), ("linus", "torvald"), ("bill", "gates"),("jon", "skeet")]
for name, lastname in agenda:
print name, lastname
Et c'est pourquoi, si vous voulez obtenir un indice lors de l'itération,
Python codeurs utilisation suivantes idiomes (enumerate() est une
fonction standard):
for index, value in enumerate(sequence) :
print index, value
Déballage dans les appels de fonctions
C'est une utilisation avancée, vous pouvez passer si cela vous dérange.
Vous pouvez décompresser en utilisant le signe "*" pour utiliser une séquence
directement dans un appel de fonction. E. g:
>>> foo(var1, var1, var3) :
print var1, var2
print var3
>>> seq = (3.14, 42, "yeah")
>>> foo(*seq)
3.14 42
yeah
Il est même plus que cela. Vous pouvez décompresser un dictionnaire comme
les variables nommées, et d'écrire des prototypes de fonction avec *
,
**
d'accepter un nombre arbitraire d'arguments. Mais il n'est pas
utilisé assez pour mériter de faire ce post encore plus longtemps :-).
Chaîne de formatage:
print "This is a %s on %s about %s" % ("post", "stackoverflow", "python")
print "This is a %(subject)s on %(place)s about %(about)s" % {"subject" : "post", "place" : "stackoverflow", "about" : "python"}
Le découpage d'un objet iterable:
Vous pouvez obtenir une partie d'un objet iterable à l'aide d'un très concis de la syntaxe:
print "blebla"[2:4] # print "eb"
last = string[:-1] # getting last element
even = (0,1,2,3,4,5,6,7,8,9)[::2] # getting evens only (third argument is a step)
reversed = string[::-1] # reversing a string
Vérifications logiques:
Vous pouvez vérifier la façon dont vous le faire en C#, mais il y a des "Pythonic"
des moyens (plus court, plus clair :-)):
if 1 in (1, 2, 3, 4) : # check en element is in a sequence
if var : # check is var is true. Var == false if it's False, 0, (), [], {} or None
if not var : # contrary of above
if thing is var: # check if "thing" and "var" label the same content.
if thing is None : # we use that one because None means nothing in Python (almost null)
Combo (impression sur une seule ligne tous les mots contenant un "o" en majuscule ):
sentence = "It's a good day to write some code"
print " ".join([word.upper() for word in sentence.split() if "o" in word])
Sortie: "BON CODE"
Plus facile de demander pardon que demander la permission
Python codeurs n'est généralement pas le vérifier si quelque chose est possible.
Ils sont un peu comme Chuck Norris. Ils le font. Ensuite, prendre le
exception à la règle. Généralement, vous n'avez pas de vérifier si un fichier existe, vous
essayez de l'ouvrir, et de revenir si il échoue:
try :
f = open(file)
except IOerror :
print "no file here !"
Bien sûr Chuck Norris n'utilise jamais sauf depuis qu'il n'échoue jamais.
La clause else
"D'autre" est un monde de nombreuses utilisations en Python. Vous trouverez
"d'autre" après "si", mais après "sauf" et "pour".
for stuff in bunch :
# do thing
else :
# this always happens unless you hit "break" in the loop
Cela fonctionne pour la boucle "while" trop, même si nous n'utilisons pas cette
boucle d'autant.
try :
# a crazy stuff
except ToCrazyError :
# this happens if the crazy stuff raises a ToCrazyError Exception
else :
# this will happen if there is no error so you can put only one line after the "try" clause
finally :
# the same as in C#
Si vous êtes curieux, voici un tas de pointe rapide et
sale (mais agréable) les fragments Python.