Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

__name__ (ตัวแปรพิเศษ) ใน Python


ไม่เหมือนกับภาษาโปรแกรมอื่นๆ ที่ python ไม่ได้ออกแบบมาเพื่อเริ่มการทำงานของโค้ดจากฟังก์ชันหลักอย่างชัดเจน ตัวแปรพิเศษที่เรียกว่า __name__ จัดเตรียมฟังก์ชันการทำงานของฟังก์ชันหลัก เนื่องจากเป็นตัวแปรที่สร้างขึ้นในภาษาไพ ธ อน เราจึงสามารถเขียนโปรแกรมเพื่อดูค่าของตัวแปรนี้ได้ดังนี้

print type(__name__)
print __name__

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

<type 'str'>
__main__

ดังที่คุณเห็นด้านบน ค่าของตัวแปร __name__ เป็นประเภทข้อมูลสตริงและเท่ากับ ___main__

ด้านล่างนี้คือคุณสมบัติหลักสองประการของตัวแปร __name__

1. เมื่อคุณเรียกใช้สคริปต์ไพ ธ อนแบบสแตนด์อโลนที่เขียนอย่างดีซึ่งไม่ได้อ้างถึงสคริปต์อื่น ค่าของตัวแปร __name__ จะเท่ากับ __main__

มาเขียนโปรแกรมชื่อ standalone.py . กัน เพื่อแสดงคุณลักษณะนี้

def func1():
   print 'The value of __name__ is ' + __name__
if __name__ == '__main__':
   func1()

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

The value of __name__ is __main__

ตามที่คาดไว้ ตัวแปร __name__ จะประเมินเป็น __main__ ดังนั้นผลลัพธ์ที่ได้

2. คุณลักษณะที่สองเกี่ยวกับการนำเข้าสคริปต์หลามตัวหนึ่งไปยังอีกสคริปต์หนึ่ง ในสถานการณ์เช่นนี้ ดูเหมือนว่าจะมีขอบเขตที่แตกต่างกันสองขอบเขตซึ่งถือได้ว่าเป็นฟังก์ชัน main() ขอบเขตแรกอาจเป็นตัวแปร __main__ ของโปรแกรมที่กำลังทำงานอยู่ และส่วนที่สองคือขอบเขตของตัวแปร __main__ ของสคริปต์ที่นำเข้าซึ่งใช้ในโปรแกรมปัจจุบัน

ดังนั้นจะใช้ตัวแปร __main__ ตัวใด

เมื่อคุณเรียกใช้ฟังก์ชันจากสคริปต์ที่นำเข้า ตัวแปร __name__ จะประเมินเป็นชื่อจริงของสคริปต์และไม่เท่ากับ __main__

แต่เมื่อคุณทราบค่าของตัวแปรชื่อจากโปรแกรมปัจจุบัน โดยไม่อ้างอิงสคริปต์ที่นำเข้ามา มันจะประเมินเป็น __main__ ตามที่คาดไว้ เนื่องจากเป็นขอบเขตของโปรแกรมที่เยื้องระดับ 0

โปรแกรมด้านล่างแสดงตัวอย่างนี้

ตัวอย่าง

import standalone as sa

print('Running the imported script')
sa.func1()

print('\n')
print('Running the current script')
print 'The value of __name__ is ' + __name__

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

Running the imported script
The value of __name__ is standalone

Running the current script
The value of __name__ is __main__

ประโยชน์ของวิธีนี้คือเมื่อโค้ดใช้ __name__ =="__main__":ตัวแปล python จะตรวจสอบว่ากำลังแยกวิเคราะห์สคริปต์ที่เรียกใช้งานอยู่หรือไม่ หรือแยกวิเคราะห์สคริปต์ภายนอกอื่นชั่วคราว วิธีนี้โปรแกรมเมอร์มีความสามารถในการควบคุมพฤติกรรมของส่วนต่างๆ ของโปรแกรมโดยเลือกเรียกใช้บรรทัดของโค้ดจากสคริปต์ภายนอกตลอดจนสคริปต์ที่เรียกใช้งานในปัจจุบันโดยขึ้นอยู่กับสถานการณ์