• 1400/02/26

variable scopes :

میدونم سوالم شاید مربوط به پایتون باشه ، ولی تو این دوره بهش برخوردم ، وقتی یه متغیر  تو گلوبال تعریف میشه بعد تو فانکشن میخام تغییرش بدم همچین چیزی میگه Shadows name 'userName' from outer scope و خب قطعا کار نمیکنه، چه حرکتی میشه زد برای تغییر تو رفرنس در کل؟

  • 1400/02/26
  • ساعت 10:00

سلام وقت بخیر

این یک اخطاره و داره به شما میگه از متغیری با نام یکسان داری استفاده میکنی که ممکنه پروژه دچار باگ بشه ولی به هر حال ارور نیست و فقط یک warning هستش که در نهایت در روند اجرای کد شما مشکلی ایجاد نمی کنه


  • 1400/02/26
  • ساعت 12:09

چرا رفیق، وقتی اجراش میکنم تغییر نمیکنه اون متغیر گلوبال ، میخام تو فانکشن اون متغییرو تغییرش بدم

 


  • 1400/02/26
  • ساعت 12:15

کد این قسمت رو بفرستید

اگر تغییر نمیکنه یه دلیل دیگه ای داره

چون این متنی که نمایش میده Shadows name 'userName' from outer scope یه warning برای pycharm هست

این لینک رو ببین

https://linuxpip.org/fix-shadows-name-from-outer-scope-in-pycharm/ 

 


  • 1400/02/26
  • ساعت 20:30

ربطی به پاچارم نداره ، تو وی اس کد هم همینه 

فقط متنش فرق داره:

"username" is not accessedPylance

input:

username = ''
password = ''

print('before change -----------------------')
print(username +'-' +password)


def firstfunction():
    username = 'arsad'
    password = 'arsad'


print('after change -----------------------')
print(username + '-'+password)

output :

before change -----------------------
-
after change -----------------------
-

  • 1400/02/26
  • ساعت 20:38

شما یک تابع نوشتید که قراره مقدار متغیر رو تغییر بده

ولی ازش استفاده نکردید هیچ جا 

پس تغییری هم اعمال نمیشه

همونطور که گفتم این یک اخطاره که میگه متغیرت رو با یک اسم دوبار تعریف کردی بعدا به مشکل نخوری

داره هشدار میده

تابع رو فراخوانی کنید مشکل حل میشه

username = ''
password = ''

print('before change -----------------------')
print(username +'-' +password)


def firstfunction():
    username = 'arsad'
    password = 'arsad'


firstfunction()

print('after change -----------------------')
print(username + '-'+password)

  • 1400/02/27
  • ساعت 13:37

صحیح ، حق با شماست حالا میگید این امکان داره با باگ مواجه شه بعدا ، روش دیگه برای کار با رفرنسو شما مد نظر دارید؟ یا اصلا حرکت درستیه متغیر گلوبال تعریف کردن؟


  • 1400/02/27
  • ساعت 16:33

مشکلی که فکر نمیکنم به وجود بیاد ولی اگر دارید جنگو کد میزنید هیچ جا به این شکل متغیر تعریف نمیشه و کار اشتباهیه 

اگر دارید پایتون کد میزنید که فرقی نداره طبق نیازتون هر طور لازمه استفاده کنید


logo-samandehi