Ceci est une continuation des précédents Super Basics. Cette fois, je vais résumer les différences et les points à noter sur la fonction.
Comme je l'ai expliqué dans Super Basics, c'est une critique.
Tout d'abord, le code PHP.
<?php
function func() {
echo 'hoge';
}
func();
C'est le code Python.
# coding=utf8
def func(): #Dernier: (côlon)N'oubliez pas!
print('hoge')
func()
PHP utilise function
, mais Python utilise def
.
Python n'utilise pas {}
pour représenter les portées, mais utilise ʻindent`.
Les bases de PHP et Python ne sont pas si différentes. Cependant, les «fonctions» de Python ont quelque chose appelé «arguments de mot-clé». Prenons un exemple.
Lorsque vous utilisez PHP, vous pouvez rencontrer une fonction
qui a un grand nombre d'arguments qui ont des
valeurs par défaut.
Ensuite, si vous souhaitez définir uniquement le dernier argument sur une valeur autre que la valeur par défaut, vous devez écrire comme suit.
<?php
function func($hoge='hoge', $piyo='piyo', $foo='foo', $bar='bar') {
echo $hoge . PHP_EOL;
echo $piyo . PHP_EOL;
echo $foo . PHP_EOL;
echo $bar . PHP_EOL;
}
//Si vous souhaitez définir la 4ème valeur sur autre chose que la valeur par défaut, vous devez également écrire les 1er à 3ème éléments.
func('hoge', 'piyo', 'foo', 'fizz');
L'argument mot-clé est utile dans de tels cas! Seul l'argument spécifié peut être passé en écrivant d'une manière spéciale que PHP n'a pas.
# coding=utf8
def func(hoge='hoge', piyo='piyo', foo='foo', bar='bar'):
print(hoge)
print(piyo)
print(foo)
print(bar)
#Vous ne pouvez passer que l'endroit spécifié!
func(bar='fizz')
Lors de l'implémentation d'une fonction avec des arguments de longueur variable, PHP ressemble à ceci:
<?php
function func() {
$args = func_get_args();
var_dump($args);
}
func('hoge');
func('hoge', 'piyo');
Exprimer cela en Python ressemble à ceci!
# coding=utf8
def func(*args):
print(args)
func('hoge')
func('hoge', 'piyo')
Ajoutez simplement «*» au début du nom de l'argument. Le nom d'argument «args» n'est pas fixe et peut être n'importe quel nom. La «variable args» peut être traitée comme un «tableau immuable (taple)». C'est très simple.
Vous pouvez également recevoir l'argument mot-clé qui est sorti plus tôt avec une longueur variable.
# coding=utf8
def func(**kwargs):
print(kwargs)
func(hoge='hoge')
func(hoge='hoge', piyo='piyo')
Pour argument mot-clé
, ajoutez simplement **
au début du nom de l'argument.
Dans ce cas, il peut être traité comme un "dictionnaire de paires de noms d'arguments et de valeurs" au lieu de "tapple".
Vous pouvez même les utiliser ensemble!
# coding=utf8
def func(*args, **kwargs):
print(args)
print(kwargs)
func('hoge')
func('hoge', piyo='piyo')
Vous pouvez utiliser list (tupple)
ou dictionary
lorsque vous passez des valeurs à une fonction.
# coding=utf8
def func(hoge, piyo):
print(hoge)
print(piyo)
args = ['foo', 'bar']
#L'ordre des arguments correspond à l'ordre de la liste.
func(*args)
C'est similaire à l'argument de longueur variable.
En ajoutant *
au nom de la variable dans laquelle la liste
est stockée et en la passant à la fonction, vous pouvez gérer l'élément liste
comme argument.
# coding=utf8
def func(hoge, piyo):
print(hoge)
print(piyo)
kwargs = {
'hoge': 'foo',
'piyo': 'bar',
}
func(**kwargs)
Similaire à la méthode list
, si vous ajoutez **
au nom de la variable qui stocke le dictionnaire
et que vous le transmettez à la fonction, la valeur sera assignée à l'argument correspondant à la clé (indice)
. Aller.
Cependant, veuillez noter que si vous écrivez un nom d'argument qui n'existe pas dans la clé (indice)
, une erreur se produira. ..
Je vais vous présenter la partie à laquelle j'étais un peu accro. Regardez d'abord le code PHP.
<?php
function func($hoge=array('foo')) {
#dans le tableau hoge'bar'Ajout de l'élément.
$hoge[] = 'bar';
var_dump($hoge);
}
func();
func();
J'ai appelé la fonction qui génère $ hoge = array ('foo')
en ajoutant `` bar '' deux fois.
Je pense que le résultat de l'exécution de chaque fonction sera le même.
Quand ceci est écrit en Python, cela ressemble à ce qui suit.
# coding=utf8
def func(hoge=['foo']):
#sur la liste hoge'bar'Ajout de l'élément.
hoge.append('bar')
print(hoge)
func()
func()
En fait, ce code Python ne fonctionne pas comme prévu **! !! !! !! !! ** ** Ceux qui les ont effectivement exécutés et comparés devraient avoir confirmé que les résultats d'exécution sont différents. Je laisserai l'explication détaillée à autres, mais ici ** N'utilisez pas de listes et de dictionnaires pour les valeurs par défaut des arguments! N'oubliez pas **.
Les fonctions Python sont très flexibles. En particulier, l'argument du mot-clé est puissant, alors souvenez-vous-en. Ensuite, Explication des classes!
Recommended Posts