میدونم سوالم شاید مربوط به پایتون باشه ، ولی تو این دوره بهش برخوردم ، وقتی یه متغیر تو گلوبال تعریف میشه بعد تو فانکشن میخام تغییرش بدم همچین چیزی میگه Shadows name 'userName' from outer scope و خب قطعا کار نمیکنه، چه حرکتی میشه زد برای تغییر تو رفرنس در کل؟
سلام وقت بخیر
این یک اخطاره و داره به شما میگه از متغیری با نام یکسان داری استفاده میکنی که ممکنه پروژه دچار باگ بشه ولی به هر حال ارور نیست و فقط یک warning هستش که در نهایت در روند اجرای کد شما مشکلی ایجاد نمی کنه
چرا رفیق، وقتی اجراش میکنم تغییر نمیکنه اون متغیر گلوبال ، میخام تو فانکشن اون متغییرو تغییرش بدم
کد این قسمت رو بفرستید
اگر تغییر نمیکنه یه دلیل دیگه ای داره
چون این متنی که نمایش میده Shadows name 'userName' from outer scope یه warning برای pycharm هست
این لینک رو ببین
https://linuxpip.org/fix-shadows-name-from-outer-scope-in-pycharm/
ربطی به پاچارم نداره ، تو وی اس کد هم همینه
فقط متنش فرق داره:
"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 -----------------------
-
شما یک تابع نوشتید که قراره مقدار متغیر رو تغییر بده
ولی ازش استفاده نکردید هیچ جا
پس تغییری هم اعمال نمیشه
همونطور که گفتم این یک اخطاره که میگه متغیرت رو با یک اسم دوبار تعریف کردی بعدا به مشکل نخوری
داره هشدار میده
تابع رو فراخوانی کنید مشکل حل میشه
username = ''
password = ''
print('before change -----------------------')
print(username +'-' +password)
def firstfunction():
username = 'arsad'
password = 'arsad'
firstfunction()
print('after change -----------------------')
print(username + '-'+password)
صحیح ، حق با شماست حالا میگید این امکان داره با باگ مواجه شه بعدا ، روش دیگه برای کار با رفرنسو شما مد نظر دارید؟ یا اصلا حرکت درستیه متغیر گلوبال تعریف کردن؟
مشکلی که فکر نمیکنم به وجود بیاد ولی اگر دارید جنگو کد میزنید هیچ جا به این شکل متغیر تعریف نمیشه و کار اشتباهیه
اگر دارید پایتون کد میزنید که فرقی نداره طبق نیازتون هر طور لازمه استفاده کنید