от Мухаммад Каримов

Опубликовано Вс, 09 декабря 2018 г.

Введение

Я некоторое время программировал на Python и был знаком с различиями между компилируемыми и интерпретируемыми языками.

Однако недавно я изучил многие функции Python, которые принципиально отличают этот язык от других.

Пример

Вот простая известная функция. `привет`. Мы можем называть его так же, как и в других языках программирования.

def hello(name="World"):
    s = f"Hello {name}!" 
    print(s)
hello("Mukhammad")             # Hello Mukhammad! 
hello()                        # Hello World!

И больше

Но это нечто большее. Функции — это первоклассные объекты в Python. Мне потребовалось довольно много времени, чтобы по-настоящему понять, что это значит. К чему это относится:

Мы можем присвоить функцию переменной и вызвать ее.

print(hello)                    # <function hello at 0x10f56fe18> 
hello2 = hello 
print(hello2)                   # <function hello at 0x10f56fe18> 
hello2 is hello                 # True 
hello2()                        # Hello World!

Мы можем передать функцию в качестве аргумента другой функции.

def stars(func): 
    print("****", func("Jimmy"), "****")
stars(hello)                    # **** Hello Jimmy! ****

Опять же, функции — это объекты, о которых они знают больше, чем мы думаем:

print(hello.__name__)                    # hello 
print(hello.__module__)                  # __main__  
print(hello.__defaults__)                # ('World',) 
print(hello.__dict__)                    # {}
print(hello.__code__)
# <code object hello at 0x10d140540, file "hello.py", line 1>
print(hello.__code__.co_code) 
# b'd\x01|\x00\x9b\x00d\x02\x9d\x03S\x00'
print(hello.__code__.co_nlocals)         # 1 print(hello.__code__.co_varnames)        # ('name',)

и так далее. В официальной документации есть глава Модель данных, чтобы все объяснить.

Можем пойти дальше и осмотреть объекты:

from inspect import getsource, getfile, signature
print(getsource(hello)) 
# def hello(name="World"):\n return f"Hello {name}!"\n
print(getfile(hello))                    # hello.py 
print(signature(hello))                  # (name='World')

Вывод

Python — это мощный, динамичный и удобный для изучения язык. Он имеет уникальные функции, которые стоит освоить. Они сделали язык отличным от современных. Для разработчиков знание их делает их экспертами, поэтому мы можем создавать потрясающие вещи на их основе.

Удачного питона!

Первоначально опубликовано на www.karimoff.me.