내 프로그램에 문제가 있으며 예상치 못한 (최소한 예상치 못한) 동작을 작은 규모로 재현 할 수 있었으므로 다른 버그가 아닌 것으로 확신합니다. .정수 및 목록을 다르게 처리하는 예상치 못한 가져 오기 동작
내가 3 개의 파이썬 모듈을 가지고 있다고하자 : one
, two
및 three
. three
에서
우리는이 :
var = 0
list = []
을 그래서 거기에 우리가 제로와 빈리스트와 동일한 정수를 가지고있다. two
에서
우리는이 :
from three import var, list
def funct():
print var*2
print list
return
그래서 우리는
var
및
list
를 가져 간단하게 모두를 인쇄하고 반환하는 함수를 정의합니다.
funct()
을 two
에 전화하는 대신 one
에 전화했으나 일부 "작업"을 수행하기 전에는 호출하지 않았습니다.
from three import var, list
from two import funct
if 2 < 4:
var += 1
list.append("x")
print funct()
여기 내 질문이 있습니다.
0
['x']
None
append()
으로 목록에 추가 된 방법
x
올
1 하지이 명확하게하기 위해, var
에 추가했다 :
2
['x']
None
동일한 상황의 다른 치료를 받는다는 것이 매우 이상한 경우.
- 여기에 뭔가가 빠졌습니까?
- 수입에 문제가 있습니까?
그렇지 않은 경우 :
- 이 왜 이렇게 행동 하는가?
- 이 문제를 어떻게 해결해야합니까?
감사합니다.
'list'와 같은 이름을 다시 바인딩하면 안됩니다. 그렇지 않으면 해당 이름으로 내장 객체에 액세스 할 수 없습니다. – bignose
나는 이것을 아래에 답했고, 그것을 스스로 발견하면서 갔다. 나의 대답을 다시 보아라. "three"를 가져와 three.var + = 1을 사용하여이를 발생시켜야합니다. "var"를 가져 오지 마십시오 – malkia