2015-09-05 4 views
1

У меня есть основной вопрос ниже, чтобы помочь мне разобраться в функциях в python (следуя инструкциям LPTHW в prep для uni). Может ли кто-нибудь объяснить синтаксис ниже, и правильно ли я с моими предположениями?Основные сведения о функциях python

def print_two_again(arg1, arg2): 
    print "arg1: %r, arg2: %r" % (arg1, arg2) 

print_two_again("Steve","Testing") 

Я понимаю, что print_two_again это имя функции, но какова цель имея arg1, arg2 в круглых скобках рядом с ним? Должно ли это позвонить "steve""testing" в команду печати ниже? или эти строки направляются в команду print?

ответ

11

, что является целью, имеющим arg1, arg2 в круглых скобках следующего к нему?

В этом случае arg1 и arg2называются аргументами. Аргументы позволяют функциям принимать входы, которые предполагается использовать для выполнения задачи.Входы предоставляются вызывающими абонентами.

Например, в школе по математике, вы may've уже видели такие вещи, как z = f(x, y) где функция с именем е определяется как f(x, y) = x + y. Это та же концепция на языке программирования.

Он также позволяет вам писать более общие, гибкие и многоразовые коды. Например, вам не нужно писать много разных версий функции для выполнения одной и той же задачи с несколько разными результатами, избегая ситуаций, таких как add2(x, y) = x + y и add3(x, y, z) = x + y + z, и так далее. Вы можете просто сделать что-то вроде:

def sum(values): # values is of type 'list' 
    result = 0 
    for value in values: 
     result += value 
    return result 

И называть это так:

total = sum([1, 2, 3, 4, 5, 6, 7]) # a list of any length with numbers

Или так:

total = sum([1, 2])

Как много аргументов функция потребности будет зависеть о том, что ему нужно делать, и о других факторах.

Update

Что меня смущает, это print_two_again ("Стив", "тестирование"), что является это называется, и его цель?

Линия print_two_again("Steve","testing") является вызов функции (т.е. вызова функции). Это заставляет программу «прыгать» в тело функции с именем print_two_again и начать выполнение кода в ней.

Часть ("Steve","testing") - это аргументы, передаваемые функции в качестве входных данных. Это аргументы positional, что в основном означает, что они получают «сопоставление» с именами arg1 и arg2 на основе порядка, в котором вы предоставили их при вызове функции.

Например, рассмотрим функцию f(x, y) = x - y. Если эта функция называется z = f(3, 4), тогда аргумент по имени x получит значение 3 и y будет 4, чтобы вернуть -1. Если вы отмените аргументы в вызове, тогда у вас будет x=4 и y=3, и вместо этого он вернет 1. То же самое относится к аргументам в предоставленной вами функции.

Это означает, что порядок аргументов в вызове функции важно.

Язык Python, как и многие другие, уже имеет набор встроенных функций. Примером этого является функция с именем print. Вы можете получить много информации, используя команду pydoc (pydoc3, если вы используете Python3, который я бы рекомендовал).Например, команда pydoc3 print производит следующую документацию:

Помощь по встроенной функции печати в модуле: встроенные команды

печати (...) печать (значение, ..., Сентябре =» », конец = '\ п', файл = sys.stdout, вровень = False)

Prints the values to a stream, or to sys.stdout by default. 
Optional keyword arguments: 
file: a file-like object (stream); defaults to the current sys.stdout. 
sep: string inserted between values, default a space. 
end: string appended after the last value, default a newline. 
flush: whether to forcibly flush the stream. 

Обратите внимание, что это документация Python3. Документация Python2 будет немного отличаться.

Существует прямая корреляция между вашим пониманием функций, как видно на ваших курсах математики в школе, и функциями, которые видны на языке программирования. Это связано с тем, что математика является частью основополагающей основы компьютерных наук и языков программирования, среди прочего (например, анализ алгоритмов).

2

Какова цель наличия arg1, arg2 в скобках рядом с ним?

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

def print_two_again(arg1, arg2): 
    print "arg1: %r, arg2: %r" % (arg1, arg2) 

В первых двух строках, начинающихся с def, необходимо определить функцию. Он что-то делает. В вашем случае печатает два аргумента, которые он принимает.

print_two_again("Steve","Testing") 

На третьей строке вы на самом деле называете эту функцию. Когда вы вызываете эту функцию, вы указываете функции передать "Steve" и "Testing" аргументы в определение функции.

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

print_two_again("First","Call") 
print_two_again("Second","Call") 

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

Теперь давайте посмотрим на вторую строчку, которая, вероятно, смущает вас.

print "arg1: %r, arg2: %r" % (arg1, arg2) 

print является встроенной функцией в Python. Что выше линии делает здесь, чтобы пройти arg1 и arg2 аргументов и распечатать их с форматом "arg1: %r, arg2: %r"

+0

Спасибо, Семих. Меня смущает print_two_again («Стив», «тестирование»), что это называется и его цель? – NZSteve

1

Какова цель наличия arg1, arg2 в скобках?

Здесь Защиту print_two_again(arg1, arg2): функция и arg1, arg2 называется аргумент и функции те две переменных и print_two_again функции необходимы два аргумента.

Что меня смущает print_two_again («Стив», «тестирование»)?

Когда вы звоните print_two_again("Steve","Testing"), arg1 receive Steve and arg2 receive Testing.

Если вы хотите, чтобы print, внутренний (ie. in between "....."), размещайте любой текст в виде простого текста, а %r используйте для улова соответствующее значение переменной.

Если вы хотите, вы можете переписать так:

print "Argument 1: %r, Argument 2: %r" % (arg1, arg2) 

Вы можете изменить плоскость текста, но список переменных следуют имя которого вы указываете первым.

Смежные вопросы