ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
COM64לא בפורום כעת ת.הצטרפות: 09/07/2003 · הודעות: 1605 · מיקום: ראשל"צ
 

הודעה פורסם: 25/05/2021 - 07:59
נושא ההודעה: כיצד מעבירים מצביע ל-set לפונקציה?

אני מנסה להריץ פונקציה מסויימת במקביל כשבתוך כל instance שלה היא צריכה לעדכן set שמשותף לכל הפונקציות שרצות.

משהו בסגנון הזה:
קוד:
def extend_set(myset):
    myset = myset.union(myset, {"abc"})
    print("myset in the function: ", myset)
   
myset = {"xyz"}
print(extend_set(myset))


בתוך הפונקציה זה כמובן עובד ומחוץ לפונקציה ה-set נמחק לחלוטין:

קוד:

myset in the function:  {'abc', 'xyz'}
None


מה הדרך להעביר את הסט כ-pointer לפונקציה או דרך אלגנטית יותר לבצע את זה?

תודה !

_________________
איזי גולדנברג
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 25/05/2021 - 08:11
נושא ההודעה:

זה כבר עבר כרפרנס (ולא מצביע) רק שדרסת אותו.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
COM64לא בפורום כעת ת.הצטרפות: 09/07/2003 · הודעות: 1605 · מיקום: ראשל"צ
 

הודעה פורסם: 25/05/2021 - 08:39
נושא ההודעה:

Anonymous :
זה כבר עבר כרפרנס (ולא מצביע) רק שדרסת אותו.


אוקיי, ניסיתי כמה דרכים עם כמה סטים ומילונים ובחלק מהמקרים באמת לא הבנתי מה הסיבה שזה עובד.

כשאתה אומר שדרסתי אותו, באיזו נקודה זה קורה? ה-print אחרי ה-union מדפיס את הסט המקורי והערך הנוסף.

תודה !

_________________
איזי גולדנברג
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mksoftלא בפורום כעתSite Admin ת.הצטרפות: 17/03/2002 · הודעות: 10410 · מיקום: כדור הארץ
 

הודעה פורסם: 25/05/2021 - 09:52
נושא ההודעה:

כדאי לשים לב שה-print החיצוני שלך מדפיס את מה שהפונקציה מחזירה, ובמקרה הנ"ל היא באמת מחזירה None.

_________________
הבלוג שלי
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
mksoftלא בפורום כעתSite Admin ת.הצטרפות: 17/03/2002 · הודעות: 10410 · מיקום: כדור הארץ
 

הודעה פורסם: 25/05/2021 - 10:34
נושא ההודעה:

כמו כן:
בפונקציה שכתבת, אתה לא משנה את myset עצמו, אתה מגדיר myset חדש שזה מה ש-union עושה(אפשר להדפיס את ה-id שלהם), לכן מחזירים מהפונקציה את ה-myset החדש, או שמשנים אותו inplace (עם add או update).

דוגמה:
קוד:

In [18]: def extend_set(myset):
    ...:     myset.update({"abc"})
    ...:     print("myset in the function: ", myset)
    ...:

In [19]: myset = {"xyz"}

In [20]: extend_set(myset)
myset in the function:  {'abc', 'xyz'}

In [21]: print(myset)
{'abc', 'xyz'}


_________________
הבלוג שלי
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית שלח דוא\ ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
COM64לא בפורום כעת ת.הצטרפות: 09/07/2003 · הודעות: 1605 · מיקום: ראשל"צ
 

הודעה פורסם: 26/05/2021 - 15:22
נושא ההודעה:

תודה !

ואשמח להסבר קצר על ההבדל בין שליחת מצביע לעומת רפרנס?

_________________
איזי גולדנברג
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 26/05/2021 - 17:45
נושא ההודעה:

COM64 :
תודה !

ואשמח להסבר קצר על ההבדל בין שליחת מצביע לעומת רפרנס?


רפרנס הוא מצביע קבוע לערך שיכול להשתנות
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
queencyלא בפורום כעת ת.הצטרפות: 13/11/2008 · הודעות: 2123 ·
 

הודעה פורסם: 12/06/2021 - 22:30
נושא ההודעה:

בעיקרון בפייתון ככול הידוע לי הכל מצביעים .

הרפרנס הוא כתובת הערך או כתובת המערך או כתובת הקלאס

נגיד בכתובת 00010 מתחיל קלאס מסוים אז הרפרנס יהיה 00010
אם אתה מעביר רפרנס בעצם אתה מעביר את הכתובת 00010

המצביע לעומת זאת שוכן בכתובת אחרת נגיד 00090
ואם תסתכל על התוכן שלו אז תראה את התוכן 00010

יכול להיות מצביע ששוכן בכתובת 00130 והוא מצביע לכתובת 00090
אבל גם הכתובת 00090 התוכן שלה הוא 00010 והתוכן שלו הוא הקלאס.

נראה לי שאתה מתבלבל עם BY VALUE הנהוג בדרך כלל ב C C++
כאשר BY VALUE אתה בעצם מעביר את כל תוכן הערך או את המערך
או את הקלאס .

_________________
מערכת: GNU/Linux debian
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית ביקור באתר המפרסם  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. COM64
  2. אורח
  3. COM64
  4. mksoft
  5. mksoft
  6. COM64
  7. אורח
  8. queency