2013-10-08 5 views
1

최근에 프로그래밍을 시작했고 파이썬으로 시작했습니다. 내 질문은 : 어떻게 다른 함수에서 함수의 결과를 사용할 수 있습니까? 함수의 반환 값 사용

def eklid(p, a, b,): 
    x = [1, 0] 
    y = [0, 1] 
    r = [a, b] 
    q = [0] 
    n = 0 
    while r[n+1] != 0: 
     q.append(r[n] // r[n+1]) 
     r.append(r[n] % r[n+1]) 
     x.append(x[n] - x[n+1] * q[n+1]) 
     y.append(y[n] - y[n+1] * q[n+1]) 

     if p == 0: 
      print(r[n], "=", r[n+1], "*", q[n+1], "+", r[n+2]) 
     elif p == 1: # extended print 
      print(r[n+2], "\t", x[n+2], "\t", y[n+2], "\t", r[n+2], "=", a, "*", x[n+2], "+", b, "*", y[n+2]) 
     elif p == -1: 
      k =1 
     else: 
      print("wrong input") 
     n += 1 
    return x, y, r, q, n, 

나는이 기능 eklid()을하고 난이 기능에에서 xr를 사용하려면 :

def cong_solv(x, r, b,): 
    result = x/r 
    int_result = int(result) 
    return int_result 

내가 어떻게 할 수 있습니까?

답변

2
# Here, a=x, b=y, c=r, d=q, e=n 
a, b, c, d, e = eklid(h, i, k) 

# Assuming based on your function definitions you want the 
# same value as the third argument 
final_result = cong_solv(a, c, k) 

반환 값은 eklid에서 가져 와서 변수에 저장합니다. 다음 변수를 사용하여 다음 함수를 호출합니다.

물론 실제 코드에서는이 예제에서 사용한 것보다 더 나은 varialbes를 지정해야합니다. 의도적으로 변수를 함수 내부와 같은 이름으로 부르지 않아도된다는 것을 보여줍니다.

2

한 가지 방법은 cong_solv() 함수 내부에서 eklid() 함수를 호출하는 것입니다.

def cong_solv(x, r, b): 
    p = "foo" 
    b = "bar" 
    x, y, r, q, n = eklid(p, a, b) 

    result = x/r 
    int_result = int(result) 
    return int_result 
-1

유사한 튜플 (X, Y, R ...) 또는 배열로 복귀

  1. How do you return multiple values in Python?에 각각 튜플/배열에 할당이 뭔가 같이 작동한다.
  2. 클래스 변수에 할당하고 두 개 이상의 변수를 반환 할 때, 파이썬에서 그들에게
0

에 액세스하거나, 그것은 튜플을 반환합니다. 값 (returned_value [0], returned_value [1])을 사용하여 값을 검색하거나 Mike Driscoll이 말한 튜플 (a, b, c, d = eklid (h, i, k))의 압축을 풀 수 있습니다.

나는 두 개의 downvotes를 얻었으므로 나는 더 나은 (희망) 설명을 드리겠습니다. 두 개 이상의 값을 반환 할 때마다 tuple을 반환합니다.

def my_function(): 
    a = 10 
    b = 20 
    return a, b 

print type(my_function()) # <type 'tuple'> 

그러나 당신은 단지 하나 개의 값 반환 할 경우 : 그래서 당신이 당신의 값을 사용하려는 경우

def my_function(): 
    a = 10 
    return a 

print type(my_function()) # <type 'int'> 

을 수행 할 수 있습니다 :이

a, b = my_function() 

같은

의 포장을 풀고 튜플 값 이렇게하면 my_function 내에서 반환하는 순서와 동일한 순서로 반환 값을 얻을 수 있습니다. 다른 기능을

a, b, c = eklid(10, 20, 30) # it will return a tuple 

을 그리고 전화 :

코드를 재 작성, 당신은 간단하게 할 수있는

cong_solv(a, b, 20) 

을 내 솔직한 의견에 나는 dict을 반환합니다. 당신의 값에는 키 이름이 있기 때문에 dict로 명시 할 수 있습니다.당신의 eklid 리턴 기능 내부

:

return d # d = {"what_x_means": x, 
     #  "what_y_means": y, 
     #  "what_r_means": r, 
     #  "what_q_means": q, 
     #  "what_n_means": n} 

그리고 그 키에 대한 검색 :

d["what_x_means"] 
d["what_r_means"] 
+0

어떤 이유 downvote에? 나는 튜플을 반환한다고 처음으로 말한 사람이다. OP는 그런 것을 몰랐다. 나는 그것이 그의 질문의 목표라고 생각한다. –

+1

답변을 upvotes 가지고 답변을 비교하고 차이점을 확인하십시오. 가장 먼저 대답하는 것이 당신의 대답이 최선이라는 것을 의미하지는 않습니다. 오히려 OP의 지식 수준을 감안할 때 의미가 무엇인지 설명하지 않고 OP에 새로운 용어를 도입하는 것이 이상적이지 않다고 나는 말할 수 있습니다. 당신의 대답의 일부는 다른 사람이 대답에서 말한 것을 반복하는데, 이것은별로 유용하지 않습니다. –