2011-05-13 4 views
0

저는 파이썬을 배우기 때문에 코드의 여러 프로세스를 다른 기능으로 분리하고 싶습니다. 이를 위해서는 이전 함수의 변수를 다른 함수의 매개 변수로 제공해야합니다. 나는이함수는 다른 (함수)에 의해 생성 된 변수를 어떻게 파이썬에서 매개 변수로 사용할 수 있습니까?

def F1 (A): 
    B=A+1 

def F2 (B): 
    C=B+1 
    print C 

F1 (1) F2() 나는 최종 결과로 삼을받을 것으로 예상이 경우 예를 들어

같은 몇 가지 일을했습니다.

하지만 작동하지 않습니다.

+1

무엇이 작동하지 않습니다 - 무엇을 기대 했습니까? – martineau

+0

http://www.catb.org/~esr/faqs/smart-questions.html#id479555 (전체 기사 읽기) "작동하지 않는"것은 Python이 코드를 함수 네임 스페이스로 분리한다는 것입니다. 그러나 당신은 당신이 기대하고 있던 단서를주지 않았습니다. –

답변

3

그냥 return 그것은 :

def F1 (A): 
    return A+1 

def F2 (B): 
    C=B+1 
    print C 

# Then use it as parameter 
F2(F1(1)) 
2

편집 : 게시물을 편집 했으므로 함수 내에 생성 된 변수는 해당 함수의 로컬 변수이므로 global 명령을 사용하지 않으면 다른 곳에서 참조 할 수 없습니다. 예 : global myvar. 이 코드는이처럼 보였다 경우가 더 좋을 것이다,하지만 사용하지 않는 것이 좋습니다 :

def F1 (A): 
    return A+1 

def F2 (B): 
return B+1 

first = F1(1) 
second = F2(first) 

print first, second 

가 기억 def F2 (B): 수단 '을 사용 B을 매개 변수로'- 당신이 값으로 함수를 호출 할 때까지 매개 변수가 정의되지 않습니다.

당신이 여기 일을하려고하지만, 나 시도하고 기능을 설명 할 수 정확히 무엇인지

하지

--- 원래의 대답 --- :

def F1(A): 
    ... 

F1를라는 함수를 생성하는 A이라는 단일 매개 변수를 허용합니다. F1에 전달되는 무엇이든간에 인수는 그래서, A로 설정됩니다 :이 코드 F1에서

def F1(A): 
    print A 

F1('hello world') 

는 인수 'hello world' 호출됩니다. 이 인수는 A으로 설정되고이 함수는 이제 과 동일한 print A을 실행합니다.

기능상 즉시 AB에 재 할당하지만 B은 코드의 아무 곳에서나 생성되지 않았습니다. 할당 B=C은 의미가 거의 없습니다.

+0

예, 당신이 옳았습니다. 이제 내가하고 싶은 논리적 인 감각을 고쳐 쓴다. – Geparada

1

어쩌면 당신은 결과를 저장하는 공유 객체를해야합니까? 어떤 것 : dict :

def f1(data): 
    data['b'] = data['a'] + 1 

def f2(data): 
    data['c'] = data['b'] + 1 
    print data['c'] 

my_data = {'a': 1} 

f1(my_data) 
f2(my_data) # prints 3 
+0

흥미 롭습니다! 감사 – Geparada

관련 문제