2017-03-18 1 views
2

어떻게 같은 def에서 def를 호출 할 수 있습니까? 난 내가하고 싶은 말은 그 :상기 함수 내에서 함수 호출하기

def cal(cal): 
    stat = stat_dict() 
    profile = profile_dict() 
    skill = skill_dict() 
    ... Abreviation.... 
    elif cal == 'Phy': return round(stat['Str']*4 + stat['Con']/3 + stat['End']/2 + stat['Tou']/4 + stat['Agi']/6) 
    elif cal == 'Inv': return round(cal('Phy') * (1 + skill['Hauling']/20)) 

내가 마지막 줄에 CHAGE 수 있다는 사실을 알고 :

elif cal == 'Inv': return round((stat['Str']*4 + stat['Con']/3 + stat['End']/2 + stat['Tou']/4 + stat['Agi']/6)* (1 + skill['Hauling']/20)) 

심지어 :

def cal(cal): 
    stat = stat_dict() 
    profile = profile_dict() 
    skill = skill_dict() 
    X = round(stat['Str']*4 + stat['Con']/3 + stat['End']/2 + stat['Tou']/4 + stat['Agi']/6) 
    .... Abreviation... 
    elif cal == 'Phy': return X 
    elif cal == 'Inv': retunr X * (1 + skill['Hauling']/20 

을하지만 난 원하지 않는 그러기 위해서 개인적인 이유로 같은 뜻을 표현하고 싶습니다. 가능합니까? 내 영어로 미안해.

+1

"defs"가 아니라 "functions"라고합니다. –

+1

당신은 그것을 할 수 있습니다. 그냥 변수와 함수를 같은 이름으로 호출하지 마십시오. http://www.python-course.eu/recursive_functions.php 참조하십시오. –

+0

이들은 함수이며,이 함수 내에서 함수를 호출하는 것을 재귀라고합니다 . –

답변

4

귀하의 문제는 매개 변수의 이름입니다 (아, 또한, 내가 파이썬 3.6를 사용) : 당신은 매개 변수는 호출하려는 함수와 같은 일이라는 것

def cal(cal): 

, 그래서 그림자는 기능입니다. 함수 안에 cal이라고 말하면 함수가 아니라 매개 변수를 참조합니다.

매개 변수 또는 함수 이름을 다른 이름으로 지정하기 만하면됩니다. (cal은 함수 또는 매개 변수에 대한 설명 적 이름이 아닙니다.)

+0

조나단, 나는이 말을하려고하고있었습니다 :) +1 –

+0

오, 많이 고마워요! 나는 de cal (cal)을 cal (fcal)로 변경했으며 완벽하게 작동합니다! 나는 너의 마지막 문장을 이해하지 못했다. 칼은 왜 나쁜가? cal (cal)은 계산기 (계산)의 내 abreviaton입니다 xD –

+0

* "왜 칼 잘못입니까?"* Stack Overflow에서이 질문을해야한다는 사실은 왜 그렇게 나쁜지에 대한 완벽한 예입니다. 너무 짧고 모호하기 때문에 실수로 이름 충돌을 만들 수 있습니다. –

관련 문제