Swift-Python (34 части серии)
Это продолжение Упражнение 12 A (функция и его определение)
Функция, которая возвращает значение
До сих пор мы написали функции, которые печатают значения на экран. Мы также можем вернуть значение из функции, назначить это значение переменной и использовать его в будущем.
Пример 1.
Ранее, когда мы написали Calc_area Функция, она распечатает строку, детализируя вход и вывод. Скажем, мы заинтересованы только в вычисленном результате, мы можем вернуть вычисленный результат с помощью вернуть ключевое слово, а затем вычисленное значение. Снаппин ниже модифицирован только для возврата компьютеров Calc_area Отказ
def calc_area(base, height):
return 0.5 * base * height
# take the base and height from the user
base = float(input("Enter base: "))
height = float(input("Enter height: "))
# call the function here and pass base and height
# to it as the base and height are required
# the value is then assigned to a variable, `area`
area = calc_area(base, height)
# We then make use of the `area`
print(
f"The area of a triagle of base, {base} and height, {height} is {area}")
Calc_area Теперь не связан с печатью, удобным для пользователя текстового повествования, какой вход и выход был вовлечен. Это оставлено в руках пользователя, чтобы решить. Это облегчает писать модульные тесты для Calc_area А также импортировать его как скрипт в других программах.
Пример 2.
Это функция, которая принимает список в качестве аргумента, и их сортирует его от самого низкого до самого высокого. Как работает эта работа сортировки?
Скажи, что нам дают список размеров, n Числа, используя две петли, вложенные на самом деле. Первый петли петли через список n - 1 раз. Второй делает, N - 2 раз. Во второй цикле мы проверяем, если первое значение превышает второго значения. Если это, мы своп ценности И тогда мы сравниваем второе место с третьей, а затем третьим и четвертым и так далее, пока мы не достигнем конца списка. Первый петли перемещается (шаги 1), то процесс запускается снова.
def sort_func(nums):
"""
This function takes a list as an argument and
returns a sorted version of it
"""
n = len(nums)
for i in range(n):
for j in range(1, n):
if nums[j - 1] > nums[j]:
# swap
nums[j - 1], nums[j] = nums[j], nums[j - 1]
return nums
print(sort_func([6, 3, 2, 4, 1]))
print(sort_func(['w', 't', 'a', 'i']))
На этой линии nums [j - 1], [j], nums [j - 1] мы поменяем значения здесь, если nums [j - 1]> nums [j] Отказ Это «техника», используемая для замены в Python без внедрения переменной помощи.
Мы могли бы сделать,
temp = nums[j - 1] nums[j - 1] = nums[j] nums[j] = temp
Функция со многими аргументами
Мы пропустили отдельные значения (данные) или список в нашу функцию в качестве аргументов до сих пор. Теперь, скажем, мы хотели бы пройти несколько аргументов в функцию (мы все еще можем использовать список – вид), мы вынуждены дать функцию многочисленные параметры на создание, но есть простой подход в Python.
Пример 3.
Функция, которая принимает несколько строк в качестве аргумента и возвращает количество символов в каждом аргументе.
def many_args(s1, s2, s3, s4, s5):
print(len(s1))
print(len(s2))
print(len(s3))
print(len(s4))
print(len(s5))
many_args('sandy', 'jude', 'mani', 'desmond', 'peter')
Мы сделали это правильно? Нет. Что если мы хотим пройти шестой аргумент? Мы должны обновить many_args функция. Любая другая программа, которая использовала many_args Функция должна обновить количество распущенных аргументов. Мы не хотим этого. Мы никогда не должны писать такие функции. Это мнение и выбор стиля.
* args и ** kwargs
В следующем упражнение Мы обсудим больше на структурах данных в Python, такие как список, словарь, набор и кортеж в некоторые детали. Эти структуры данных помогают в организации и управлении данными. Мы наткнулись на слово, уравновешенные. Ранее упомянутые структуры данных также позволяют итерации.
Список, кортеж, набор и словарь вкратце
В этом контексте мы заинтересованы в структурах данных в качестве аргументов, поэтому их должно быть достаточно.
- Список – это запятая набор данных, разделенных квадратными скобками,
[data1, data2, ...]где данные могут иметь любой тип данных или структуру данных. Это подразумевает, что мы можем иметь список, в котором есть другие списки в качестве данных. - Tupple это просто список, но ограничено скобками,
(data1, data2, ...) - Набор похоже на список, но без дубликатов, разграниченных в курсовых скобках
{data1, data2, ...}Отказ - Словарь – это параметры ключевой пары структуры данных. До сих пор списка, кортеж и набор проиндексированы (перечисляются) от 0 до
nОтказ Для словаря мы используем ключ для доступа к значению.{Key1: Value2, Key2: Value2, ...}Отказ Мы можем закрепить ключи, значения и ключи и значения. Словарь больше похоже на множество, с уникальностью в клавишах.
* args.
Мы обсудили передачу нескольких данных в функцию в качестве аргументов, и мы увидели некоторые ограничения.
* args означает набор данных, таких как список, кортеж или набор. * args Это преобразование, посредством чего имя переменной, args предшествует звездочкой, * Отказ Это * Это делает переменную коллекцию данных или итеративным. Количество данных в переменной не указано. Это решает проблему нам пришлось обновить функцию, когда мы хотим пройти другие данные в функцию. Итак, * args может быть * uvere_var_name Отказ Один из ключевых концепций здесь, ограничивая количество параметров. Не более четырех и эти четыре должны быть названы аргументами, если что-то подобное происходит.
Пример 4.
Мы будем реализовать Пример 3 Но на этот раз используя * args концепция.
def many_args(*s):
for i in s:
print(i, , len(i))
many_args(
'sandy', 'jude', 'mani', 'desmond', 'peter',
'sandy', 'jude', 'mani', 'desmond', 'peter',
'sandy', 'jude', 'mani', 'desmond', 'peter')
Мы смогли пройти несколько аргументов many_args Но наша функция просто имеет * S как параметр.
Передача списка в функцию, которая принимает * args
Мы также можем пройти список в many_args.
largs = ['candy', 'foo', 'bar', 'swift', 'python',
'ryder', 'horse', 'rubber-duck', 'pizza']
many_args(largs)
Но каков был вывод? Попробуй это и посмотри. Что вы думаете, что случилось (посмотрите на пример 4)? Как мы это исправить?
Составьте аргумент списка как * list_arg
Это «Candy», «Foo», «бар», «SWIFT», «Python», «Ryder», «Лошадь», «Резина-утка», Был выходом из примера 5. Что это значит, что мы передали один аргумент на many_args И этот аргумент представляет собой список из девяти строк. Мы не проходили девять строк в качестве аргумента для many_args Отказ
Пройти список или кортеж как * args , нам нужно только предшествовать имя переменной звездочкой. Попробуйте и посмотрите сами.
many_args(*largs) # output of *largs # candy = 5 # foo = 3 # bar = 3 # swift = 5 # python = 6 # ryder = 5 # horse = 5 # rubber-duck = 11 # pizza = 5
** kwarg
** Kwarg Стенды за аргументы ключевых слов. ** Kwarg в основном * args , но мы передаем ключи наряду с ценностями. Таким образом, значения доступны ключами. Это как словарь.
Пример 5.
def many_args(**s):
for key, value in s.items():
print(f"{key}: {value}, has {len(value)} chars")
many_args(title="Swift python", author="Otu Michael",
hobby="Staring at the screen")
Теперь мы можем получить доступ к пропущенным значениям, с их ключами.
Передача данных как словарь
Мы говорили в процессе, что словарь является структурой данных пары ключевой пары. Рассмотрим фрагмент ниже, где мы создаем словарь.
dict_data = {
'title': "Swift python",
'author': "Otu Michael",
'hobby': "Staring at the screen"
}
Давайте пройдем * * Dict_data во многих_args
many_args(**dict_data) # output # title: Swift python, has 12 chars # author: Otu Michael, has 11 chars # hobby: Staring at the screen, has 21 chars
Что произойдет, когда ** опущен? Попробуй это. Добавляет ключ, решить проблему? Что вы заметили?
Аргументы по умолчанию
Так что, по вашему мнению, что произойдет, когда мы не передам аргумент к функции, которая принимает аргумент?
Конечно ошибка. Мы хотим, чтобы наши функции функционируем с данными по умолчанию, чтобы функция предположила (использовать) это значение, когда ни один не будет передан.
Пример 6.
Давайте воспользуемся Calc_area функция. Мы будем назначать значение по умолчанию к параметрам.
def calc_area(base=1, height=1):
return 0.5 * base * height
# passed no args
print(calc_area()) # 0.5
# passed base but not height
print(calc_area(base=12)) # 0.6
# passed height but not base
print(calc_area(height=14)) # 0.7
Здесь параметры по умолчанию 1.
Примечание
- Вы можете сделать
umy_nameТогда звоните,uvere_name ().Эта будет работать так же, какfunc_name ()
Swift-Python (34 части серии)
Оригинал: “https://dev.to/otumianempire/python3-programming-exercise-12-b-1172”