آموزش فضای نامی و تعیین حوزه ی دسترسی در پایتون

پایتون آریا پروژه

آموزش فضای نامی و تعیین حوزه ی دسترسی در پایتون

متغیرها اسم ها یا شناسه هایی هستند که به اشیا نگاشت (map )می شوند.

فضای نام یک dictionary از اسم متغیر(کلید) و اشیای مرتبط با آن (مقادیر) هستند.

دستور پایتون می تواند به متغیرهایی که در فضای نام محلی و همچنین در فضای نام سراسری قرار دارد.

دسترسی داشته باشد.چنانچه متغیر سراسری و محلی هر دو دارای اسمی یکسان باشند، متغیر محلی بر متغیر سراسری اولویت دارد.

هر تابع دارای فضای نام محلی و مختص به خود است. متدهای کلاس نیز از همان قوانین تعیین حوزه ی دسترسی که توابع معمولی دنبال می کنند، پیروی می کنند.

زبان پایتون برآورد می کند متغیرها سراسری یا محلی در پایتون

بدین معنی که فرض می گیرد هر متغیری که در یک تابع مقداردهی می شود، نسبت به آن تابع محلی می باشد.

از این رو، جهت تخصیص یک مقدار به متغیر سراسری در حوزه ی یک تابع، ابتدا بایستی از دستور سراسری استفاده کنید.

دستور   global varnameبه زبان پایتون اطلاع می دهد که VarName یک متغیر سراسری است.

در پی آن پایتون جستجو برای متغیر مورد نظر در فضای نام محلی را متوقف می سازد.

فرض بگیرید، یک متغیر به نام Money در فضای نام سراسری تعریف کرده ایم.

سپس داخل تابع، متغیر ذکر شده را مقداردهی می کنیم. به دنبال آن پایتون متغیر Money را یک متغیر محلی در نظر می گیرد.

با این حال، پیش از اینکه متغیر محلی Money را تنظیم (set )کنیم، سعی کردیم به مقدار آن دسترسی پیدا کنیم.

در نتیجه با خطای UnboundLocalError مواجه می شویم. برای رفع آن.

دستور سراسری global Money را از حالت comment خارج می کنیم:

#!/usr/bin/python

Money = 2000

def AddMoney():

 # Uncomment the following line to fix the code:

 # global Money

 Money = Money + 1

print Money

AddMoney()

print Money

تابع dir()

تابع توکار dir() لیست مرتب سازی شده ای برمی گرداند که حاوی رشته های متعدد می باشد.

این رشته ها دربردارنده ی اسم ماژول ها می باشد.

لیستی که این تابع بازمی گرداند، دربردارنده ی ماژول ها، متغیرها و توابع می باشد که در ماژول تعریف شده اند.

مثال:

#!/usr/bin/python

# Import built-in module math

import math

content = dir(math)

print content

نتیجه:

[‘__doc__’, ‘__file__’, ‘__name__’, ‘acos’, ‘asin’, ‘atan’,

‘atan2’, ‘ceil’, ‘cos’, ‘cosh’, ‘degrees’, ‘e’, ‘exp’,

‘fabs’, ‘floor’, ‘fmod’, ‘frexp’, ‘hypot’, ‘ldexp’, ‘log’,

‘log10’, ‘modf’, ‘pi’, ‘pow’, ‘radians’, ‘sin’, ‘sinh’,

‘sqrt’, ‘tan’, ‘tanh’]

در اینجا، متغیر رشته ای – name – اسم ماژول می باشد و – file – اسم فایل می باشد که ماژول از آن بارگذاری می شود.

The globals() and locals() Functions –

توابع globals() و locals() اسم های فضای نام محلی و سراسری را بسته به مکانی که از آن فراخوانی می شود، برمی گرداند.

اگر تابع locals() از داخل یک تابع فراخوانی شود.

در آن صورت تمامی اسم هایی که به صورت محلی قابل دسترسی می باشد، با صدا خوردن تابع نام برده برگردانده می شوند.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *