Premiers pas avec Python pour les fonctions PHPer

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.

Définition des fonctions

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`.

Comment passer une valeur à une fonction - Partie 1

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')

Argument de longueur variable

Argument de longueur variable normal

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.

Gérer les arguments de mots-clés de longueur variable

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".

Gérez à la fois les arguments ordinaires et les arguments de mots-clés de longueur variable

Vous pouvez même les utiliser ensemble!

# coding=utf8

def func(*args, **kwargs):
	print(args)
	print(kwargs)

func('hoge')
func('hoge', piyo='piyo')

Comment passer une valeur à une fonction - Partie 2

Vous pouvez utiliser list (tupple) ou dictionary lorsque vous passez des valeurs à une fonction.

Passer des arguments sous forme de liste

# 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.

Passer des arguments dans un dictionnaire

# 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. ..

Ne spécifiez pas de liste / dictionnaire comme valeur par défaut de l'argument

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 **.

Résumé

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

Premiers pas avec Python pour les fonctions PHPer
Premiers pas avec Python pour les classes PHPer
1.1 Premiers pas avec Python
Premiers pas avec Python
Premiers pas avec Python
Premiers pas avec Python pour PHPer-Super Basics
Introduction aux fonctions Python
Premiers pas avec Python Django (1)
Premiers pas avec Python Django (4)
Premiers pas avec Python Django (3)
Introduction à Python Django (6)
Premiers pas avec Python Django (5)
[Français] Premiers pas avec Rust pour les programmeurs Python
Paramètres pour démarrer avec MongoDB avec python
Premiers pas avec Julia pour Pythonista
Premiers pas avec Python Bases de Python
Premiers pas avec Google App Engine pour Python et PHP
Premiers pas avec les algorithmes génétiques Python
Premiers pas avec Python 3.8 sous Windows
Premiers pas avec Python Web Scraping Practice
Premiers pas avec Python Web Scraping Practice
Premiers pas avec Dynamo de Python boto
Premiers pas avec Lisp pour Pythonista: Supplément
Django 1.11 a démarré avec Python3.6
Premiers pas avec Android!
Premiers pas avec apache2
Premiers pas avec Django 1
Introduction à l'optimisation
Premiers pas avec Numpy
Premiers pas avec Spark
Premiers pas avec Jython
Premiers pas avec Django 2
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
Démarrer avec Python avec 100 coups sur le traitement du langage
Premiers pas avec AWS IoT facilement en Python
Matériel à lire lors de la mise en route de Python
Traduire Premiers pas avec TensorFlow
Introduction à Tkinter 2: Button
Premiers pas avec Go Assembly
Premiers pas avec PKI avec Golang ―― 4
Commencez avec Python! ~ ② Grammaire ~
Commencez avec Python! ~ ① Construction de l'environnement ~
Lien pour commencer avec python
Introduction à Git (1) Stockage d'historique
Premiers pas avec Sphinx. Générer docstring avec Sphinx
Comment démarrer avec Python
Initiation aux mathématiques Démarrage avec la programmation Python Challenge Notes personnelles - Problème 1-1
Premiers pas avec Cisco Spark REST-API
a commencé python
Commençant par USD sur Windows
Démarrez avec Python avec Blender
Premiers pas avec CPU Steal Time
Premiers pas avec Heroku-Viewing Hello World en Python Django avec Raspberry PI 3
[FastAPI] Premiers pas avec FastAPI, un framework Web ASGI créé par Python
Extraction de mots-clés facile avec TermExtract pour Python
INSÉRER dans MySQL avec Python [Pour les débutants]