GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Material
  • Приступая к работе
  • Простое рисование с помощью черепашки
  • Переменные
  • Циклы
  • Функции, определяемые пользователем
  • Функции с параметрами
  • Условные операторы
  • Условные циклы
  • Логические операторы
  • Что дальше?
  • Лицензия

This view

  • Original page
  • New address

GeezerVison is showing opentechschool.github.io — Функции с параметрами — Introduction to Programming with Python

Python for Beginners 2015.10.02
  • Material
      • Приступая к работе
      • Простое рисование с помощью черепашки
      • Переменные
      • Циклы
      • Функции, определяемые пользователем
      • Функции с параметрами
      • Условные операторы
      • Условные циклы
      • Логические операторы
      • Что дальше?
      • Лицензия
  • Chapter
      • Функции с параметрами
        • Введение
        • Функция с параметрами для шестиугольника произвольного размера
          • Упражнение
          • Решение
        • Функция с несколькими параметрами
          • Упражнение
          • Решение
          • Дополнительно
  • Previous
  • Next
  • Languages
    • English
    • Deutsch (German)
    • Español (Spanish)
    • русский (Russian)
    • 한국인 (Korean)
    • Română (Romanian)

Функции с параметрами¶

Введение¶

Мы уменьшаем количество нашего кода и добавляем функции, что бы избежать повторений - это называется рефакторинг. Рефакторинг крайне полезен. Ведь функции, которые мы определили не очень “гибкие”. Необходимые значения заданы внутри функций и если мы захотим изменить угол или дистанцию - нам прийдеться писать новую функцию. Наша функция для рисования шестиугольников может рисовать шестиугольники только одного размера!

Поэтому у нас должна быть возможность задавать параметры функции, которые также называют аргументами. В таком случае переменные в функции могут принимать разные значения кождый раз, когда мы вызываем нашу функцию:

Вспомни, как мы описали функцию line_without_moving() в предыдущей главе:

def line_without_moving():
    turtle.forward(50)
    turtle.backward(50)

Мы можем улучить её используя параметр:

def line_without_moving(length):
    turtle.forward(length)
    turtle.backward(length)

Параметр функции действует как переменная, но только внутри функции, в которой мы его объявили. Теперь можно вызвать новую функцию со значением, которое необходимо ей передать:

line_without_moving(50)
line_without_moving(40)

Мы пользовались функциями с параметрами еще в самом начале учебника используя turtle.forward(), turtle.left() и т.д.

И мы можем вставить столько аргументов (или параметров), сколько захотим, дав им разные имена и разделив запятыми:

def tilted_line_without_moving(length, angle):
    turtle.left(angle)
    turtle.forward(length)
    turtle.backward(length)

Функция с параметрами для шестиугольника произвольного размера¶

Упражнение¶

Напиши функцию для рисования шестиугольника, которая позволяет выбирать его размер при вызове.

Решение¶

def hexagon(size):
    for _ in range(6):
        turtle.forward(size)
        turtle.left(60)

Функция с несколькими параметрами¶

Упражнение¶

Напиши функцию для рисования фигур с произвольным количеством (т. е. >2) сторон любой длины и проверь её в деле.

Пример рисования фигур с помощью этой функции:

_images/shapes.png

Совет

Сумма внешних углов любой фигуры всегда равна 360 градусов!

Решение¶

def draw_shape(sides, length):
    for _ in range(sides):
        turtle.forward(length)
        turtle.right(360 / sides)

Дополнительно¶

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

For instance, you could create a shape drawing function which turned one way or another depending on which turtle function you passed to it - turtle.left or turtle.right.

Попоробуй, сможешь ли ты это сделать!

Примечание

Passing a function (e.g turtle.left) is different than calling it, which would instead be written turtle.left(45).

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.