값이 목록 인 사전 ('wakeup'은 아래 코드에 있음)이 있습니다.파이썬에서 def를 사용하여 사전 변이
난 그냥 아래처럼 데프를 사용하여 각 목록의 두 번째 요소를 변경하려면 :
def auto(t):
wakeup('zone1')[1] = wakeup('zone1')[0] - t
wakeup = {'zone1': [15, auto(1)],
'zone2': [15, auto(1)]}
print wakeup
자동() 웨이크가 정의 된 전에 웨이크 업에 대한 참조를 만들기 때문에 그것은 작동하지 않습니다.
아직 깨우기 정의 이후에 def를 사용하여이 문제를 해결하려고하면이 시간 이후 깨우기 사전에서 auto()에 대한 참조가 만들어지기 때문에 오류가 계속 발생합니다. .
가 이상적으로이 목록에이 구문을 유지하고 싶은 : [15, 자동차 (1)]
좀 도와 주시겠습니까?
나는 그가 전역 변수를 실제로 변경하지 않고 그 변수 (참조)가 가리키고있는 사전의 인스턴스를 변경한다는 작은 반대를 하나 가지고 있습니다 : 그는 그것을 재 할당하지 않습니다. 그것은 글로벌하지 않고도 작동합니다. 나는 아직도 전역 변수를 다룰 때 항상 그것을 사용해야한다고 생각한다. –
@Samy Arous : 흠, 확실한가요? 날 자동 변수'auto'가 전역 변수를 바꾼다. 나는 그것을 시도해 볼 것이다 ... –
그래, 적어도 파이썬 2.7에서. 나는 아직 파이썬 3에 익숙하지 않다. wakeup에 새로운 값을 할당한다면 : wakupe = { 'zone1': [5, 0]} 전역 적으로 필요할 것이다. –