Π Π°Π·Π½ΠΎΠ΅

Import math: Python | ΠœΠΎΠ΄ΡƒΠ»ΡŒ math

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Python | ΠœΠΎΠ΄ΡƒΠ»ΡŒ math

ΠœΠΎΠ΄ΡƒΠ»ΡŒ math

ПослСднСС обновлСниС: 02.05.2017

ВстроСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ math Π² Python прСдоставляСт Π½Π°Π±ΠΎΡ€ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для выполнСния матСматичСских, тригономСтричСских ΠΈ
логарифмичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. НСкоторыС ΠΈΠ· основных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ модуля:

  • pow(num, power): Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ числа num Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ power

  • sqrt(num): ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ числа num

  • ceil(num): ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ числа Π΄ΠΎ блиТайшСго наибольшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ

  • floor(num): ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ числа Π΄ΠΎ блиТайшСго наимСньшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ

  • factorial(num): Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа

  • degrees(rad): ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ· Ρ€Π°Π΄ΠΈΠ°Π½ Π² градусы

  • radians(grad): ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ· градусов Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹

  • cos(rad): косинус ΡƒΠ³Π»Π° Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…

  • sin(rad): синус ΡƒΠ³Π»Π° Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…

  • tan(rad): тангСнс ΡƒΠ³Π»Π° Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…

  • acos(rad): арккосинус ΡƒΠ³Π»Π° Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…

  • asin(rad): арксинус ΡƒΠ³Π»Π° Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…

  • atan(rad): арктангСнс ΡƒΠ³Π»Π° Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…

  • log(n, base): Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ числа n ΠΏΠΎ основанию base

  • log10(n): дСсятичный Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ числа n

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ примСнСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:


import math

# Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ числа 2 Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ 3
n1 = math.pow(2, 3)
print(n1)  # 8

# Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ
n2 = 2**3
print(n2)

# Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚
print(math.sqrt(9))  # 3

# блиТайшСС наибольшСС Ρ†Π΅Π»ΠΎΠ΅ число
print(math.ceil(4.56))  # 5

# блиТайшСС наимСньшСС Ρ†Π΅Π»ΠΎΠ΅ число
print(math.floor(4.56))  # 4

# ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ· Ρ€Π°Π΄ΠΈΠ°Π½ Π² градусы
print(math.degrees(3.14159))  # 180

# ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ ΠΈΠ· градусов Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹
print(math.radians(180))   # 3.1415.....
# косинус
print(math.cos(math.radians(60)))  # 0.5
# cинус
print(math.sin(math.radians(90)))   # 1.0
# тангСнс
print(math.tan(math.radians(0)))    # 0.0

print(math.log(8,2))    # 3.0
print(math.log10(100))    # 2.0

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ math прСдоставляСт ряд встроСнных констант, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ PI ΠΈ E:


import math
radius = 30
# ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΊΡ€ΡƒΠ³Π° с радиусом 30
area = math.pi * math.pow(radius, 2)
print(area)

# Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ числа 10
number = math.log(10, math.e)
print(number)

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ матСматичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π² Python

Π‘ΠΎΠΈΡ‚Π΅ΡΡŒ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ? НС Ρ€Π°Π· ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΊΠΈ ΠΏΠΎ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ? НС Π²Ρ‹ ΠΎΠ΄Π½ΠΈ. БСгодня Π² Python ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ всС матСматичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим способы ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Python.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

Python являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ языком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² процСссС Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ создания сайта, Ρ€Π°Π±ΠΎΡ‚Π΅ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹ΠΌΠΈ вычислСниями. Π’ Π΄Π°Π½Π½ΠΎΠΌ руководствС Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно, ΠΊΠ°ΠΊ матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python повлияли Π½Π° Π½Π°ΡƒΡ‡Π½Ρ‹Π΅ вычислСния.

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ самыС популярныС матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python.

Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Python стал ΠΎΡ‡Π΅Π½ΡŒ популярным ΠΈΠ·-Π·Π° обилия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. КаТдая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Β ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ всСх ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π²ΠΎ врСмя процСсса. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Python ΠΈΠ·-Π·Π° Π΅Π³ΠΎ внимания ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΡƒ Π² сочСтании с ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒΡŽ. Для матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Python Π΅ΡΡ‚ΡŒ сразу нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Math Π² Python

Math являСтся самым Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ матСматичСским ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Python. ΠžΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ основныС матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ сумма, экспонСнта, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со слоТными матСматичСскими опСрациями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. РасчСты, выполняСмыС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math, Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, эта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для выполнСния основных матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ экспонСнту ΠΎΡ‚ 3, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ exp() Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

from math import exp
exp(3) # ВычислСниС экспонСнты



from math import exp

exp(3) # ВычислСниС экспонСнты

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Numpy Π² Python

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Numpy Π² Python ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ. НаиболСС Π²Π°ΠΆΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Numpy, которая ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, являСтся ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ вычислСния Π½Π° молниСносной скорости. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ благодаря C-API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ быстро ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ скалярноС ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ† ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

import numpy as np


mat1 = np.array([[1,2],[3,4]])
mat2 = np.array([[5,6],[7,8]])
np.dot(mat1,mat2)



import numpy as np

Β 

Β 

mat1 = np.array([[1,2],[3,4]])

mat2 = np.array([[5,6],[7,8]])

np.dot(mat1,mat2)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

array([[19, 22],
[43, 50]])



array([[19, 22],

Β Β Β Β Β Β  [43, 50]])

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° SciPy Π² Python

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° math прСдоставляСтся Python Π½Π°ΡƒΡ‡Π½Ρ‹Π΅ инструмСнты. Π’ Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ для матСматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹, ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π€ΡƒΡ€ΡŒΠ΅ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠœΠΎΠ΄ΡƒΠ»ΡŒ numpy прСдоставляСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ… массива Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ SciPy.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ linalg(), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ SciPy, для вычислСния Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π½Ρ‚Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

from scipy import linalg


import numpy as np
mat1 = np.array([[1,2],[3,4]]) #DataFlair
linalg.det(mat1) # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: -2.0



from scipy import linalg

Β 

Β 

import numpy as np

mat1 = np.array([[1,2],[3,4]]) #DataFlair

linalg.det(mat1) # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: -2.0

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Statsmodel Π² Python

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Statsmodel ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ статистичСскиС вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ статистику, логичСский Π²Ρ‹Π²ΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ†Π΅Π½ΠΊΡƒ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… статистичСских ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π­Ρ‚ΠΎ способствуСт эффСктивному статистичСскому исслСдованию Π΄Π°Π½Π½Ρ‹Ρ….

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Statsmodel Π² Python.

import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf


input_data = sm.datasets.get_rdataset(«Guerry», «HistData»).data

res = smf.ols(‘Lottery ~ Literacy + np.log(Pop1831)’, data = input_data).fit()
print(res.summary())



import numpy as np

import statsmodels.api as sm

import statsmodels.formula.api as smf

Β 

Β 

input_data = sm.datasets.get_rdataset(«Guerry», «HistData»).data

Β 

res = smf.ols(‘Lottery ~ Literacy + np.log(Pop1831)’, data = input_data).fit()

print(res.summary())

Scikit-learn Π² Python

МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ матСматичСским аспСктом Π½Π°ΡƒΠΊΠΈ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ инструмСнты машинного обучСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Для этой Ρ†Π΅Π»ΠΈ Scikit-learn ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классификации, рСгрСссии ΠΈ кластСризации.

from sklearn import linear_model


regress = linear_model.LinearRegression()

regress.fit([[0,0],[1,1],[2,2]], [0,1,2])
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

print(regress.coef_) # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: array([0.5, 0.5])



from sklearn import linear_model

Β 

Β 

regress = linear_model.LinearRegression()

Β 

regress.fit([[0,0],[1,1],[2,2]], [0,1,2])

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

Β 

print(regress.coef_) # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: array([0.5, 0.5])

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

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Π²Π°ΠΆΠ½Ρ‹Π΅ матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python. Π‘Ρ‹Π»ΠΈ рассмотрСны NumPy, SciPy, statsmodels, Π° Ρ‚Π°ΠΊΠΆΠ΅ scikit-learn. Π’ Python Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ находятся Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НадССмся, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ руководства Π²Π°ΠΌ пригодятся Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Автоматизация ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² Π² Python / Π₯Π°Π±Ρ€

Π’Π°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π°ΠΆ с 2012 Π³ΠΎΠ΄Π° я Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽ open source Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΊΡƒ, являясь СдинствСнным программистом. На Python само собой. Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΊΠ° β€” ΡˆΡ‚ΡƒΠΊΠ° Π½Π΅ самая простая, сСйчас Π² основной части ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° большС 1000 ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Π±ΠΎΠ»Π΅Π΅ 120 000 строк ΠΊΠΎΠ΄Π° Π½Π° Python. Π’ суммС ΠΆΠ΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ-спутниками Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π·Π° Π² ΠΏΠΎΠ»Ρ‚ΠΎΡ€Π° большС.

Π’ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΌΠ½Π΅ Π½Π°Π΄ΠΎΠ΅Π»ΠΎ Π²ΠΎΠ·ΠΈΡ‚ΡŒΡΡ с этаТами ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° ΠΈ я Ρ€Π΅ΡˆΠΈΠ» Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Ρ€Π°Π· ΠΈ навсСгда. Π’Π°ΠΊ Ρ€ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° smart_imports (github, pypi).

ИдСя достаточно проста. Π›ΡŽΠ±ΠΎΠΉ слоТный ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ собствСнноС соглашСниС ΠΎΠ± ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠΈ всСго. Если это соглашСниС ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² Π±ΠΎΠ»Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‚ΠΎ Π»ΡŽΠ±ΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ автоматичСски ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ассоциированной с Π½Π΅ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

НапримСр, Π½Π΅ Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ import math Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ math.pi β€” ΠΌΡ‹ ΠΈ Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС math β€” ΠΌΠΎΠ΄ΡƒΠ»ΡŒ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Smart imports ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ Python >= 3.5 Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚Π° тСстами, coverage > 95%. Π‘Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ ΡƒΠΆΠ΅ Π³ΠΎΠ΄.

Π—Π° подробностями ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°ΡŽ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚.

Как ΠΎΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ†Π΅Π»ΠΎΠΌ

Π˜Ρ‚Π°ΠΊ, ΠΊΠΎΠ΄ ΠΈΠ· Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. Π’ΠΎ врСмя Π²Ρ‹Π·ΠΎΠ²Π° smart_imports.all() Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° строит AST модуля, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сдСлан Π²Ρ‹Π·ΠΎΠ²;
  2. Находим Π½Π΅ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅;
  3. Имя ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ прогоняСм Ρ‡Π΅Ρ€Π΅Π· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»ΡŒ (ΠΈΠ»ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ модуля). Если ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ»ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ.
  4. НайдСнныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² глобальноС пространство ΠΈΠΌΡ‘Π½ (Π»ΠΈΠ±ΠΎ Ρ‚ΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ этих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ).

НСинициализированныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ищутся Π²ΠΎ всСх мСстах ΠΊΠΎΠ΄Π°, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π½ΠΎΠ²Ρ‹ΠΉ синтаксис.

АвтоматичСскоС ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚Π΅Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ явно Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ smart_imoprts.all(). ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, использованиС smart imports Π½Π΅ Π·Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹. Π­Ρ‚ΠΎ позволяСт Π²Π½Π΅Π΄Ρ€ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ постСпСнно, Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ слоТныС цикличСскиС зависимости.

Π”ΠΎΡ‚ΠΎΡˆΠ»ΠΈΠ²Ρ‹ΠΉ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŒ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚, Ρ‡Ρ‚ΠΎ AST модуля конструируСтся Π΄Π²Π° Ρ€Π°Π·Π°:

  • ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· Π΅Π³ΠΎ строит CPython Π²ΠΎ врСмя ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° модуля;
  • Π²Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· Π΅Π³ΠΎ строит smart_imports Π²ΠΎ врСмя Π²Ρ‹Π·ΠΎΠ²Π° smart_imports.all().

AST Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· (для этого Π½Π°Π΄ΠΎ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒΡΡ Π² процСсс ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ import hooks Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² PEP-0302, Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ замСдляСт ΠΈΠΌΠΏΠΎΡ€Ρ‚.Как Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ?Бравнивая ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π²ΡƒΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ (с Ρ…ΡƒΠΊΠ°ΠΌΠΈ ΠΈ Π±Π΅Π·), я ΠΏΡ€ΠΈΡˆΡ‘Π» ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ модуля CPython строит AST Π² своих Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… (C-ΡˆΠ½Ρ‹Ρ…) структурах Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΡ ΠΈΡ… Π² структуры Π΄Π°Π½Π½Ρ‹Ρ… Python Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π΄ΠΎΡ€ΠΎΠΆΠ΅, Ρ‡Π΅ΠΌ построСниС Π΄Π΅Ρ€Π΅Π²Π° ΠΏΠΎ исходникам с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля ast.

Π‘Π°ΠΌΠΎ собой, AST ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ модуля строится ΠΈ анализируСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π· Π·Π° запуск.

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. По-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

  1. По Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ совпадСнию ΠΈΠΌΠ΅Π½ΠΈ ΠΈΡ‰Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ рядом с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ (Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅).
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ:
    • ΠΏΠΎ Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ совпадСнию ΠΈΠΌΠ΅Π½ΠΈ для ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня;
    • для Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ провСряСт составныС ΠΈΠΌΠ΅Π½Π° с Π·Π°ΠΌΠ΅Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° ΠΏΠΎΠ΄Ρ‡Ρ‘Ρ€ΠΊΠΈΠ²Π°Π½ΠΈΠ΅. НапримСр os.path Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ os_path.
  3. По Ρ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ совпадСнию ΠΈΠΌΠ΅Π½ΠΈ ΠΈΡ‰Π΅Ρ‚ установлСнныС сторонниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹. НапримСр общСизвСстный ΠΏΠ°ΠΊΠ΅Ρ‚ requests.

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ

Π Π°Π±ΠΎΡ‚Π° smart imports Π½Π΅ сказываСтся Π½Π° показатСлях Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ врСмя Π΅Ρ‘ запуска.

Из-Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ построСния AST врСмя ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ запуска увСличиваСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² 1.5-2 Ρ€Π°Π·Π°. Для ΠΌΠ°Π»Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² это нСсущСствСнно. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ… ΠΆΠ΅ врСмя запуска страдаСт скорСС ΠΎΡ‚ структуры зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ модулями, Ρ‡Π΅ΠΌ ΠΎΡ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ модуля.

Когда Ссли smart imports станут популярными, ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡˆΡƒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с AST Π½Π° C β€” это Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Ρ‚Π½ΠΎ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΈΠ·Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈ запускС.

Для ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ AST ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅. Π‘Π°ΠΌΠΎ собой, кэш инвалидируСтся ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ исходников.

На врСмя запуска влияСт ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΏΡ€Π°Π²ΠΈΠ» поиска ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΈ ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Python для поиска ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π˜ΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ эти расходы ΠΌΠΎΠΆΠ½ΠΎ явно ΡƒΠΊΠ°Π·Π°Π² соотвСтствиС ΠΈΠΌΡ‘Π½ ΠΈ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€Π°Π²ΠΈΠ»Π° Β«ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°Β» (см. Π΄Π°Π»Π΅Π΅).

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

ДСфолтная конфигурация Π±Ρ‹Π»Π° описана Ρ€Π°Π½Π΅Π΅. Π•Ρ‘ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Π² Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ….Π”Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³

{
    "cache_dir": null,
    "rules": [{"type": "rule_local_modules"},
              {"type": "rule_stdlib"},
              {"type": "rule_predefined_names"},
              {"type": "rule_global_modules"}]
}

ΠŸΡ€ΠΈ нСобходимости, Π±ΠΎΠ»Π΅Π΅ слоТный ΠΊΠΎΠ½Ρ„ΠΈΠ³ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ слоТного ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° (ΠΈΠ· Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΊΠΈ).

Π’ΠΎ врСмя Π²Ρ‹Π·ΠΎΠ²Π° smart_import.all() Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° опрСдСляСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ модуля Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» smart_imports.json ΠΏΠΎ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° ΠΊ ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌΡƒ. Если Ρ‚Π°ΠΊΠΎΠΉ Ρ„Π°ΠΉΠ» Π½Π°ΠΉΠ΄Π΅Π½, ΠΎΠ½ считаСтся ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ модуля.

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² (размСстив ΠΈΡ… Π² Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ…).

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСйчас Π½Π΅ Ρ‚Π°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ:

{
    // ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ для хранСния кэша AST.
    // Если Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ ΠΈΠ»ΠΈ null β€” кэш Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.
    "cache_dir": null|"string",

    // Бписок ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² ΠΏΡ€Π°Π²ΠΈΠ» Π² порядкС ΠΈΡ… примСнСния.
    "rules": []
}

ΠŸΡ€Π°Π²ΠΈΠ»Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°

ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ указания ΠΏΡ€Π°Π²ΠΈΠ» Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ опрСдСляСт порядок ΠΈΡ… примСнСния. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΡΡ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠ΅Π΅ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ останавливаСт дальнСйший поиск ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ².

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΎΠ² Π΄Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ часто Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ rule_predefined_names, ΠΎΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π»ΠΈΡΡŒ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, print).

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 1: ΠŸΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ позволяСт ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° Π²Ρ€ΠΎΠ΄Π΅ __file__ ΠΈ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ print.ΠŸΡ€ΠΈΠΌΠ΅Ρ€

# ΠΊΠΎΠ½Ρ„ΠΈΠ³:
# {
#    "rules": [{"type": "rule_predefined_names"}]
# }

import smart_imports

smart_imports.all()

# ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с ΠΈΠΌΠ΅Π½Π΅ΠΌ __file__
# хотя Π² ΠΊΠΎΠ΄Π΅ эта пСрСмСнная Π½Π΅ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π°
print(__file__)

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 2: Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π΅ΡΡ‚ΡŒ Π»ΠΈ рядом с Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ (Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅) ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. Если Π΅ΡΡ‚ΡŒ, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ.ΠŸΡ€ΠΈΠΌΠ΅Ρ€

# ΠΊΠΎΠ½Ρ„ΠΈΠ³:
# {
#    "rules": [{"type": "rule_predefined_names"},
#              {"type": "rule_local_modules"}]
# }
#
# ΠΊΠΎΠ΄ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС:
#
# my_package
# |-- __init__.py
# |-- a.py
# |-- b.py

# b.py
import smart_imports

smart_imports.all()

# Π‘ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ "a.py"
print(a)

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 3: Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠŸΡ€ΠΎΠ±ΡƒΠ΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ нСпосрСдствСнно ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ. НапримСр, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ requests.ΠŸΡ€ΠΈΠΌΠ΅Ρ€

# ΠΊΠΎΠ½Ρ„ΠΈΠ³:
# {
#    "rules": [{"type": "rule_predefined_names"},
#              {"type": "rule_global_modules"}]
# }
#
# ставим Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°ΠΊΠ΅Ρ‚
#
# pip install requests

import smart_imports

smart_imports.all()

# Π‘ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ requests
print(requests.get('http://example.com'))

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 4: ΠšΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π°

Боотносит с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚. БоотвСтствиС указываСтся Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°.ΠŸΡ€ΠΈΠΌΠ΅Ρ€

# ΠΊΠΎΠ½Ρ„ΠΈΠ³:
# {
#    "rules": [{"type": "rule_predefined_names"},
#              {"type": "rule_custom",
#               "variables": {"my_import_module": {"module": "os.path"},
#                             "my_import_attribute": {"module": "random", "attribute": "seed"}}}]
# }

import smart_imports

smart_imports.all()

# Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΈΡΠΏΠ»ΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ
# Но Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ
print(my_import_module)
print(my_import_attribute)

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 5: Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π½Π΅ являСтся Π»ΠΈ имя ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. НапримСр math ΠΈΠ»ΠΈ os.path ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ трансформируСтся Π² os_path.

Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Ρ‡Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ провСряСт Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ модуля ΠΏΠΎ Π·Π°ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ списку. Бписки для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии Python бСрутся ΠΎΡ‚ΡΡŽΠ΄Π°: github.com/jackmaney/python-stdlib-list

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

# ΠΊΠΎΠ½Ρ„ΠΈΠ³:
# {
#    "rules": [{"type": "rule_predefined_names"},
#              {"type": "rule_stdlib"}]
# }

import smart_imports

smart_imports.all()

print(math.pi)

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 6: Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΏΠΎ прСфиксу

Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ, ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ассоциированного с Π΅Π³ΠΎ прСфиксом. Π£Π΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° Ρƒ вас Π΅ΡΡ‚ΡŒ нСсколько ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ…ΡΡ Π²ΠΎ всём ΠΊΠΎΠ΄Π΅. НапримСр ΠΊ модулям ΠΏΠ°ΠΊΠ΅Ρ‚Π° utils ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ с прСфиксом utils_.ΠŸΡ€ΠΈΠΌΠ΅Ρ€

# ΠΊΠΎΠ½Ρ„ΠΈΠ³:
# {
#    "rules": [{"type": "rule_predefined_names"},
#              {"type": "rule_prefix",
#               "prefixes": [{"prefix": "utils_", "module": "my_package.utils"}]}]
# }
#
# ΠΊΠΎΠ΄ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС:
#
# my_package
# |-- __init__.py
# |-- utils
# |-- |-- __init__
# |-- |-- a.py
# |-- |-- b.py
# |-- subpackage
# |-- |-- __init__
# |-- |-- c.py

# c.py

import smart_imports

smart_imports.all()

print(utils_a)
print(utils_b)

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 7: ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°

Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½Ρ‹Π΅ субпакСты Π² Ρ€Π°Π·Π½Ρ‹Ρ… частях ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, tests ΠΈΠ»ΠΈ migrations), для Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π² Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ….ΠŸΡ€ΠΈΠΌΠ΅Ρ€

# ΠΊΠΎΠ½Ρ„ΠΈΠ³:
# {
#    "rules": [{"type": "rule_predefined_names"},
#              {"type": "rule_local_modules_from_parent",
#               "suffixes": [".tests"]}]
# }
#
# ΠΊΠΎΠ΄ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС:
#
# my_package
# |-- __init__.py
# |-- a.py
# |-- tests
# |-- |-- __init__
# |-- |-- b.py

# b.py

import smart_imports

smart_imports.all()

print(a)

ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ 8: ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρƒ

Для ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈΠ· ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ поиск ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠ°ΠΊΠ΅Ρ‚Π°Ρ… (ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³Π΅). Π’ ΠΌΠΎΡ‘ΠΌ случаС это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ оказалось ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для случаСв, ΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° (ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΈΠ· Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π°) Π½Π° вСсь ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.ΠŸΡ€ΠΈΠΌΠ΅Ρ€

# ΠΊΠΎΠ½Ρ„ΠΈΠ³:
# {
#    "rules": [{"type": "rule_predefined_names"},
#              {"type": "rule_local_modules_from_namespace",
#               "map": {"my_package.subpackage_1": ["my_package.subpackage_2"]}}]
# }
#
# ΠΊΠΎΠ΄ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС:
#
# my_package
# |-- __init__.py
# |-- subpackage_1
# |-- |-- __init__
# |-- |-- a.py
# |-- subpackage_2
# |-- |-- __init__
# |-- |-- b.py

# a.py

import smart_imports

smart_imports.all()

print(b)

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ собствСнных ΠΏΡ€Π°Π²ΠΈΠ»

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ собствСнноС ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ довольно просто:

  1. НаслСдуСмся ΠΎΡ‚ класса smart_imports.rules.BaseRule.
  2. Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Π½ΡƒΠΆΠ½ΡƒΡŽ Π»ΠΎΠ³ΠΈΠΊΡƒ.
  3. РСгистрируСм ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° smart_imports.rules.register
  4. ДобавляСм ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³.
  5. ???
  6. ΠŸΡ€ΠΎΡ„ΠΈΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡ€Π°Π²ΠΈΠ»

ΠŸΡ€ΠΎΡ„ΠΈΡ‚

ΠŸΡ€ΠΎΠΏΠ°Π»ΠΈ многострочныС списки ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ исходника.

CΠΎΠΊΡ€Π°Ρ‚ΠΈΠ»ΠΎΡΡŒ количСство строк. Π”ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΊΠΈ Π½Π° smart imports Π² Π½Π΅ΠΉ Π±Ρ‹Π»ΠΎ 6688 строк ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ… Π·Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚. ПослС ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ 2084 (ΠΏΠΎ Π΄Π²Π΅ строки smart_imports Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ„Π°ΠΉΠ» + 130 ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ², Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… явно ΠΈΠ· Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… мСст).

ΠŸΡ€ΠΈΡΡ‚Π½Ρ‹ΠΌ бонусом оказалась стандартизация ΠΈΠΌΡ‘Π½ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. Код стало Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΈΡΠ°Ρ‚ΡŒ. ΠŸΡ€ΠΎΠΏΠ°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ Π½Π°Π΄ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… сущностСй β€” Π΅ΡΡ‚ΡŒ нСсколько Ρ‡Ρ‘Ρ‚ΠΊΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ просто ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ.

ΠŸΠ»Π°Π½Ρ‹ развития

ИдСя ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ свойства ΠΊΠΎΠ΄Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠ½Π΅ нравится, поэтому Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΊΠ°ΠΊ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… smart imports, Ρ‚Π°ΠΊ ΠΈ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

ΠšΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ smart imports, ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽ:

  1. Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… вСрсий Python.
  2. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π΅Ρ‚ΡŒΡΡ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π½Π°Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сообщСства ΠΏΠΎ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ‚ΠΈΠΏΠ°ΠΌΠΈ.
  3. Π˜ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π»Π΅Π½ΠΈΠ²Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹.
  4. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для автоматичСской Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³Π° ΠΏΠΎ исходникам ΠΈ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Ρƒ исходников Π½Π° использованиС smart_imports.
  5. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° Π½Π° C, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ с AST.
  6. Π Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ с Π»ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΌΠΈ ΠΈ IDE, Ссли Ρƒ Ρ‚Π΅Ρ… Π±ΡƒΠ΄ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ ΠΊΠΎΠ΄Π° Π±Π΅Π· явных ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ².

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΌΠ½Π΅ интСрСсно вашС ΠΌΠ½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ³ΠΎ повСдСния Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ» ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.

Бпасибо Ρ‡Ρ‚ΠΎ осилили эту ΠΏΡ€ΠΎΡΡ‚Ρ‹Π½ΡŽ тСкста πŸ˜€

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python

БСгодня Π² Python ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ всС матСматичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим способы ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Python.

Python являСтся ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌ языком, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² процСссС Π²Π΅Π±-разработки создания сайта, Ρ€Π°Π±ΠΎΡ‚Π΅ с базами Π΄Π°Π½Π½Ρ‹Ρ…Β ΠΈ Π½Π°ΡƒΡ‡Π½Ρ‹ΠΌΠΈ вычислСниями. Π’ Π΄Π°Π½Π½ΠΎΠΌ руководствС Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно, ΠΊΠ°ΠΊ матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python повлияли Π½Π° Π½Π°ΡƒΡ‡Π½Ρ‹Π΅ вычислСния.

Π˜Ρ‚Π°ΠΊ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ самыС популярныС матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python.

Python Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Python стал ΠΎΡ‡Π΅Π½ΡŒ популярным ΠΈΠ·-Π·Π° обилия Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ. КаТдая Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Β ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π° Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ всСх ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ Π²ΠΎ врСмя процСсса. ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Python ΠΈΠ·-Π·Π° Π΅Π³ΠΎ внимания ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΠ·ΠΌΡƒ Π² сочСтании с ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡ‚ΡŒΡŽ. Для матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Python Π΅ΡΡ‚ΡŒ сразу нСсколько Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Math Π² Python

Math являСтся самым Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ матСматичСским ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Python. ΠžΡ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ основныС матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ сумма, экспонСнта, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со слоТными матСматичСскими опСрациями, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†. РасчСты, выполняСмыС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉΒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math, Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, эта Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для выполнСния основных матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ экспонСнту ΠΎΡ‚ 3, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽΒ exp()Β Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ math ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

from math import exp
exp(3) # ВычислСниС экспонСнты



from math import exp

exp(3) # ВычислСниС экспонСнты

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Numpy Π² Python

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Β NumpyΒ Π² Python ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для выполнСния матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ. НаиболСС Π²Π°ΠΆΠ½ΠΎΠΉ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽΒ Numpy, которая ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, являСтся ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ вычислСния Π½Π° молниСносной скорости. Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ благодаря C-API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ быстро ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

НапримСр, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΒ ΡΠΊΠ°Π»ΡΡ€Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π΄Π²ΡƒΡ… ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Β ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

import numpy as np


mat1 = np.array([[1,2],[3,4]])
mat2 = np.array([[5,6],[7,8]])
np.dot(mat1,mat2)



import numpy as np

Β 

Β 

mat1 = np.array([[1,2],[3,4]])

mat2 = np.array([[5,6],[7,8]])

np.dot(mat1,mat2)

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

array([[19, 22],
[43, 50]])



array([[19, 22],

Β Β Β Β Β Β  [43, 50]])

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° SciPy Π² Python

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° math прСдоставляСтся Python Π½Π°ΡƒΡ‡Π½Ρ‹Π΅ инструмСнты. Π’ Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ для матСматичСской ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹, ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡ Π€ΡƒΡ€ΡŒΠ΅ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. ΠœΠΎΠ΄ΡƒΠ»ΡŒ numpy прСдоставляСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ структуру Π΄Π°Π½Π½Ρ‹Ρ… массива библиотСкС SciPy.

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽΒ linalg(), ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ SciPy, для вычислСния Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π½Ρ‚Π° ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹.

from scipy import linalg


import numpy as np
mat1 = np.array([[1,2],[3,4]]) #DataFlair
linalg.det(mat1) # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: -2.0



from scipy import linalg

Β 

Β 

import numpy as np

mat1 = np.array([[1,2],[3,4]]) #DataFlair

linalg.det(mat1) # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: -2.0

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Statsmodel Π² Python

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽΒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° StatsmodelΒ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ статистичСскиС вычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ статистику, логичСский Π²Ρ‹Π²ΠΎΠ΄, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ†Π΅Π½ΠΊΡƒ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… статистичСских ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. Π­Ρ‚ΠΎ способствуСт эффСктивному статистичСскому исслСдованию Π΄Π°Π½Π½Ρ‹Ρ….

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Statsmodel Π² Python.

import numpy as np
import statsmodels.api as sm
import statsmodels.formula.api as smf


input_data = sm.datasets.get_rdataset(«Guerry», «HistData»).data

res = smf.ols(‘Lottery ~ Literacy + np.log(Pop1831)’, data = input_data).fit()
print(res.summary())



import numpy as np

import statsmodels.api as sm

import statsmodels.formula.api as smf

Β 

Β 

input_data = sm.datasets.get_rdataset(«Guerry», «HistData»).data

Β 

res = smf.ols(‘Lottery ~ Literacy + np.log(Pop1831)’, data = input_data).fit()

print(res.summary())

Scikit-learn Π² Python

МашинноС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ матСматичСским аспСктом Π½Π°ΡƒΠΊΠΈ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹Β ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠ³ΠΎ обучСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π»Π΅Π³ΠΊΠΎ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Для этой Ρ†Π΅Π»ΠΈΒ Scikit-learnΒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅Β Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ классификации, рСгрСссии ΠΈ кластСризации.

from sklearn import linear_model


regress = linear_model.LinearRegression()

regress.fit([[0,0],[1,1],[2,2]], [0,1,2])
LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

print(regress.coef_) # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: array([0.5, 0.5])



from sklearn import linear_model

Β 

Β 

regress = linear_model.LinearRegression()

Β 

regress.fit([[0,0],[1,1],[2,2]], [0,1,2])

LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)

Β 

print(regress.coef_) # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚: array([0.5, 0.5])

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

Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Π²Π°ΠΆΠ½Ρ‹Π΅ матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Python. Π‘Ρ‹Π»ΠΈ рассмотрСны NumPy,Β SciPy,Β statsmodels, Π° Ρ‚Π°ΠΊΠΆΠ΅Β scikit-learn. Π’ Python Π΅ΡΡ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ матСматичСскиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ находятся Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. НадССмся, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ руководства Π²Π°ΠΌ пригодятся Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

источник

ΠœΠΎΠ΄ΡƒΠ»ΠΈ. Π£Ρ€ΠΎΠΊ 15 курса «Python. Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅»

ВстроСнныС Π² язык программирования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ доступны сразу. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, Π½Π΅ Π½Π°Π΄ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий. Однако Π·Π° врСмя сущСствования любого популярного языка Π½Π° Π½Π΅ΠΌ Π±Ρ‹Π»ΠΎ написано ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ оказались вострСбованными мноТСством программистов ΠΈ Π² Ρ€Π°Π·Π½Ρ‹Ρ… областях, Ρ‡Ρ‚ΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ вСсь этот объСм ΠΊΠΎΠ΄Π° Π² сам язык Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‚ΠΎ нСцСлСсообразно.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ доступа ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ возмоТностям языка, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ стало общСпринятой ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ содСрТит ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ области. Π’Π°ΠΊ Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ math языка Python содСрТатся матСматичСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ random позволяСт Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ псСвдослучайныС числа, Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ datetime содСрТатся классы для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π°Ρ‚Π°ΠΌΠΈ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ sys прСдоставляСт доступ ΠΊ систСмным ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ Ρ‚. Π΄.

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ для языка Python ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎ, Ρ‡Ρ‚ΠΎ связано с ΠΏΠΎΠΏΡƒΠ»ΡΡ€Π½ΠΎΡΡ‚ΡŒΡŽ языка. Π§Π°ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ собрана Π² Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡƒΡŽ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ. Бтандартная ΠΎΠ½Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ поставляСтся вмСстС с установочным ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠΌ. Однако ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ сторонниС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Они ΡΠΊΠ°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

Для доступа ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ модуля, Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ПослС ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ «Π·Π½Π°Π΅Ρ‚» ΠΎ сущСствовании Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… классов ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ позволяСт ΠΈΠΌΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Π’ ΠŸΠΈΡ‚ΠΎΠ½Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ осущСствляСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ import. ΠŸΡ€ΠΈ этом сущСствуСт нСсколько способов ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. Рассмотрим Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΌ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ math. Π˜Ρ‚Π°ΠΊ,

>>> import math

НичСго Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ. Однако Π² глобальной области видимости появилось имя math. Если Π΄ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π²Ρ‹ упомянули Π±Ρ‹ имя math, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π±Ρ‹ ошибка NameError. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅

>>> math
<module 'math' (built-in)>

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ завСлся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ math, относящийся ΠΊ классу module.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, входящих Π² этот ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ встроСнной Π² Python Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ dir(), ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π΅ΠΉ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° имя модуля:

>>> dir(math)
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh',
'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh',
'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor',
'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite',
'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf',
'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

ΠŸΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈΠΌΠ΅Π½Π° с Π΄Π²ΠΎΠΉΠ½Ρ‹ΠΌΠΈ подчСркиваниями. ВсС ΠΎΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ – ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ констант (ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΌΠ΅Π½ΡΡŽΡ‚ своих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ), Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² ΠΌΠΎΠ΄ΡƒΠ»ΡŒ math. Π§Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· модуля, Π½Π°Π΄ΠΎ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ имя модуля, ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ, Π΄Π°Π»Π΅Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, послС Ρ‡Π΅Π³ΠΎ Π² скобках ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹, Ссли ΠΎΠ½ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ pow ΠΈΠ· math, Π½Π°Π΄ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

>>> math.pow(2, 2)
4.0

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, эта другая функция pow(), Π½Π΅ Ρ‚Π°, Ρ‡Ρ‚ΠΎ встроСна Π² сам язык. «ΠžΠ±Ρ‹Ρ‡Π½Π°Ρ» функция pow() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅, Ссли Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Ρ†Π΅Π»Ρ‹Π΅ числа:

>>> pow(2, 2)
4

Для обращСния ΠΊ константС скобки Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹:

>>> math.pi
3.141592653589793

Если ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚Π° ΠΈΠ»ΠΈ иная функция, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΏΡ€Π°Π²ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½Π΅ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ встроСнной Π² язык Python Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ help():

>>> help(math.gcd)
Help on built-in function gcd in module math:

gcd(...)
    gcd(x, y) -> int
    greatest common divisor of x and y

Для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ справки Π½Π°Π΄ΠΎ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ q. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС сообщаСтся, Ρ‡Ρ‚ΠΎ функция Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число, ΠΈ это наибольший ΠΎΠ±Ρ‰ΠΈΠΉ Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ для чисСл x ΠΈ y. ОписаниС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΈΡ… содСрТания Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° сайтС python.org.

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° – это ΠΊΠΎΠ³Π΄Π° импортируСтся Π½Π΅ сам ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· Π½Π΅Π³ΠΎ.

>>> from math import gcd, sqrt, hypot

ΠŸΠ΅Ρ€Π΅Π²Π΅ΡΡ‚ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ «ΠΈΠ· модуля math ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ gcd, sqrt ΠΈ hypot».

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΏΡ€ΠΈ ΠΈΡ… Π²Ρ‹Π·ΠΎΠ²Π΅ Π½Π΅ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ имя модуля:

>>> gcd(100, 150)
50
>>> sqrt(16)
4.0
>>> hypot(3, 4)
5.0

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сразу всС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· модуля:

>>> from math import *

Π˜ΠΌΠΏΠΎΡ€Ρ‚ Ρ‡Π΅Ρ€Π΅Π· from Π½Π΅ лишСн нСдостатка. Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠ°ΠΊ имя ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ констант. Ошибки Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Π½ΠΎ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… окаТСтся «Π·Π°Ρ‚Π΅Ρ€Ρ‚ΠΎ»:

>>> pi = 3.14
>>> from math import pi
>>> pi
3.141592653589793

Π—Π΄Π΅ΡΡŒ исчСзаСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 3.14, присвоСнноС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ pi. Π­Ρ‚ΠΎ имя Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° число ΠΈΠ· модуля math. Если ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π½ΡŒΡˆΠ΅, Ρ‡Π΅ΠΌ присвоСниС значСния pi, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ всС Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚:

>>> from math import pi
>>> pi = 3.14
>>> pi
3.14

Π’ этой связи Π±ΠΎΠ»Π΅Π΅ опасСн ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ всСх Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² этом случаС ΠΎΡ‡Π΅Π½ΡŒ Π»Π΅Π³ΠΊΠΎ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ².

Однако ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ имя ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈΠ· модуля Π½Π° ΠΊΠ°ΠΊΠΎΠ΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ:

>>> from math import pi as P
>>> P
3.141592653589793
>>> pi
3.14

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС константа pi ΠΈΠ· модуля импортируСтся ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ P. Бмысл ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² Π² сокращСнии ΠΈΠΌΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ с Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ, Π° ΠΈΠΌΠ΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ классов Π² Π½ΠΈΡ… Π΅Ρ‰Π΅ Π΄Π»ΠΈΠ½Π½Π΅Π΅. Если Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ импортируСтся всСго ΠΏΠ°Ρ€Π° сущностСй, ΠΈ ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π½Π΅ΠΉ часто, Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅:

>>> import calendar
>>> calendar.weekheader(2)
'Mo Tu We Th Fr Sa Su'

ΠΈ

>>> from calendar import weekheader as week
>>> week(3)
'Mon Tue Wed Thu Fri Sat Sun'

Π’ΠΎ всСх ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ содСрТимого модуля Π² пространствС ΠΈΠΌΠ΅Π½ самого модуля ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ доступ ΠΊ Π½ΠΈΠΌ Ρ‡Π΅Ρ€Π΅Π· имя модуля, Ρ‚. Π΅. Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ import имя_модуля, Π° Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· имя_модуля.имя_Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ().

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π°. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнного модуля

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡΡ‚ Π½Π° Python всСгда ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ собствСнный ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… своих ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² пользованиС всСму ΠΌΠΈΡ€Ρƒ. Π’ качСствС Ρ‚Ρ€Π΅Π½ΠΈΡ€ΠΎΠ²ΠΊΠΈ создадим ΠΌΠΎΠ΄ΡƒΠ»ΡŒ с функциями для вычислСния ΠΏΠ»ΠΎΡ‰Π°Π΄Π΅ΠΉ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°, Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° ΠΈ ΠΊΡ€ΡƒΠ³Π°:

from math import pi, pow

def rectangle(a, b):
    return round(a * b, 2)

def triangle(a, h):
    return round(0.5 * a * h, 2)

def circle(r):
    return round(pi * pow(r, 2), 2) 

Π—Π΄Π΅ΡΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ· модуля math.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» square.py. Однако ΠΊΡƒΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ сам Ρ„Π°ΠΉΠ»?

Когда ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠŸΠΈΡ‚ΠΎΠ½Π° встрСчаСт ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°, Ρ‚ΠΎ просматриваСт Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°-модуля ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ. Π˜Ρ… ΠΏΠ΅Ρ€Π΅Ρ‡Π΅Π½ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎ содСрТимому sys.path:

>>> import sys
>>> sys.path
['', '/usr/lib/python35.zip', '/usr/lib/python3.5', 
'/usr/lib/python3.5/plat-x86_64-linux-gnu',
'/usr/lib/python3.5/lib-dynload', 
'/home/pl/.local/lib/python3.5/site-packages',
'/usr/local/lib/python3.5/dist-packages', 
'/usr/lib/python3/dist-packages']

Π­Ρ‚ΠΎ список адрСсов Π² Linux. Π’ Windows ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ нСсколько Π΄Ρ€ΡƒΠ³ΠΈΠΌ. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт – пустая строка, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚ΠΎ мСсто, Π³Π΄Π΅ сохранСна сама ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΡŽΡ‰Π°Ρ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ. Если Π²Ρ‹ сохранитС Ρ„Π°ΠΉΠ»-ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΈ Ρ„Π°ΠΉΠ»-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅, Ρ‚ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π±Π΅Π· Ρ‚Ρ€ΡƒΠ΄Π° Π½Π°ΠΉΠ΄Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ.

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π² любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π² спискС ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΎΠ². Π’ΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ доступСн для всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° Python, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅.

МоТно Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² sys.path свой ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³. Однако Π² этом случаС Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ измСнСния значСния sys.path, Π»ΠΈΠ±ΠΎ Π½Π°Π΄ΠΎ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв Π»ΡƒΡ‡ΡˆΠ΅ Ρ‚Π°ΠΊ Π½Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ.

ΠŸΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ» square.py Π² Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π³Π΄Π΅ Π±ΡƒΠ΄Π΅Ρ‚ исполняСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π•Π΅ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° модуля square (ΠΏΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° Π½Π΅ указываСтся) ΠΈ Π²Ρ‹Π·ΠΎΠ² Ρ‚ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ с Ρ‚Π΅ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Π²Π΅Π» ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ. Π’. Π΅. Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π°Π΄ΠΎ ΡΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ, ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ ΠΊΠ°ΠΊΠΎΠΉ Ρ„ΠΈΠ³ΡƒΡ€Ρ‹ ΠΎΠ½ Ρ…ΠΎΡ‡Π΅Ρ‚ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ. Π”Π°Π»Π΅Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρƒ Π½Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ· модуля square, Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вывСсти Π½Π° экран.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ИсполнСниС модуля ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ скрипта, Π° Ρ‚Π°ΠΊΠΆΠ΅ созданиС строк Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ встроСнная Π² Python функция help(), Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π² курсС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡƒΡ€ΠΎΠΊΠΈ Π² android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ pdf-вСрсии курса

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Python

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

ΠœΠ΅Ρ‚ΠΎΠ΄ ОписаниС
math.acos () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ арккосинус числа
math.acosh () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ гипСрболичСский косинус числа
math.asin () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ арксинус числа
math.asinh () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ гипСрболичСский синус числа
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.Π°Ρ‚Π°Π½ () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ арктангСнс числа Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ….
math.atan2 () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ арктангСнс y / x Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ….
math.atanh () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ гипСрболичСский тангСнс числа
math.ceil () ΠžΠΊΡ€ΡƒΠ³Π»ΡΠ΅Ρ‚ число Π΄ΠΎ блиТайшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ
math.comb () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство способов Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ k элСмСнтов ΠΈΠ· n элСмСнтов Π±Π΅Π· повторСния ΠΈ порядка
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.copysign () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, состоящСС ΠΈΠ· значСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΈ Π·Π½Π°ΠΊΠ° Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.
math.cos () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ косинус числа
math.cosh (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ гипСрболичСский косинус x
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚. Градусов (x) ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ ΡƒΠ³ΠΎΠ» ΠΈΠ· Ρ€Π°Π΄ΠΈΠ°Π½ΠΎΠ² Π² градусы.
math.dist (p, q) ВычисляСт Π΅Π²ΠΊΠ»ΠΈΠ΄ΠΎΠ²ΠΎ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ (p ΠΈ q), Π³Π΄Π΅ p ΠΈ q — ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ этой Ρ‚ΠΎΡ‡ΠΊΠΈ.
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.erf (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ошибки x
math.erfc (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ошибки x
math.exp (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ E x , Π³Π΄Π΅ E — число Π­ΠΉΠ»Π΅Ρ€Π° (ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 2,718281 …), Π° x — это число, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π΅ΠΌΡƒ.
math.expm1 (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ E x — 1, Π³Π΄Π΅ E — число Π­ΠΉΠ»Π΅Ρ€Π° (ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ 2.718281 …), Π° x — это ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½ΠΎΠ΅ Π΅ΠΌΡƒ число
math.fabs (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ числа
матСматичСский Ρ„Π°ΠΊΡ‚ΠΎΡ€ () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π» числа
ΠΌΠ°Ρ‚. Пол (x) ΠžΠΊΡ€ΡƒΠ³Π»ΡΠ΅Ρ‚ число Π΄ΠΎ блиТайшСго Ρ†Π΅Π»ΠΎΠ³ΠΎ
math.fmod (x, y) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ остаток ΠΎΡ‚ x / y
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.frexp () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ мантиссу ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСпСни ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ значСния.
math.fsum (итСрация) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сумму всСх элСмСнтов Π² ΠΈΡ‚Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ (ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ, массивы, списки ΠΈ Ρ‚. Π”.).
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° Π³Π°ΠΌΠΌΠ° (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Π°ΠΌΠΌΡ‹ x
math.gcd () Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.Π³ΠΈΠΏΠΎΡ‚Π΅Π·Π° () НайдитС Π΅Π²ΠΊΠ»ΠΈΠ΄ΠΎΠ²ΠΎ расстояниС ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ для n Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
math.isclose () ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Π±Π»ΠΈΠ·ΠΊΠΈ Π»ΠΈ Π΄Π²Π° значСния ΠΈΠ»ΠΈ Π½Π΅Ρ‚
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚. БСсконСчно (x) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, являСтся Π»ΠΈ x ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΌ числом
math.isinf (x) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ x ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ бСсконСчным числом
math.isnan (x) ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, являСтся Π»ΠΈ x NaN (Π½Π΅ числом)
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.isqrt (n) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ блиТайший цСлочислСнный ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈΠ· n
math.ldexp (x, i) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ x * 2i, Π³Π΄Π΅ x — мантисса, Π° i — ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСпСни.
math.lgamma (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ логарифмичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π³Π°ΠΌΠΌΡ‹ x
math.log (x, основаниС) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ числа ΠΈΠ»ΠΈ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ числа ΠΏΠΎ основанию
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.log10 (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСсятичный Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ x
math.log1p (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ 1 + x
math.log2 (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ ΠΏΠΎ основанию 2 x
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚. Π”ΠΎΠΏ. (N, k) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство способов Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ k элСмСнтов ΠΈΠ· n элСмСнтов с порядком ΠΈ Π±Π΅Π· повторСния.
math.pow (x, y) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ x Π² стСпСни y
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.prod (ΠΈΡ‚Π΅Ρ€Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, *, Π½Π°Ρ‡Π°Π»ΠΎ = 1) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (списки, массивы, ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠΈ ΠΈ Ρ‚. Π”.).
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚. Π Π°Π΄ΠΈΠ°Π½ (x) ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ градуса (x) Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹
матСматичСский остаток (x, y) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ блиТайшСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ дСлится Π½Π° Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŒ.
math.sin (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ синус x
ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚.sinh (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ гипСрболичСский синус x
math.sqrt (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈΠ· x
math.tan (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ тангСнс x
math.tanh (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ гипСрболичСский тангСнс x
math.trunc (x) Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ усСчСнныС Ρ†Π΅Π»Ρ‹Π΅ части x

.

math — ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ — Python Module of the Week

НазначСниС: ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для спСциализированных матСматичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
Π’ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ: 1.4

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ IEEE, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅
ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ… C собствСнной ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ для слоТных
матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с использованиСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ
Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΡ‹ ΠΈ тригономСтричСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ константы

МногиС матСматичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ зависят ΠΎΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… констант. ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°
Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ значСния для Ο€ (pi) ΠΈ e.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'Ο€:% .30f'% math.pi
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ 'e:% .30f'% math.e
 

Оба значСния ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΏΠΎ точности Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΠΌ
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° point C.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_constants.py

Ο€: 3,141592653589793115997963468544
e: 2.718281828459045090795598298428
 

Π˜ΡΠΏΡ‹Ρ‚Π°Π½ΠΈΡ Π½Π° ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ значСния

ВычислСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π΄Π²ΡƒΠΌ Ρ‚ΠΈΠΏΠ°ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…
цСнности.6} ‘. Format (‘ ‘,’ ‘,’ ‘,’ ‘)

для e в диапазонС (0, 201, 20):
Ρ… = 10,0 ** Π΅
Ρƒ = Ρ… * Ρ…
print ‘{: 3d} {! s: 6} {! s: 6} {! s: 6}’. format (e, x, y, math.isinf (y))

Когда ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСпСни Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ становится достаточно большим, ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚
x большС Π½Π΅ помСщаСтся Π² Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ , ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записываСтся ΠΊΠ°ΠΊ
бСсконСчно.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_isinf.py

 e x x ** 2 isinf
--- ------ ------ ------
  0 1.0 1.0 Π›ΠΎΠΆΡŒ
 20 1e + 20 1e + 40 Π›ΠΎΠΆΡŒ
 40 1e + 40 1e + 80 Π›ΠΎΠΆΡŒ
 60 1e + 60 1e + 120 Π›ΠΎΠΆΡŒ
 80 1e + 80 1e + 160 Π›ΠΎΠΆΡŒ
100 1e + 100 1e + 200 Π›ΠΎΠΆΡŒ
120 1e + 120 1e + 240 Π›ΠΎΠΆΡŒ
140 1e + 140 1e + 280 Π›ΠΎΠΆΡŒ
160 1e + 160 inf Π˜ΡΡ‚ΠΈΠ½Π°
180 1e + 180 inf Π˜ΡΡ‚ΠΈΠ½Π°
200 1e + 200 inf Π˜ΡΡ‚ΠΈΠ½Π°
 

Однако Π½Π΅ всС пСрСполнСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой приводят ΠΊ значСниям INF.ВычислСниС экспонСнты со значСниями с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Π² частности,
Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ OverflowError вмСсто
с сохранСниСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° INF.

 Ρ… = 10,0 ** 200

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'x =', x
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'x * x =', x * x
ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
    Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'x ** 2 =', x ** 2
ΠΊΡ€ΠΎΠΌΠ΅ OverflowError, ошибка:
    ошибка ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ
 

Π­Ρ‚ΠΎ нСсоотвСтствиС Π²Ρ‹Π·Π²Π°Π½ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π΅ΠΉ Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ C Python.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_overflow.py

Ρ… = 1e + 200
Ρ… * Ρ… = ΠΈΠ½Ρ„
x ** 2 = (34, 'Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ слишком Π²Π΅Π»ΠΈΠΊ')
 

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ дСлСния с использованиСм бСсконСчных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹.Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚
дСлСния числа Π½Π° Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ — NaN (Β«Π½Π΅ число»).

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Ρ… = (10,0 ** 200) * (10,0 ** 200)
Ρƒ = Ρ… / Ρ…

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'x =', x
ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ 'isnan (x) =', math.isnan (x)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'y = x / x =', x / x
print 'y == nan =', y == float ('nan')
print 'isnan (y) =', math.isnan (y)
 

NaN Π½Π΅ сравниваСтся ΠΊΠ°ΠΊ Ρ€Π°Π²Π½ΠΎΠ΅ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, Π΄Π°ΠΆΠ΅ самому сСбС, поэтому
ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ NaN, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ isnan ().

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_isnan.py

x = inf
isnan (x) = Π›ΠΎΠΆΡŒ
Ρƒ = Ρ… / Ρ… = Π½Π°Π½
y == nan = лоТь
isnan (y) = Π˜ΡΡ‚ΠΈΠ½Π°
 

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² Ρ†Π΅Π»Ρ‹Π΅ числа

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для прСобразования
значСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой Π² Ρ†Π΅Π»Ρ‹Π΅ числа.5} ‘. Format (‘ ‘,’ ‘,’ ‘,’ ‘,’ ‘)

fmt = » .join ([‘{: 5.1f}’] * 5)

для i в [-1,5, -0,8, -0,5, -0,2, 0, 0,2, 0,5, 0,8, 1]:
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ fmt.format (i, int (i), math.trunc (i), math.floor (i), math.ceil (i))

trunc () эквивалСнтно прямому ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΡŽ Π² int.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_integers.py

  я Π² Π±Π°Π³Π°ΠΆΠ½ΠΈΠΊΠ΅ ΠΏΠΎΡ‚ΠΎΠ»ΠΎΠΊ
----- ----- ----- ----- -----
 -1,5 -1,0 -1,0 -2,0 -1,0
 -0,8 0,0 0,0 -1,0 -0,0
 -0,5 0,0 0,0 -1,0 -0,0
 -0,2 0,0 0.0 -1,0 -0,0
  0,0 0,0 0,0 0,0 0,0
  0,2 0,0 0,0 0,0 1,0
  0,5 0,0 0,0 0,0 1,0
  0,8 0,0 0,0 0,0 1,0
  1,0 1,0 1,0 1,0 1,0
 

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°

modf () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ число с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ‚Π΅ΠΆ
содСрТащий Π΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈ Ρ†Π΅Π»ΡƒΡŽ части Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

для i в диапазонС (6):
    print '{} / 2 = {}'. format (i, math.modf (i / 2.0))
 

Оба числа Π² Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ числами с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой.7} ‘. Format (‘ ‘,’ ‘,’ ‘)

для m, e в [(0,8, -3),
(0,5, 0),
(0,5, 3),
]:
Ρ… = math.ldexp (m, e)
print ‘{: 7.2f} {: 7d} {: 7.2f}’. format (m, e, x)

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Ρƒ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ, Ρ‡Ρ‚ΠΎ ΠΈ frexp (), ldexp () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚
значСния мантиссы ΠΈ экспонСнты Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой
количСство.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_ldexp.py

   ΠΌ Π΅ Ρ…
------- ------- -------
   0,80 -3 0,10
   0,50 0 0,50
   0,50 3 4.00
 

ΠŸΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ

ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ числа являСтся Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
fabs () для вычислСния Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ значСния с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой
количСство.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.fabs (-1.1)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.fabs (-0.0)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.fabs (0.0)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.fabs (1.1)
 

На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Π°Ρ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ΠΏΠΎΠΏΠ»Π°Π²ΠΊΠ° Ρ€Π°Π²Π½Π°
прСдставлСн ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_fabs.py

1.1
0,0
0,0
1.1
 

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°ΠΊ значСния, Π»ΠΈΠ±ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Π±ΠΎΡ€ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
Ρ‚ΠΎΡ‚ ΠΆΠ΅ Π·Π½Π°ΠΊ ΠΈΠ»ΠΈ просто для сравнСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ copysign (), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ
Π·Π½Π°ΠΊ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠ΅ΠΉ цСнности.5} ‘. Format (‘ ‘,’ ‘,’ ‘,’ ‘,’ ‘)

для f в [-1.0,
0,0,
1.0,
float (‘- inf’),
ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ (‘ΠΈΠ½Ρ„’),
ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ (‘- Π½Π°Π½’),
ΠΏΠΎΠΏΠ»Π°Π²ΠΎΠΊ (‘Π½Π°Π½’),
]:
s = int (math.copysign (1, f))
print ‘{: 5.1f} {: 5d} {! s: 5} {! s: 5} {! s: 5}’. format (f, s, f <0, f> 0, f == 0)

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ функция, такая ΠΊΠ°ΠΊ copysign (), Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сравнСниС
NaN ΠΈ -NaN Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ значСниями Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_copysign.py


  f s <0> 0 = 0
----- ----- ----- ----- -----
 -1.0-1 Π˜ΡΡ‚ΠΈΠ½Π° Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ
  0,0 1 Π»ΠΎΠΆΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎ Π²Π΅Ρ€Π½ΠΎ
  1.0 1 Π›ΠΎΠΆΡŒ Π˜ΡΡ‚ΠΈΠ½Π° Π›ΠΎΠΆΡŒ
 -inf -1 Π˜ΡΡ‚ΠΈΠ½Π° Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ
  inf 1 Π›ΠΎΠΆΡŒ Π˜ΡΡ‚ΠΈΠ½Π° Π›ΠΎΠΆΡŒ
  nan -1 Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ
  nan 1 Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ Π›ΠΎΠΆΡŒ
 

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ расчСты

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π² Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠΉ памяти с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой
ΠΈΡΠΏΡ‹Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ. НСкоторыС значСния Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½ΠΎ, ΠΈ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅
часто Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ посрСдством ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹Ρ… вычислСний, Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅
вСроятно, Π±ΡƒΠ΄Π΅Ρ‚ внСсСна ошибка прСдставлСния.ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°
Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для вычислСния суммы ряда ΠΏΠ»Π°Π²Π°ΡŽΡ‰ΠΈΡ…
числа Ρ‚ΠΎΡ‡Π΅ΠΊ с использованиСм эффСктивного Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ошибки.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

значСния = [0,1] * 10

print 'Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ значСния:', значСния

print 'sum (): {: .20f}'. format (sum (значСния))

s = 0,0
для i Π² значСниях:
    s + = я
print 'for-loop: {: .20f}'. Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (Ρ‹)
    
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'math.fsum (): {: .20f}'. Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (math.fsum (значСния))
 

Учитывая ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· дСсяти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ€Π°Π²Π½ΠΎ 0,1, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ΅
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ суммы ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π²Π½ΠΎ 1.0. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ 0.1 Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ
прСдставлСны Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, ΠΎΠ΄Π½Π°ΠΊΠΎ ошибки
вводится Π² сумму, Ссли ΠΎΠ½Π° Π½Π΅ вычисляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ fsum ().

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_fsum.py

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ значСния: [0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1, 0,1]
сумма (): 0.99999999999999988898
для Ρ†ΠΈΠΊΠ»Π°: 0,99999999999999988898
math.fsum (): 1.00000000000000000000
 

factorial () ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для вычислСния количСства
пСрСстановки ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ ряда ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π€Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»
ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ†Π΅Π»ΠΎΠ³ΠΎ числа n , Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ n !, опрСдСляСтся рСкурсивно ΠΊΠ°ΠΊ
(ΠΏ-1)! * n ΠΈ останавливаСтся Π½Π° 0! == 1.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

для i в [0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.1]:
    ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
        print '{: 2.0f} {: 6.0f}'. format (i, math.factorial (i))
    ΠΊΡ€ΠΎΠΌΠ΅ ValueError, ошибка:
        print 'Ошибка вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° (% s):'% i, err
 

factorial () Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, Π½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚
Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой, Ссли ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Ρ‹ Π²
Ρ†Π΅Π»ΠΎΠ΅ Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ значСния.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_factorial.py

 0 1
 1 1
 2 2
 3 6
 4 24
 5 120
Ошибка вычислСния Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ°Π»Π° (6.1): factorial () ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π»Ρ‹Π΅ значСния
 

gamma () ΠΏΠΎΡ…ΠΎΠΆΠ° Π½Π° factorial (), Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ
числа ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сдвигаСтся Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ Π²Π½ΠΈΠ· (Π³Π°ΠΌΠΌΠ° Ρ€Π°Π²Π½Π° (n —
1)!).

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

для i в [0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6]:
    ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
        print '{: 2.1f} {: 6.2f}'. format (i, math.gamma (i))
    ΠΊΡ€ΠΎΠΌΠ΅ ValueError, ошибка:
        print 'Ошибка вычислСния Π³Π°ΠΌΠΌΡ‹ (% s):'% i, err
 

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ноль ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ, это нСдопустимо.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_gamma.Ρ€Ρƒ

Ошибка вычислСния Π³Π°ΠΌΠΌΡ‹ (0): ошибка матСматичСской области
1,1 0,95
2,2 1,10
3,3 2,68
4,4 10,14
5,5 52,34
6,6 344,70
 

lgamma () Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ значСния
Π“Π°ΠΌΠΌΠ° для Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ значСния.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

для i в [0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6]:
    ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
        print '{: 2.1f} {: .20f} {: .20f}'. format (i, math.lgamma (i), math.log (math.gamma (i)))
    ΠΊΡ€ΠΎΠΌΠ΅ ValueError, ошибка:
        print 'Ошибка вычислСния lgamma (% s):'% i, err
 

ИспользованиС lgamma () сохраняСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ вычислСниС
Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ gamma ().

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_lgamma.py

Ошибка вычислСния lgamma (0): ошибка матСматичСской области
1,1 -0,04987244125984036103 -0,04987244125983997245
2,2 0,09694746679063825923 0,09694746679063866168
3,3 0,98709857789473387513 0,98709857789473409717
4,4 2,31610349142485727469 2,31610349142485727469
5.5 3.95781396761871651080 3.95781396761871606671
6,6 5,84268005527463252236 5,84268005527463252236
 

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ (%) вычисляСт остаток ΠΎΡ‚ дСлСния
Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ (Ρ‚.Π΅. 5% 2 = 1).5} ‘. Format (‘ x ‘,’ y ‘,’% ‘,’ fmod ‘).
Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ ‘—- —- —— ——‘

для x, y в [(5, 2),
(5, -2),
(-5, 2),
]:
print ‘{: 4.1f} {: 4.1f} {: 5.2f} {: 5.2f}’. format (x, y, x% y, math.fmod (x, y))

ΠŸΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ частым источником ΠΏΡƒΡ‚Π°Π½ΠΈΡ†Ρ‹ являСтся Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚, Ρ‡Ρ‚ΠΎ
Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ fmod для вычислСния ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, Ρ‚Π°ΠΊΠΆΠ΅ отличаСтся
ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ%, поэтому Π·Π½Π°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° отличаСтся.
Π²Ρ…ΠΎΠ΄Ρ‹ со ΡΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹ΠΌΠΈ Π·Π½Π°ΠΊΠ°ΠΌΠΈ.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_fmod.py

 x y% fmod
---- ---- ----- -----
 5.0 2,0 1,00 1,00
 5,0 -2,0 -1,00 1,00
-5,0 2,0 1,00 -1,00
 

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΡ‹

ΠšΡ€ΠΈΠ²Ρ‹Π΅ ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ роста ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² экономикС, Ρ„ΠΈΠ·ΠΈΠΊΠ΅ ΠΈ Π΄Ρ€.
Π½Π°ΡƒΠΊΠΈ. Python ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ возвСдСния Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ (Β«**Β»),
Π½ΠΎ pow () ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ
функция Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

для x, y в [
    # Π’ΠΈΠΏΠΈΡ‡Π½ΠΎΠ΅ использованиС
    (2, 3),
    (2.1, 3.2),

    # ВсСгда 1
    (1.0, 5),
    (2.0, 0),

    # НС-число
    (2, float ('nan')),

    # ΠšΠΎΡ€Π½Π΅ΠΏΠ»ΠΎΠ΄Ρ‹
    (9.0, 0,5),
    (27,0, 1,0 / 3),
    ]:
    print '{: 5.1f} ** {: 5.3f} = {: 6.3f}'. format (x, y, math.pow (x, y))
 

ΠŸΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ 1 Π΄ΠΎ любой стСпСни всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ 1.0, ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ любого
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² стСпСни 0,0. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π½Π΅-Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ
Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ nan return nan. Если ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ мСньшС 1,
pow () вычисляСт ΠΊΠΎΡ€Π΅Π½ΡŒ.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_pow.py

  2,0 ** 3,000 = 8,000
  2,1 ** 3.200 = 10,742
  1.0 ** 5.000 = 1.000
  2,0 ** 0,000 = 1,000
  2,0 ** Π½Π°Π½ = Π½Π°Π½
  9,0 ** 0,500 = 3,000
 27.0 ** 0,333 = 3,000
 

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΊΠΎΡ€Π½ΠΈ (ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСпСни 1/2) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ часто,
это ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ функция для ΠΈΡ… вычислСния.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.sqrt (9.0)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.sqrt (3)
ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ:
    Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.sqrt (-1)
ΠΊΡ€ΠΎΠΌΠ΅ ValueError, ошибка:
    print 'НСвозмоТно Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ sqrt (-1):', err
    
 

Для вычислСния ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΡ€Π½Π΅ΠΉ ΠΈΠ· ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… чисСл трСбуСтся комплСксных
числа
, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΎΠΉ. Π›ΡŽΠ±Π°Ρ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ°
Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ ΠΈΠ· ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ
ValueError .

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_sqrt.py

3.0
1,73205080757
НСвозмоТно Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ sqrt (-1): ошибка матСматичСского Π΄ΠΎΠΌΠ΅Π½Π°
 

Ѐункция Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠ° Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ y , Π³Π΄Π΅ x = b ** y. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ,
log () вычисляСт Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ (основаниС: e ). Если
прСдоставляСтся Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚, это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС основы.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.log (8)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.log (8, 2)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.log (0,5, 2)
 

Π›ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΡ‹

, Π³Π΄Π΅ x мСньшС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, Π΄Π°ΡŽΡ‚ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.5} ‘. Π€ΠΎΡ€ΠΌΠ°Ρ‚ (i, x, Ρ‚ΠΎΡ‡Π½ΠΎΠ΅, Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎΠ΅, совпадСниС)

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ Π² Π²Ρ‹Π²ΠΎΠ΄Π΅ с Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΌ * Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Π½Π΅Ρ‚ΠΎΡ‡Π½Ρ‹Π΅
цСнности.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_log10.py

i x Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ Π½Π΅Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ нСсоотвСтствиС
- ------------ -------------------- ---------------- ---- --------
 0 1.0 0.000000000000000000 0.000000000000000000
 1 10.0 1.000000000000000000 1.000000000000000000
 2 100,0 2.000000000000000000 2.000000000000000000
 3 1000.0 3.000000000000000000 2.999999999999999556 *
 4 10000.0 4.000000000000000000 4.000000000000000000
 5 100000.0 5.000000000000000000 5.000000000000000000
 6 1000000.0 6.000000000000000000 5.999999999999999112 *
 7 10000000.0 7.000000000000000000 7.000000000000000000
 8 100000000.0 8.000000000000000000 8.000000000000000000
 9 1000000000.0 9.000000000000000000 8.999999999999998224 *
 

log1p () вычисляСт ряд ΠΡŒΡŽΡ‚ΠΎΠ½Π°-ΠœΠ΅Ρ€ΠΊΠ°Ρ‚ΠΎΡ€Π° (СстСствСнный
Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ 1 + x).

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Ρ… = 0,0000000000000000000000001
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ 'x:', x
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ '1 + x:', 1 + x
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'ΠΆΡƒΡ€Π½Π°Π» (1 + x):', math.log (1 + x)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ 'log1p (x):', math.log1p (x)
 

log1p () Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π΅Π½ для Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ x , ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΊΠΈΡ… ΠΊ Π½ΡƒΠ»ΡŽ
ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ компСнсируСт ошибки округлСния
ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ добавлСния.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_log1p.py

Ρ…: 1e-25
1 + Ρ…: 1.0
ΠΆΡƒΡ€Π½Π°Π» (1 + x): 0,0
log1p (x): 1e-25
 

exp () вычисляСт ΡΠΊΡΠΏΠΎΠ½Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (e ** x).

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Ρ… = 2

fmt = '% .20f'
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ fmt% (math.e ** 2)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ fmt% math.pow (math.e, 2)
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ fmt% math.exp (2)
 

Как ΠΈ Π² случаС с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ функциями особого случая, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ
Π΄Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, Ρ‡Π΅ΠΌ эквивалСнт ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния
math.pow (math.e, x).

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_exp.py

7.38905609893064951876
7.38905609893064951876
7,38905609893065040694
 

expm1 () являСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ ΠΊ log1p () ΠΈ вычисляСт e ** x —
1.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Ρ… = 0.0000000000000000000000001

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ x
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.exp (x) - 1
Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ math.expm1 (x)
 

Как ΠΈ Π² случаС с log1p (), нСбольшиС значСния x Ρ‚Π΅Ρ€ΡΡŽΡ‚ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π°
Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ выполняСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_expm1.py

1e-25
0,0
1e-25
 

Π£Π³ΠΎΠ»ΠΊΠΈ

Π₯отя стСпСни Ρ‡Π°Ρ‰Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² повсСднСвных обсуТдСниях
ΡƒΠ³Π»Ρ‹, Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ стандартной Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ измСрСния ΡƒΠ³Π»ΠΎΠ² Π² Π½Π°ΡƒΠΊΠ΅.
ΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°. Π Π°Π΄ΠΈΠ°Π½ — это ΡƒΠ³ΠΎΠ», ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ двумя линиями, ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π²
Ρ†Π΅Π½Ρ‚Ρ€ ΠΊΡ€ΡƒΠ³Π°, ΠΈΡ… ΠΊΠΎΠ½Ρ†Ρ‹ Π½Π° окруТности
ΠΎΠΊΡ€ΡƒΠΆΠ½ΠΎΡΡ‚ΡŒ, разнСсСнная Π½Π° ΠΎΠ΄ΠΈΠ½ радиус.7} ‘. Format (‘ ‘,’ ‘,’ ‘)

для deg, оТидаСмого в [(0, 0),
(30, math.pi / 6),
(45, math.pi / 4),
(60, math.pi / 3),
(90, math.pi / 2),
(180, math.pi),
(270, 3 / 2,0 * math.pi),
(360, 2 * math.pi),
]:
print ‘{: 7d} {: 7.2f} {: 7.2f}’. format (deg, math.radians (deg), оТидаСтся)

Π€ΠΎΡ€ΠΌΡƒΠ»Π° прСобразования: Ρ€Π°Π΄ = Π³Ρ€Π°Π΄ * Ο€ / 180.8} ‘. Format (‘ ‘,’ ‘,’ ‘)
для Ρ€Π°Π΄, ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Π² [(0, 0),
(math.pi / 6, 30),
(math.pi / 4, 45),
(math.pi / 3, 60),
(math.pi / 2, 90),
(math.pi, 180),
(3 * math.pi / 2, 270),
(2 * math.pi, 360),
]:
print ‘{: 8.2f} {: 8.2f} {: 8.2f}’. format (Ρ€Π°Π΄, math.degrees (rad), оТидаСтся)

Π€ΠΎΡ€ΠΌΡƒΠ»Π°: Π³Ρ€Π°Π΄ = Ρ€Π°Π΄ * 180 / Ο€.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_degrees.py

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ градусы Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…
-------- -------- --------
    0,00 0,00 0,00
    0,52 30,00 30,00
    0,79 45,00 45,00
    1,05 60,00 60,00
    1,57 90,00 90,00
    3,14 180,00 180,00
    4,71 270,00 270,00
    6,28 360,00 360,00
 

ВригономСтрия

ВригономСтричСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ ΡƒΠ³Π»Ρ‹ Π² Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅ с Π΄Π»ΠΈΠ½Π°ΠΌΠΈ
Π΅Π³ΠΎ стороны. Они ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°Ρ… с пСриодичСскими свойствами, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ
Π³Π°Ρ€ΠΌΠΎΠ½ΠΈΠΊΠΈ, ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠ΅ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡƒΠ³Π»Π°ΠΌΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ВсС тригономСтричСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚
ΡƒΠ³Π»Ρ‹ Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ….

Учитывая ΡƒΠ³ΠΎΠ» Π² ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΌ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ΅, синус — это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅
Π΄Π»ΠΈΠ½Π° стороны, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡƒΠ³Π»Ρƒ Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Ρ‹ (sin A =
Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² / Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Π°). ΠšΠΎΡΠΈΠ½ΡƒΡ — это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹
сторона, ΠΏΡ€ΠΈΠ»Π΅Π³Π°ΡŽΡ‰Π°Ρ ΠΊ Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Π΅ (cos A = ΠΏΡ€ΠΈΠ»Π΅Π³Π°ΡŽΡ‰Π°Ρ / Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Π°).
А ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ — это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΉ стороны ΠΊ сосСднСй
сторона (Π·Π°Π³Π°Ρ€ A = ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹ΠΉ / смСТный).

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

print 'Градусы Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹, синус, косинус, ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ'
Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ '-------  -------  -------  --------  -------'

fmt = '' .join (['% 7.2f'] * 5)

для градусов Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ (0, 361, 30):
    Ρ€Π°Π΄ = матСматичСскиС Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹ (градусы)
    Ссли deg в (90, 270):
        t = float ('Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒ')
    Π΅Ρ‰Π΅:
        t = math.tan (Ρ€Π°Π΄)
    Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ fmt% (deg, rad, math.sin (rad), math.cos (rad), t)
 

ВангСнс Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ синуса ΡƒΠ³Π»Π°
ΠΊ Π΅Π³ΠΎ косинусу, ΠΈ ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ косинус Ρ€Π°Π²Π΅Π½ 0 для Ο€ / 2 ΠΈ 3Ο€ / 2 Ρ€Π°Π΄ΠΈΠ°Π½,
ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ бСсконСчна.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_trig.py

Градусы Π Π°Π΄ΠΈΠ°Π½Ρ‹ Бинус ΠšΠΎΡΠΈΠ½ΡƒΡ ВангСнс
------- ------- ------- -------- -------
   0,00 0,00 0,00 1,00 0,00
  30,00 0,52 0,50 0,87 0,58
  60,00 1,05 0,87 0,50 1,73
  90,00 1,57 1,00 0,00 ΠΈΠ½Ρ„.
 120,00 2,09 0,87 -0,50 -1,73
 150,00 2,62 0,50 -0,87 -0,58
 180,00 3,14 0,00 -1,00 -0,00
 210,00 3,67 -0,50 -0,87 0,58
 240,00 4,19 -0.10} '. Format (' ',' ',' ')

для x, y Π² [# простых Ρ‚ΠΎΡ‡Π΅ΠΊ
              (1, 1),
              (-1, -1),
              (math.sqrt (2), math.sqrt (2)),
              (3, 4), Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ # 3-4-5
              # ΠΏΠΎ ΠΊΡ€ΡƒΠ³Ρƒ
              (math.sqrt (2) / 2, math.sqrt (2) / 2), # pi / 4 Ρ€Π°Π΄
              (0.5, math.sqrt (3) / 2), # pi / 3 rads
              ]:
    h = math.hypot (x, y)
    print '{: 7.2f} {: 7.2f} {: 7.2f}'. format (x, y, h)
 

Π’ΠΎΡ‡ΠΊΠΈ Π½Π° окруТности всСгда ΠΈΠΌΠ΅ΡŽΡ‚ Π³ΠΈΠΏΠΎΡ‚Π΅Π½ΡƒΠ·Ρƒ == 1.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_hypot.8} '. Format (' ',' ',' ',' ',' ')


для (x1, y1), (x2, y2) в [((5, 5), (6, 6)),
                            ((-6, -6), (-5, -5)),
                            ((0, 0), (3, 4)), Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ # 3-4-5
                            ((-1, -1), (2, 3)), Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ # 3-4-5
                            ]:
    Ρ… = Ρ…1 - Ρ…2
    Ρƒ = Ρƒ1 - Ρƒ2
    h = math.hypot (x, y)
    print '{: 8.2f} {: 8.2f} {: 8.2f} {: 8.2f} {: 8.2f}'. Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (x1, y1, x2, y2, h)
 

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² значСниях x ΠΈ y , Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π²
происхоТдСниС, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π² hypot ().

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_distance_2_points.py

   X1 Y1 X2 Y2 РасстояниС
-------- -------- -------- -------- --------
    5,00 5,00 6,00 6,00 1,41
   -6,00 -6,00 -5,00 -5,00 1,41
    0,00 0,00 3,00 4,00 5,00
   -1,00 -1,00 2,00 3,00 5,00
 

ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°

Ρ‚Π°ΠΊΠΆΠ΅ опрСдСляСт ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ тригономСтричСскиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

для r в [0, 0,5, 1]:
    print 'arcsine (%. 1f) =% 5.2f'% (r, math.asin (r))
    Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ 'arccosine (%. 1f) =% 5.2f'% (r, math.acos (r))
    print 'арктангСнс (%. 1f) =% 5.2f'% (r, math.atan (r))
    Π Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ
 

1,57 ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°Π²Π½ΠΎ Ο€ / 2, ΠΈΠ»ΠΈ 90 градусов, ΡƒΠ³ΠΎΠ» ΠΏΡ€ΠΈ
Ρ‡Ρ‚ΠΎ синус Ρ€Π°Π²Π΅Π½ 1, Π° косинус Ρ€Π°Π²Π΅Π½ 0.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_inverse_trig.py

арксинус (0,0) = 0,00
Π°Ρ€ΠΊΠΊΠΎΠ·ΠΈΠ½ (0,0) = 1,57
арктангСнс (0,0) = 0,00

арксинус (0,5) = 0,52
Π°Ρ€ΠΊΠΊΠΎΠ·ΠΈΠ½ (0,5) = 1,05
арктангСнс (0,5) = 0,46

арксинус (1,0) = 1,57
Π°Ρ€ΠΊΠΊΠΎΠ·ΠΈΠ½ (1,0) = 0,00
арктангСнс (1.0) = 0.6} '. Format (' ',' ',' ',' ')

fmt = '' .join (['{: 6.4f}'] * 4)

для i в диапазонС (0, 11, 2):
    Ρ… = 1 / 10,0
    Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ fmt.format (x, math.sinh (x), math.cosh (x), math.tanh (x))
    
 

Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ косинуса ΠΈ синуса ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΊΡ€ΡƒΠ³,
гипСрболичСский косинус ΠΈ гипСрболичСский синус ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρƒ Π³ΠΈΠΏΠ΅Ρ€Π±ΠΎΠ»Ρ‹.

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_hyperbolic.py

  X sinh cosh tanh
------ ------ ------ ------
0,0000 0,0000 1,0000 0,0000
0,2000 0,2013 1,0201 0,1974
0,4000 0,4108 1,0811 0.7} '. Format (' ',' ')

для x в [-3, -2, -1, -0,5, -0,25, 0, 0,25, 0,5, 1, 2, 3]:
    print '{: 5.2f} {: 7.4f}'. format (x, math.erf (x))
    
 

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ erf (-x) == -erf (x).

 $ ΠΏΠΈΡ‚ΠΎΠ½ math_erf.py

  x erf (x)
----- -------
-3,00 -1,0000
-2,00 -0,9953
-1,00 -0,8427
-0,50 -0,5205
-0,25 -0,2763
 0,00 0,0000
 0,25 0,2763
 0,50 0,5205
 1,00 0,8427
 2,00 0,9953
 3,00 1,0000
 

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ функция ошибок — 1 — erf (x).

 ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ '{: ^ 5} {: 7}'.7} '. Format (' ',' ')

для x в [-3, -2, -1, -0,5, -0,25, 0, 0,25, 0,5, 1, 2, 3]:
    print '{: 5.2f} {: 7.4f}'. format (x, math.erfc (x))
    
 
 $ python math_erfc.py

  Ρ… erfc (Ρ…)
----- -------
-3,00 2,0000
-2,00 1,9953
-1,00 1,8427
-0,50 1,5205
-0,25 1,2763
 0,00 1,0000
 0,25 0,7237
 0,50 0,4795
 1,00 0,1573
 2,00 0,0047
 3,00 0,0000
 

Π‘ΠΌ. Π’Π°ΠΊΠΆΠ΅

ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°
Бтандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для этого модуля.
АрифмСтика с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ запятой IEEE Π² Python
Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ Π² Π±Π»ΠΎΠ³Π΅ Π”ΠΆΠΎΠ½Π° ΠšΡƒΠΊΠ° ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ особыС цСнности
Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² Python.
SciPy
Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ для Π½Π°ΡƒΡ‡Π½Ρ‹Ρ… ΠΈ матСматичСских
расчСты Π½Π° Python.

.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *