Основные тезисы
1. С помощью параметров Вы можете передавать информацию в функции. Ваши функции могут иметь столько параметров, сколько Вам нужно.
Пример функции с одним параметром:
def hi(name):
print("Hi,", name)
hi("Greg")
Пример функции с двумя параметрами:
def hi_all(name_1, name_2):
print("Hi,", name_2)
print("Hi,", name_1)
hi_all("Sebastian", "Konrad")
Пример функции с тремя параметрами
def address(street, city, postal_code):
print("Your address is:", street, "St.,", city, postal_code)
s = input("Street: ")
p_c = input("Postal Code: ")
c = input("City: ")
address(s, c, p_c)
2. Вы можете передавать аргументы в функции, используя следующие техники:
- позиционная передача аргументов , в которой порядок передачи аргументов имеет значение (Пример 1)
- передача аргументов по имени, в которой порядок переданных аргументов не имеет значения (Пример 2)
- сочетание позиционной передачи аргументов с передачей по имени (Пример 3).
Пример 1
def subtra(a, b):
print(a - b)
subtra(5, 2) # outputs: 3
subtra(2, 5) # outputs: -3
Пример 2
def subtra(a, b):
print(a - b)
subtra(a=5, b=2) # outputs: 3
subtra(b=2, a=5) # outputs: 3
Пример 3
def subtra(a, b):
print(a - b)
subtra(5, b=2) # outputs: 3
subtra(5, 2) # outputs: 3
Важно помнить, что позиционные аргументы не должны следовать за именованными. Поэтому, если Вы попытаетесь запустить следующий код:
def subtra(a, b):
print(a - b)
subtra(5, b=2) # outputs: 3
subtra(a=5, 2) # Syntax Error
Python не позволит вам сделать это, сигнализируя об ошибке SyntaxError
.
3. Вы можете использовать технику передачи аргументов по имени, чтобы предварительно определить значение для данного аргумента:
def name(first_name, last_name="Smith"):
print(first_name, last_name)
name("Andy") # outputs: Andy Smith
name("Betty", "Johnson") # outputs: Betty Johnson (the keyword argument replaced by "Johnson")
Упражнение 1
Что выведет следующий код?
def intro(a="James Bond", b="Bond"):
print("My name is", b + ".", a + ".")
intro()
Упражнение 2
Что выведет следующий код?
def intro(a="James Bond", b="Bond"):
print("My name is", b + ".", a + ".")
intro(b="Sean Connery")
Упражнение 3
Что выведет следующий код?
def intro(a, b="Bond"):
print("My name is", b + ".", a + ".")
intro("Susan")
Упражнение 4
Что выведет следующий код?
def add_numbers(a, b=2, c):
print(a + b + c)
add_numbers(a=1, c=3)