ערוץ - python tip israel
Ir al canal en Telegram
1 792
Suscriptores
Sin datos24 horas
Sin datos7 días
Sin datos30 días
Archivo de publicaciones
מהו assert ולמה הוא משמש?
להלן התחביר הבסיסי של הצהרת assert:
assert condition, message
condition: זהו התנאי שאתה רוצה לבדוק. אם הוא שווה ל-False, נזרקת AssertionError.
message: זהו הודעה אופציונלית שתוכל לספק כדי לתת יותר מידע על הטענה.
דוגמאות:
דוגמא 1:
x = 10 assert x > 5, "x should be greater than 5"בדוגמה זו, מכיוון ש-x גדול מ-5, לא תתרחשנה חריגות. דוגמא 2:
my_list = [1, 2, 3] assert len(my_list) == 3, "List length should be 3"בדוגמה זו, התנאי בודק אם אורך
my_list הוא 3, בדוגמא הוא שווה לtrue. לכן, לא נקבל שגיאות.
דוגמא 3:
def divide(a, b):
assert b != 0, "Cannot divide by zero"
return a / b
result = divide(10, 2)
print(result
פה, ההצהרת assert מבטיחה ש- b אינו 0 לפני ביצוע החישוב.
מתי נשתמש:
1. ניפוי באגים ובדיקות:
נשתמש ב-הצהרות assert כדי לאמת שגיאות בקוד במהלך הפיתוח. זה יכול לעזור לנו לתפוס שגיאות בלתי צפויות בשלב מוקדם.
2. בדיקות קוד:
בפרויקטים מורכבים יותר, תוכל להשתמש ב-הצהרות assert כחלק מבדיקות קוד כדי לוודא שחלקים שונים של הקוד פועלים כצפוי.
3. אימות נתונים:
בעת עבודה עם נתונים, תוכל להשתמש בטענות כדי לאמת שהנתונים עומדים בפורמט או מבנה הצפוי.
הערה:
הצהרות assert צריכות לשמש למטרות ניפוי באגים ופיתוח. תוכלו להשבית אותם באופן גלובלי ב-Python באמצעות מתג שורת הפקודה -O (optimize) או משתנה הסביבה PYTHONOPTIMIZE, הם לא מיועדים לטיפול בטעויות בקוד אמיתי שאתם הולכים לפרסם כמו אתרי אינטרנט ספריות וקוד בפרודקשן מוד וכו'.גיפיטי למפתחים
נתקין את הספריה
pip install gpt-engineer
נגדיר את המשתנה סביבה לOPENAI_API_KEY לטוקן מאתר openai
לינוקס:
export OPENAI_API_KEY=[your_api_key_here]
וינדוס:
set OPENAI_API_KEY="your_api_key_here"
📁 ניצור תקיה חדשה (לא משנה השם)
🗄 ניצור קובץ בשם prompt (השם חשוב)
בתוכו נכתוב את ההנחיות לgpt מה אנחנו רוצים שהוא יצור
ואז נריץ gpt-engineer [folder name]
את הסוגריים נחליף בשם התקיה
ואז הgpt יתחיל לשאול אותכם שאלות על הקוד
למי שרוצה סרטון הדרכה שמצאתי ביוטיוב על זה
https://www.youtube.com/watch?v=FPZONhA0C60
הקוד מקור לספרייה בגיטהאב
https://github.com/AntonOsika/gpt-engineer🕯 שבת שלום לכולם🕯
gpt for developer
מוצ"ש יעלה הדרכה על ספריה ליצירת קוד עם gpt
אבל!!
הקבצים והתקיות יווצרו לבד ללא צורך להעתיק את הקוד...😋
וגם gpt ישאל אותכם שאלות על הקוד כדי לשפר את ההבנה שלו על איך אתם רוצים שהקוד הקוד יהיה
מרכאות מאותו סוג פעמיים בתוך f סטרינג
עד לגירסא 3.12 אם תשתמשו פעמיים באותו סוג מרכאות כלומר פעמיים מרכאות כפולות או פעמיים מרכאות משולשות תקבלו שגיאה הנה דוגמא לעידכון מהdocs
songs = ['Take me back to Eden', 'Alkaline', 'Ascensionism']
f"This is the playlist: {", ".join(songs)}" 'This is the playlist: Take me back to Eden, Alkaline, Ascensionism'פייתון 3.12 שוחררה בגירסת בטא
סליחה על האיחור
למי שרוצה לראות מה חדש
https://docs.python.org/3.12/whatsnew/3.12.html
טיפ:
גישה לערך על ידי key
אם אתם עובדים עם מילונים כניראה שמתם לב שאפשר לגשת לערכים בשני דרכים שונות: באמצעות סוגריים מרובעים
[] או באמצעות המטודה .get().
בטח שאלתם את עצמכם איזו מתוך שתי האפשרויות עדיפה לשימוש😉 או שלא🤨
דוגמאות:
🖱 שימוש בסוגריים מרובעים:
my_dict = {'name': 'John', 'age': 30}
name = my_dict['name']
print(name) # output: 'John'
🧲 המטודה .get():
my_dict = {'name': 'John', 'age': 30}
# גישה לערך באמצעות השיטה .get():
name = my_dict.get('name')
print(name) # output: 'John'
🤔 אז מה ההבדל, ולמה עדיף להשתמש ב - get() במקום []?
🚫 סוגריים מרובעים:
שימוש בסוגריים מרובעים [] לגישה לערכים במילון יכול להוביל ל-KeyError אם המפתח אינו קיים במילון ולעצור את ריצת התוכנית
👍 המטודה .get():
נוצרה כדי לפתור את הkeyerro ללא שימוש בtry.
היא לא מעלה חריג אם המפתח לא נמצא במילון, אלא תחזיר ערך ברירת מחדל (אותו תוכלו לציין בעצמכם) או None אם המפתח אלא קיים. זה עוזר למנוע קריסות לא צפויות בתוכנית.
דוגמא:
my_dict = {'name': 'John', 'age': 30}
name = my_dict.get('test', 'Unknown')
print(name) # output: 'Unknown' test לא קיים
🎉 סיכום:
תשתמשו ב־.get() 😉פתחתי ערוץ יוטיוב 🎉🎉
אשמח שתרשמו ופרגנו בלייקים🙏🙏 אני עובד המון כדי להביא תוכן מעניין וחדש
במשך יעלה לשם הדרכות וסרטונים חדשים
https://www.youtube.com/@python-tip-israel
הפיתרון שלי לבעית הקאש בשרת הchat
MESSAGE_DB = fetch_post()
CHANGE = False
def cached(func):
"""
cached db check if user change or send message by check the CHANGE
verable if dose it fetch all the messages from the db else return the function
:param func:
:return:
"""
@wraps(func)
def check_change(*args, **kwargs):
global CHANGE, MESSAGE_DB
if CHANGE:
MESSAGE_DB = fetch_post()
CHANGE = False
else:
return func(*args, **kwargs)
return check_change
דוגמא לפונקציה שעושה שימוש בדקרטור
@app.route('/add', methods=['POST'])
@login_required
@cached
def add_message():
global CHANGE
form = AddMessage()
if form.validate_on_submit():
try:
if not SEND:
flash('שליחת הודעה חסומה כרגע')
return jsonify({'send': 'False'}), 200
CHANGE = True ###### this is the cached check #######
message = form.message.data
name = session.get('user_name')
send_post(message, name)
flash('ההודעה נשלחה בהצלחה.', 'success')
return jsonify({'send': 'True'}), 200
except SupabaseException:
flash('שליחת ההודעה נכשלה. בבקשה נסה שוב מאוחר יותר.', 'error')
return jsonify({'error': 'הודעה לא נשלחה נסה שוב.'}), 500
flash('קרתה שגיאה נא לשלוח הודעה ללא תווים מיוחדים.', 'error')
return jsonify({'error': 'קרתה שגיאה נסה שוב מאוחר יותר.'}), 500
הסבר כללי למי שלא הבין 😀
יש לי פונקציה שנותנת למשתמש את כל ההודעות מהמסד נתונים כל פעם שהוא נכנס לאתר הבעיה שזה לוקח המון זמן לבקש את המידע מהשרת נתונים וגם מעמיס עליו אז במקום כל פעם לבקש את הנתונים מחדש הכנתי דקרטור שרק אם המשתמש ביצע עידכון למסד נתונים הוא ישנה את המצב של המשתנה CHANGE לTrue
עכשיו כל פעם שהשתמש יכנס לאתר האתר הדקרטור cached יבדוק אם היו שינוים או שעודכן מידע לשרת על ידי בדיקת המשתנה CHANGE אם היו שינוים או עידכונים לשרת ילך למסד נתונים ויבקש את הנתונים העדכנים אחרת פשוט יחזיר את הנתונים שכבר בזיכרון של השרת בתוך המשתנה MESSAGE_DB
מקווה שהייתי מובן😊האתר צאטים בקוד פתוח🕊
🙏 אשמח לעזרה והצעות לשיפור
למי שמעתיק או רוצה להריץ את הקוד בעצמו נא לשים קרדיט לערוץ שלי עבדתי על זה המון
https://github.com/nhman-python/chat-flask
כלי חדש נוסף באתר🎉🎉 base64
לוקח טקסט ועוד לו encode\decode
https://python-tips.vercel.app/base64
@app.route('/admin', methods=['GET', 'POST'])
@admin_required
def admin_panel():
form = AdminForm()
if request.method == 'POST' and form.validate_on_submit():
locked = form.lock_web.data
if locked:
admin_lock()
flash("Website locked successfully!", "success")
else:
admin_unlock()
flash("Website unlocked successfully!", "success")
return render_template_string(ADMIN, form=form)טיפ:
לאלא שמסתבכים בבניה של הלוגיקה לאתרים או דברים כאלה אל תחשבו על איך יראה האתר תחשבו קודם כל מה אתם רוצים שהוא יעשה ומה צריך בשביל זה תבנו את הפונקציות הנצרכות לדוגמא פונקציה למשיכת כל ההודעות מהשרת ואחרי זה תבנו את הhtml עצמו אפשר אפילו להעזר בchat gpt לאלו שלא הכי יודעים html css js ...
@app.route('/fetch-message')
@login_required
def fetch_all():
return jsonify({'message': fetch_post()})עובד על פאנל ניהול בסיסי 🗝
שבו המנהל יוכל להשבית אפשרות שליחה או לנעול את האתר ועוד כמה פיטצרים בהמשך יעלה את זה כקוד פתוח
האתר צאטים באוויר🎉🎉🎉🎉🎉
מוזמנים להירשם ויאשר אותכם
https://chat-python.vercel.app/
מי שנרשם שישלח פה את השם משתמש יאשר אותו
נוסף הכלי what is my ip📱
https://python-tips.vercel.app/ip-info
קוד מקור
https://github.com/nhman-python/what-my-ip
שבת שלום לכל חברי הקבוצה🙏
נוסף הכלי שמאריך קישורים לאתר הכלים (+ עיצוב משופר)
https://python-tips.vercel.app/redirect-url
הקבוצה סגורה עד צאת השבת🥂
