2015-12-30 2 views
0

Я начал изучать python (2.7), используя LearnPythonTheHardWay, несколько дней назад, и теперь, когда я изучаю функции, я потерял. Может ли кто-нибудь объяснить мне, как они работают (если возможно, с одним примером, а другой - более сложным)? И если вы знаете несколько советов, которые помогут мне в моем путешествии, я был бы признателен. Спасибо. PS: У меня нет каких-либо знаний о программировании. Я начинаю с нуля.Проблема с функциями python

, например (простой один (из книги)):

def secret_formula(started): 
    jelly_beans = started * 500 
    jars = jelly_beans/1000 
    crates = jars/100 
    return jelly_beans, jars, crates 

start_point = 10000 
beans, jars, crates = secret_formula(start_point) 

print "With a starting point of: %d" % start_point 
print "We'd have %d beans, %d jars, and %d crates." % (beans, jars, crates) 

Как jelly_beans стать фасоль? Что такое (начато) для? ...

+2

Замечательно, что вы изучаете Python, но это действительно неспецифический вопрос ... если у вас есть вопросы о трудностях с конкретными примерами кода, которые были бы лучше. – jumbopap

+2

Какую часть функции вы не понимаете? –

+1

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

ответ

2

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

def square(num): 
    return num**2 

Это returns (важное ключевое слово) значение num**2, что Num квадрат так ** является экспоненцирование в Python. Однако, вы можете иметь что-то внутри определения, которое ничего не возвращает (никакого реального выхода). Например:

def square(num): 
    squared = num**2 

на самом деле ничего не вернет. Но это все еще действительная функция.

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

def fibonnaci(n=1): 
    if n in [1,2]: 
     return 1 
    else: 
     return fibonnaci(n-1)+fibonnaci(n-2) 
+1

отличный урок репетитора – Gang

2

На этой линии:

beans, jars, crates = secret_formula(start_point) 

Это присвоение возвращаемого значения secret_formula на бобах.

Внутри secret_formula создается переменная jelly_beans, которая будет существовать только в том случае, если она находится внутри secret_formula. После выполнения secret_formula результат, определяемый return jelly_beans, jars, crates, может быть назначен новым переменным. В этом случае он присваивает эти переменные beans, jars, crates

Итак, бобы равны jelly_beans, банки равны баночкам и ящикам, равным ящикам.

+1

Клейтон, ваше объяснение супер, я буду голосовать за вас. – Gang

1

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

Рассмотрим математическое выражение:

f(x) = x + 2 

В этом случае f(x) добавит 2 к значению x.

поэтому, f(0) = 0 + 2, дает 2. Аналогичным образом для других значений x.

when x = 3....f(3) = 5 
when x = 5....f(5) = 7 

Таким образом, для входного значения x, он будет производить выходной сигнал, который является вычисление выражения x + 2.

В питоне, это выражение будет что-то вроде этого:

def f(x):    # here x is the input value 
    output = x + 2  #calculates the expression using x 
    return(x+2)  #and we return the value 

предположит, что мы хотим найти значение для x = 3. это будет: f(3)

f(3) теперь предоставит вам 5, как указано выше.

Мы можем сохранить это значение в другой переменной,

y =f(3) 

Здесь y сохраняет значение, возвращенное нашей функции при передаче к нему 3. Таким образом, у будет 5.

В вашем примере,

def secret_formula(started):   #here we have **started** instead of x 
    jelly_beans = started * 500  #bunch of calculations 
    jars = jelly_beans/1000 
    crates = jars/100 
    return jelly_beans, jars, crates #returns the calculated value 

ниже этого,

start_point = 10000 
beans, jars, crates = secret_formula(start_point) #what will the output be , if I give 1000 to secret_formula .. ie... secret_formula(1000) 

Теперь secret_formula функция возвращает три выхода

return jelly_beans, jars, crates 

Мы присваиваем эти выходы beans, jars, crates в соответствующем заказе.

Теперь beans будет иметь значение, которое имеет jelly_beans, так далее ...

Так что случилось с jelly_beans? Грубо говоря, переменные, которые используются внутри функции, доступны только в себе. Рассматривайте их как промежуточные значения, которые отбрасываются после использования. Ознакомьтесь с правилами и областями действия.

Функция вернет некоторые значения, которые мы теперь сохраняем в других переменных.

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

Рассмотрим, случайный сценарий:

def printNow(): 
    print("Hiwatsup, blah blah blah ") 
    #some insane calculations 
    print("Hiwatsup, blah blah blah ") 
    #more random things. 

Теперь, когда вы хотите, чтобы сделать все эти вещи, вам просто нужно положить printNow(). Вам не нужно повторять все это!

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