σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
σμimplied vol · KKmax(S−K,0)udβρᵢⱼfat tailsPnL · drawdownyield · TdSₜ = μSₜ dt + σSₜ dWₜC = S·N(d₁) − K·e⁻ʳᵀ·N(d₂)σₚ² = wᵀΣwd₁ = [ln(S/K) + (r + σ²⁄2)T] ⁄ σ√T∂V/∂t + ½σ²S²·∂²V/∂S² + rS·∂V/∂S − rV = 0Sharpe = (Rₚ − R_f) ⁄ σₚVaR₉₉ = μ − 2.33σρ = Cov(X,Y) ⁄ σₓσᵧE[Rₚ] = Σ wᵢ·E[Rᵢ]φ(x) = e^(−x²/2) ⁄ √2πE[Rᵢ] = R_f + βᵢ(E[Rₘ] − R_f)dXₜ = θ(μ − Xₜ)dt + σ dWₜσ²ₜ = ω + α·ε²ₜ₋₁ + β·σ²ₜ₋₁C − P = S − K·e⁻ʳᵀΔ = ∂V/∂S Γ = ∂²V/∂S²p = (e^(rΔt) − d) ⁄ (u − d)rₜ = ln(Pₜ ⁄ Pₜ₋₁)E[Xₜ₊₁ | ℱₜ] = Xₜf* = (bp − q) ⁄ bz = (x − μ) ⁄ σP(N=k) = λᵏe^(−λ) ⁄ k!Θ = −∂V/∂Tν = S·φ(d₁)·√Tmin wᵀΣw s.t. wᵀμ = μ*∫Σ∂∞λ
uantCraft Academyالمسارات
Ctrl K
AO
+1.2k متعلّم
تسجيل الدخولانضم ↗
المسارات
AO
+1.2k متعلّم
تسجيل الدخول
  • English
  • Français
  • Español
  • العربية
  • Português
  • Deutsch
  • 日本語
  • 中文
مسار Python›الوحدة 1 · أساسيات Python للمحللين الكميين›الموضوع 1.8·~40 دمبتدئ

تعريف الدوال واستدعاؤها

الموضع في المسارالوحدة 1 من 11 · الموضوع 8 من 33
1.8 تعريف الدوال واستدعاؤها
—درجة المختبر— / 100إجمالي XP—التتابع—

إعطاء كتلة شيفرة اسمًا

الدالة كتلة شيفرة لها اسم يمكنك تشغيلها مرارًا. تعرّفها مرة واحدة باستخدام def واسم وأقواس ونقطتين، والكتلة المزاحة تحتها هي الجسم. ترسل return قيمة إلى من استدعى الدالة. واستدعاؤها يعني كتابة اسمها مع الأقواس والقيم التي ستعمل عليها.

def gross_value(price, quantity):
    return price * quantity

print(gross_value(184.25, 200))  # 36850.0

المعاملات والوسائط

الأسماء داخل أقواس def هي المعاملات: أماكن محجوزة للمدخلات. أما القيم التي تمررها عند الاستدعاء فهي الوسائط وهي تملأ المعاملات بالترتيب. إذا بدّلتها تغيّرت النتيجة. وتمرير عدد خاطئ من الوسائط خطأ. ولكل استدعاء نسخته الجديدة من المعاملات.

# Arguments fill the parameters in order
def spread(bid, ask):
    return ask - bid

print(spread(184.25, 184.5))  # 0.25
print(spread(184.5, 184.25))  # -0.25

return ليست print

تعرض print شيئًا على الشاشة لإنسان. أما return فتسلّم قيمة إلى الشيفرة المستدعية لتواصل العمل بها. الدالة التي ليس فيها return تُرجع None أي «لا شيء». وعلى الدوال التي تحسب أن تُرجع، والشيفرة المستدعية هي التي تقرر الطباعة.

# A function with no return gives back None
def show(price):
    print("price", price)

result = show(184.25)   # price 184.25
print(result)           # None

دوال صغيرة يبني بعضها على بعض

يمكن للدالة استدعاء دوال أخرى، فتبني سلوكًا كبيرًا من قطع صغيرة قابلة للاختبار. أعطِ كل دالة مهمة واحدة واسمًا يعبّر عنها. وتشرحها docstring، وهي نص مباشرة تحت def، للقارئ التالي. عرّف الدالة قبل أن يُنفَّذ السطر الذي يستدعيها.

# Small functions build bigger ones
def gross_value(price, quantity):
    """Value of a position before costs."""
    return price * quantity


def commission(gross):
    """0.1% of the value, but never less than 1.0."""
    return max(1.0, gross * 0.001)


def net_cost(price, quantity):
    """What the position really costs: value plus commission."""
    gross = gross_value(price, quantity)
    return gross + commission(gross)


print(net_cost(184.25, 200))  # 36886.85

إرجاع عدة قيم

تُسلّم return a, b القيمتين معًا على شكل صف (tuple): زوج مرتب يُكتب بفواصل (سيكون للصفوف موضوعها الخاص قريبًا). ويستطيع المستدعي تسمية القطعتين فورًا. تقسيم أمر من 1,000 سهم إلى 3 شرائح بـ// و% يُرجع حجم كل شريحة والباقي.

# return several values as a tuple
def split_fill(quantity, slices):
    return quantity // slices, quantity % slices

size, leftover = split_fill(1000, 3)
print(size, leftover)  # 333 1
return تُنهي الدالةتغادر Python الدالة عند أول return تصل إليه، ولا تُنفَّذ الأسطر التي تليه في ذلك المسار. وتوجد المعاملات وأي متغير تنشئه داخل الدالة طوال الاستدعاء فقط: لا تراها الشيفرة الخارجية (المزيد في موضوع النطاق).
  • مهمة واحدة لكل دالة واسم يعبّر عمّا تُرجعه.
  • احسب وreturn، ودع المستدعي يطبع.
  • أضف docstring تذكر ما يدخل وما يخرج.

التالي: وسائط الدوال وقيمها الافتراضية لاستدعاء الدوال بالأسماء وقيم اختيارية وأي عدد من الوسائط.

المختبر: ما الذي يُقيَّم

  • عرّف دالة تحسب قيمة مركز باستخدام gross_value25 نقطة
  • احسب عمولة بحد أدنى باستخدام commission25 نقطة
  • ابنِ التكلفة الفعلية من دالتين باستخدام net_cost25 نقطة
  • أرجع قيمتين معًا باستخدام split_fill25 نقطة
المستكشف · lab-8-1
▾ lab-8-1
…
bash · داخل المتصفح
learner@quantcraft:~/lab-8-1$
لم يتم تحميل Python بعدPythonLn 1, Col 1Spaces: 4UTF-8

هل تريد إعادة ضبط هذا الموضوع؟

سيعود كل ما في lab-8-1 إلى الملفات الابتدائية وستُمسح الطرفية. ستفقد حلّك الحالي ولا يمكن التراجع عن ذلك.

سيُعاد ضبطه
  • main.py ← الشيفرة الابتدائية
  • سجل الطرفية ومخرجات الاختبارات
  • التغييرات غير المُرسلة
سيُحتفظ به
  • أفضل درجة في المختبر
  • نقاط XP والتتابع
  • تقدّم المحاضرة والملاحظات

سجّل الدخول لتشغيل الكود الخاص بك.

قراءة كل المحاضرات مجانية. أنشئ حسابًا أو سجّل الدخول لتشغيل الكود وتنفيذ الاختبارات وتسليم هذا المختبر.

  • بيئة تطوير داخل المتصفح مع طرفية bash — لا حاجة لتثبيت أي شيء
  • تصحيح فوري ونقاط خبرة ومكانك في المسار
إنشاء حسابتسجيل الدخول
أو
المتابعة عبر GitHub