πŸ” Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python Jupiter?

Для просмотра Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Jupyter Notebook Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Python inspect.signature().

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ использованиС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

# Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ
import inspect

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ
def my_function(arg1, arg2, arg3):
    pass

# ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сигнатуру Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ inspect.signature()
signature = inspect.signature(my_function)

# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ
for param in signature.parameters.values():
    print(param.name)

# Π’Ρ‹Π²ΠΎΠ΄:
# arg1
# arg2
# arg3

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ inspect, опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ my_function с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ arg1, arg2 ΠΈ arg3. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ inspect.signature() для получСния сигнатуры Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΈ послС этого ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ этой сигнатуры, выводя ΠΈΡ… ΠΈΠΌΠ΅Π½Π°.

НадСюсь, это ΠΏΠΎΠΌΠΎΠ³Π»ΠΎ! Если Ρƒ вас Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ вопросы, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python Jupiter?

Python Jupiter (Ρ€Π°Π½Π΅Π΅ извСстСн ΠΊΠ°ΠΊ IPython Jupiter) - это интСрактивная срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ экспСримСнтов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с языком программирования Python. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python Jupiter, Π΅ΡΡ‚ΡŒ нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ.

1. ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ inspect.signature()

ΠœΠΎΠ΄ΡƒΠ»ΡŒ inspect прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ signature(), которая позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сигнатуру (список Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ²) Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

import inspect

def my_function(param1, param2, *args, **kwargs):
    pass

signature = inspect.signature(my_function)
parameters = signature.parameters

for name, parameter in parameters.items():
    print(name, parameter)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ my_function() с нСсколькими Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ signature() ΠΈΠ· модуля inspect, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сигнатуру Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ имя ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅.

2. ИспользованиС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° __annotations__

Π’ Python Π΅ΡΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __annotations__, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

def my_function(param1: int, param2: str) -> None:
    pass

annotations = my_function.__annotations__

for name, annotation in annotations.items():
    print(name, annotation)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ my_function() с аннотациями Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __annotations__ для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ°Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρƒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π΅Π³ΠΎ имя ΠΈ Ρ‚ΠΈΠΏ.

3. ИспользованиС help() Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ help(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ справку ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ…. ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

def my_function(param1, param2):
    """
    Ѐункция, которая ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.
    :param param1: ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.
    :param param2: Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€.
    """
    pass

help(my_function)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ my_function() с коммСнтариями ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ help(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ справку ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΏΡ€Π°Π²ΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… ΠΈ ΠΈΡ… описаниях.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Python Jupiter Π΅ΡΡ‚ΡŒ нСсколько способов просмотра Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ inspect.signature() для получСния сигнатуры Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ __annotations__ для получСния Ρ‚ΠΈΠΏΠΎΠ² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ help(), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ справку ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Python для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Π°Π½Π°Π»ΠΈΡ‚ΠΈΠΊΠΎΠ² | Π£Ρ€ΠΎΠΊ 1 | Jupyter Notebook, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python

Python Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, области видимости, Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, return

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Python Π² Anaconda: Π»ΡƒΡ‡ΡˆΠΈΠ΅ способы ΠΈ совСты для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ обновлСния

Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ Backend Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π° Python?

Как Π½Π°ΠΉΡ‚ΠΈ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅: простой ΠΈ эффСктивный способ

πŸ” Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Python Jupiter?

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python: шаг Π·Π° шагом руководство

Как Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ Π³Ρ€Π°Ρ„ python: ΠΏΠΎΠ»Π½ΠΎΠ΅ руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

Как ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ POST запрос Π² Python: шаг Π·Π° шагом руководство