Оглавление

Как создать пользовательскую функцию?

Как вызвать пользовательскую функцию?

Как вернуть значение из функции?

Как создать функцию с аргументами?

Области видимости. Как работают локальные переменные?

Как использовать библиотеку random

Способы импорта

Функция — объект (типа function), который принимает аргументы и возвращает значение. Есть встроенные (или стандартные) функции, напримeр sum или print.

Аргументы — всё, что передается в функцию. Например, в print(message) message — это аргумент функции.

Позиционные аргументы — это обычные аргументы. Например, при вызове round(1.333, 2) 1.333 — это первый аргумент функции, а 2 – второй.

Именованные аргументы — аргументы, которые передаются с именем. Например, при вызове print(sep=" - ", end = " ") sep и end — именованные аргументы.

Как создать пользовательскую функцию?

1 Напишите def.

2 Придумайте имя функции.

3 Откройте скобки, закройте, напишите двоеточие.

4 Дальше пишите, что хотите, с отступом.

5 После функции поставьте две пустые строки.


                    
def say_something():
	print("something")
                

Как вызвать пользовательскую функцию?

1 Напишите имя функции.

2 Поставьте пару скобок.


                    
def say_something():
	print("something")

say_something()
                

Как вернуть значение из функции?

1 Напишите return в конце функции.

2 Напишите, что хотите вернуть.

3 При вызове функции запишите результат в переменную или выведите.


                    
def count_something():
	a = 24
	return 24

# или

def count_something():
	a = 24
	return a

result = count_something()
                

Как создать функцию с аргументами?

1 Перечислить аргументы внутри скобок в первой строке.

2 Вызвать функцию, указав аргументы.

3 Внутри функции аргументы превращаются в переменные.


                    
def count_something(a):
	
  result = a*2
	return result

count_something(100)
                

Области видимости. Как работают локальные переменные?

Когда мы объявляем переменную в функции, она видна только в этой функции. Переменные за функцией видны в функции.

А теперь давайте разбираться на примере:


                    
a = 3

print("Global a = ", a)

def fun():
    a = 4
    print("Local a = ", a)

fun()

print("Global a = ", a)
                

Но функция может видеть глобальные переменные.

Вот пример без объявления переменной а в функции:


                    
a = 3
print("Global a = ", a)


def fun():
    print("Local a = ", a)


fun()

print("Global a = ", a)
                

Как использовать библиотеку random

Получение случайного числа


                    
import random

print(random.randint(0, 5))

# Выведет 1 или 2 или 3 или 4 или 5 — обе границы диапазона включены
                

Получение выборки из последовательности


                    
import random

items = [1,2,3]
items = random.sample(items, 2)

print(items)

# Вернет [1,2] или [1,3] или [2,1] или [2,3] или [3,1] или [3,2] 
                

Получение одного элемента из последовательности


                    
import random

items = [1,2,3]
items = random.choice(items)

print(items)

# Вернет 1 или 2 или 3
                

Перемешивание списка


                    
import random

items = [1,2,3]

# Обратите внимание, метод ничего не возвращает, он меняет исхож=дный список!
random.shuffle(items)

print(items)

# Вернет [1,2,3] или [1,3,2] или [2,1,3] или [2,3,1] или [3,1,2] или [3,2,2] 
                

Способы импорта

Импорт модуля или пакета


                    
import random

r_1 = random.choice([1,2,3])
print(r_1)
                

Импорт объектов из модуля или пакета


                    
from random import choice, shuffle


r_1 = choice([1,2,3])
print(r_1)
                

Использование алиасов (псевдонимов)


                    from random import choice as random_choice  

r_1 = random_choice([1,2,3])
print(r_1)

# Вернет 1, 2 или 3
                

Оглавление

### Как сделать аргумент опциональным?

Как передать любое количество аргументов? Что такое *args ?

Как корректно писать функции по PEP 8?

### Как сделать аргумент опциональным?

Опциональные аргументы — позиционные аргументы в функции, которые можно передавать, а можно и не передавать.


                    
round(4.62)
round(4.62, 1)
#           |
#  Опциональный аргумент
                

Значение по умолчанию — указание дефолтного значения прямо в списке аргументов. Если у аргумента указано значение по умолчанию, он становится опциональным.


                    
def check(prices, tip = 10  ):
#                        |
#              Значение по умолчанию
	sum_ = sum(prices)
  total = sum_ * ( 100 + tip ) / 100
return total
                

Как передать любое количество аргументов? Что такое *args ?

Мы можем принимать любое количество аргументов, если при попадании внутрь функции они превращаются в список. Внутрь функции можно передавать объекты любого типа.


                    
def new_sum(*nums):
#             |
#  Запакованные аргументы
  sum = 0
  for n in nums:
    sum += n
  return sum

print(new_sum(1, 1, 1, 1, 1))
                

Можно передавать вместе и обычные аргументы, и аргументы *args.


                    
def remove_from_string(string, *symbols_to_remove):

  for symbol in symbols_to_remove:
    string = string.replace(symbol,"")
  return string

remove_from_string("О! Смотри, можно удалить все знаки препинания сразу?", "?", "!", ",", ".", "–")
                

Как корректно писать функции по PEP 8?

Функции называются маленькими буквами с подчеркиваниями, в snake_case


                    
def get_installment():
                

После декларации функций ставится два переноса строки.


                    
def new_sum(*nums):

sum = 0

for n in nums:

sum += n

return sum

# раз пустая строка

# два пустая строка

new_sum(5, 7, 8, 11)    # а здесь вызов функций
                

Аргументы разделяются запятой с пробелом.


                    
def any(arg1, arg2, arg3):
    # отлично 
    pass
                

Если есть значения по умолчанию, равно не окружается пробелами.


                    
# Хорошо
def precheck(prices, tip=10):
                

Если имя аргумента конфликтует с зарезервированным словом, ставим в конце андер (нижнее подчеркивание).


                    
def any_func(class_, try_, finally_)
                

Документировать функции полезно, это можно сделать с помощью """ , такие строки называются docstring или докстринги.


                    
def remove_from_string(string, *symbols_to_remove):
  """Удаляет символы перечисленные после первого аргумента  """

  for symbol in symbols_to_remove:
    string = string.replace(symbol,"")
  return string


remove_from_string.__doc__
                

© 2023 Все права защищены