Grammaire de base du système Python3 (comment utiliser les fonctions, la fermeture, la fonction lambda)

Aperçu

Vous étudierez la grammaire de base de Python 3 en vous référant à «Introduction à Python 3» par O'Reilly Japan. J'espère que cela sera utile pour ceux qui veulent étudier Python de la même manière.

Utilisation de base des fonctions

Définition des fonctions

>>> def print_sum(num1, num2):
...     print(num1 + num2)

Appel de fonction

>>> print_sum(10, 20)
30

Les arguments utilisés dans la définition de la fonction sont des arguments formels (paramètre), L'argument passé au moment de l'appel est appelé argument réel (argument).

Argument de position

Un argument qui copie une valeur dans un argument formel à la position correspondante dans l'ordre depuis le début est appelé "argument de position".

>>> def print_args(arg1, arg2, arg3):
...     print('arg1:', arg1, 'arg2:', arg2, 'arg3:', arg3)
...
>>> print_args(1111, True, 'Python')
arg1: 1111 arg2: True arg3: Python

Argument de mot-clé

Vous pouvez également spécifier l'argument réel en spécifiant le nom de l'argument formel, auquel cas il sera traité comme un "argument mot-clé".

>>> def print_args(arg1, arg2, arg3):
...     print('arg1:', arg1, 'arg2:', arg2, 'arg3:', arg3)
...
>>> print_args(arg2='two', arg1='one', arg3='three')
arg1: one arg2: two arg3: three

Spécification de la valeur d'argument par défaut

Vous pouvez également spécifier une valeur par défaut pour l'argument formel. La valeur par défaut est utilisée si l'appelant ne transmet pas l'argument réel correspondant.

>>> def print_args(arg1, arg2, arg3='default value'):
...     print('arg1:', arg1, 'arg2:', arg2, 'arg3:', arg3)
...
>>> #Si la valeur par défaut est utilisée (aucun argument réel n'est passé)
>>> print_args('one', 'two')
arg1: one arg2: two arg3: default value
>>>
>>> #Si la valeur par défaut n'est pas utilisée (en passant l'argument réel)
>>> print_args('one', 'two', 'three')
arg1: one arg2: two arg3: three

Tapling d'arguments positionnels avec *

Si * est utilisé dans le cadre de l'argument formel lors de la définition d'une fonction, un nombre variable d'arguments positionnels est mis ensemble dans un taple.

>>> def print_args(*args):
...     print('args tuple:', args)
...
>>> #Spécifiez plusieurs arguments
>>> print_args('one', 'two', 'three')
args tuple: ('one', 'two', 'three')
>>>
>>> #Aucun argument
>>> print_args()
args tuple: ()

S'il existe un argument positionnel requis, l'utilisation suivante est également possible.

>>> def print_args(arg1, arg2, *args):
...     print('arg1:', arg1)
...     print('arg2:', arg2)
...     print('args:', args)
...
>>> print_args('one', 'two', 1, 10, 100)
arg1: one
arg2: two
args: (1, 10, 100)

Dictionnaire des arguments de mots clés par **

Si vous utilisez ** lors de la définition d'une fonction, vous pouvez définir des arguments de mot-clé collectivement dans un dictionnaire.

>>> def print_kwargs(**kwargs):
...     print('kwargs:', kwargs)
...
>>> print_kwargs(arg1='one', arg2='two', arg3='three')
kwargs: {'arg1': 'one', 'arg2': 'two', 'arg3': 'three'}

Définir la fonction comme argument

Vous pouvez traiter la fonction comme un argument de la fonction ou renvoyer la fonction comme valeur de retour de la fonction.

>>> def print_string():
...     print('print_string')
...
>>> def execute_func(arg_func):
...     arg_func()
...
>>> execute_func(print_string)
print_string

Fonction en fonction

Vous pouvez également définir une fonction à l'intérieur d'une fonction.

>>> def outer():
...     def inner():
...         print('inner function')
...     inner()
...
>>> outer()
inner function

fermeture

Il est également possible de faire fonctionner une fonction en fonction comme une fermeture et de générer dynamiquement une fonction.

>>> def todays_weather(arg1):
...     def return_weather():
...         return 'It’s ' +  arg1 + ' today.'
...     return return_weather
...
>>> day1 = todays_weather('sunny')
>>> day2 = todays_weather('cloudy')
>>>
>>> day1()
'It’s sunny today.'
>>> day2()
'It’s cloudy today.'

Fonction Lambda

Implémentation sans fonction lambda

>>> def return_sum(num1, num2):
...     return num1 + num2
...
>>> print('answer:', return_sum(10, 20))
answer: 30

Implémentation à l'aide de la fonction lambda

>>> return_sum = lambda num1, num2 :num1 + num2
>>> print('answer:', return_sum(10, 20))
answer: 30

Exemple d'utilisation de la fonction lambda en combinaison avec map ()

Lorsqu'il est combiné avec map (), les éléments itérables tels que la liste passée en argument, L'implémentation suivante qui le transmet à func et traite il est également possible. (* 1)

[Une addition]

https://docs.python.jp/3/library/functions.html#map

>>> help(map)
Help on class map in module builtins:

class map(object)
 |  map(func, *iterables) --> map object
 |
 |  Make an iterator that computes the function using arguments from
 |  each of the iterables.  Stops when the shortest iterable is exhausted.

Exemple d'implémentation

>>> num_list = list(range(1, 6))
>>> num_list
[1, 2, 3, 4, 5]
>>>
>>> list(map(lambda x: x**2, num_list))
[1, 4, 9, 16, 25]

Recommended Posts

Grammaire de base du système Python3 (comment utiliser les fonctions, la fermeture, la fonction lambda)
Comment utiliser Python lambda
Grammaire de base du système Python3 (dictionnaire)
[Python] Résumé de l'utilisation des fonctions de fractionnement et de jointure
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
[Python] Résumé de l'utilisation des pandas
[Python2.7] Résumé de l'utilisation d'unittest
Grammaire de base de la série Python3 (chaîne de caractères)
[Python] Comprendre comment utiliser les fonctions récursives
Résumé de l'utilisation de la liste Python
[Python2.7] Résumé de l'utilisation du sous-processus
Grammaire de base du système Python3 (notation incluse)
[Question] Comment utiliser plot_surface de python
Résumé de l'utilisation de MNIST avec Python
Résumé de l'étude de Python pour utiliser AWS Lambda
[Introduction à Python] Utilisation de base des expressions lambda
python3: Comment utiliser la bouteille (2)
J'ai essayé de résumer comment utiliser matplotlib de python
Comment utiliser Python Argparse
Comment utiliser Python Kivy ① ~ Bases du langage Kv ~
Python: comment utiliser pydub
[Python] Comment utiliser checkio
[Python] Comment utiliser input ()
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
Résumé de l'utilisation de pandas.DataFrame.loc
[Python] Comment utiliser la série Pandas
Comment utiliser les requêtes (bibliothèque Python)
Comment utiliser SQLite en Python
Résumé de l'utilisation de pyenv-virtualenv
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment utiliser l'API Python d'OpenPose
Comment utiliser ChemSpider en Python
Python: Comment utiliser pydub (lecture)
Comment utiliser PubChem avec Python
Comment utiliser la fonction zip de python
Résumé de l'utilisation de csvkit
[Python] Comment utiliser l'API Typetalk
Comment utiliser Python Kivy (référence) -J'ai traduit le langage Kivy de la référence API-
[Introduction à Python] Comment utiliser la classe en Python?
Comment installer et utiliser pandas_datareader [Python]
[python] Comment utiliser __command__, explication des fonctions
Comment calculer Utiliser% de la commande df
[Python] Comment utiliser import sys sys.argv
[Python] Organisation de l'utilisation des instructions
Mémorandum sur l'utilisation du python gremlin
Comment accéder à RDS depuis Lambda (python)
python: Comment utiliser les locals () et globals ()
Grammaire de base de la série Python3 (liste, tapple)
Comment utiliser __slots__ dans la classe Python
Jupyter Notebook Principes d'utilisation
Comment utiliser "deque" pour les données Python
Bases de PyTorch (1) -Comment utiliser Tensor-
Comment utiliser le zip Python et énumérer
[Route vers Python intermédiaire] Utiliser des expressions lambda
Comment utiliser les expressions régulières en Python
Comment utiliser le bloc-notes Jupyter [super basique]