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”