วิธีอื่น: ปรากฎว่าความเข้าใจผิดนี้ทำได้ง่ายมาก
มันถูกกำหนดลอบในการอ้างอิงภาษา Python:การใช้วัตถุแทนสัญลักษณ์ ฉันขอแนะนำว่าการอ้างอิงภาษา Python ทำให้สิ่งนี้ชัดเจนขึ้นและเบาบางน้อยลง ..
from
รูปแบบไม่ผูกชื่อโมดูล: มันจะไปผ่านรายการของตัวระบุลักษณะหนึ่งของพวกเขาแต่ละคนขึ้นมาในโมดูลที่พบในขั้นตอนที่ (1) และผูกชื่อใน namespace ท้องถิ่นเพื่อวัตถุที่พบจึง
อย่างไรก็ตาม:
เมื่อคุณนำเข้าคุณจะนำเข้าค่าปัจจุบันของสัญลักษณ์ที่นำเข้าและเพิ่มลงในเนมสเปซของคุณตามที่กำหนดไว้ คุณไม่ได้นำเข้าข้อมูลอ้างอิงคุณกำลังนำเข้าค่าอย่างมีประสิทธิภาพ
ดังนั้นในการรับค่าที่อัปเดตi
คุณต้องนำเข้าตัวแปรที่มีการอ้างอิงถึงสัญลักษณ์นั้น
กล่าวอีกนัยหนึ่งการนำเข้าไม่เหมือนimport
ใน JAVA external
การประกาศใน C / C ++ หรือแม้แต่use
ประโยคใน PERL
แต่คำสั่งต่อไปนี้ใน Python:
from some_other_module import a as x
เป็นเหมือนโค้ดต่อไปนี้ใน K&R C:
extern int a; /* import from the EXTERN file */
int x = a;
(ข้อแม้: ในกรณี Python "a" และ "x" เป็นการอ้างอิงถึงค่าจริง: คุณไม่ได้คัดลอก INT คุณกำลังคัดลอกที่อยู่อ้างอิง)