নেমস্পেস হলো স্কোপ বাস্তবায়নের একটি পদ্ধতি। পাইথনে, প্রতিটি প্যাকেজ, মডিউল, ক্লাস, ফাংশন এবং মেথড ফাংশনের নিজস্ব একটি "নেমস্পেস" থাকে যেখানে ভেরিয়েবল নামগুলো রিজল্ভ করা হয়। যখন কোন ফাংশন, মডিউল বা প্যাকেজ ইভ্যালুয়েট করা হয় (অর্থাৎ এক্সিকিউশন শুরু হয়), তখন একটি নেমস্পেস তৈরি হয়। এটি একটি "ইভ্যালুয়েশন কনটেক্সট" হিসেবে চিন্তা করা যায়। যখন ফাংশন ইত্যাদি এক্সিকিউশন শেষ করে, নেমস্পেসটি ড্রপ হয়ে যায় এবং ভেরিয়েবলগুলোও ড্রপ হয়ে যায়। এছাড়া একটি গ্লোবাল নেমস্পেস থাকে যা লোকাল নেমস্পেসে নাম না পাওয়ার صورتে ব্যবহার করা হয়।
প্রতিটি ভেরিয়েবল নাম প্রথমে লোকাল নেমস্পেসে (ফাংশনের বডি, মডিউল ইত্যাদি) চেক করা হয়, তারপর গ্লোবাল নেমস্পেসে চেক করা হয়।
ভেরিয়েবল সাধারণত শুধুমাত্র লোকাল নেমস্পেসে তৈরি হয়। global এবং nonlocal স্টেটমেন্টগুলো লোকাল নেমস্পেস ছাড়া অন্য নেমস্পেসে ভেরিয়েবল তৈরি করতে পারে।
স্কোপ রেজলিউশন তখন দরকার হয় যখন একটি ভেরিয়েবল ব্যবহার করা হয় তার মান কোথা থেকে আসবে তা নির্ধারণ করতে। পাইথনে স্কোপ রেজলিউশন LEGB নিয়ম অনুসরণ করে।
- L, Local — ফাংশন (অথবা ল্যাম্বডা) এর ভেতরে যেকোনোভাবে অ্যাসাইন করা নাম, এবং সেই ফাংশনে
globalডিক্লেয়ার করা নয়। - E, Enclosing-function locals — যেকোনো এবং সকল স্ট্যাটিক্যালি এনক্লোজিং ফাংশন (অথবা ল্যাম্বডা) এর লোকাল স্কোপের নাম, ভেতর থেকে বাহিরের দিকে।
- G, Global (module) — মডিউল ফাইলের টপ-লেভেলে অ্যাসাইন করা নাম, অথবা ফাইলের ভেতরে
def-এglobalস্টেটমেন্ট এক্সিকিউট করে অ্যাসাইন করা নাম। - B, Built-in (Python) — বিল্ট-ইন নেমস মডিউলে প্রি-অ্যাসাইন করা নাম:
open,range,SyntaxError, ইত্যাদি।