Theory
પુનરાવર્તિત Code નું દુઃસ્વપ્ન
તમારા Semester 1 BCA104 C labs માં, જો તમને એક percentage calculate કરવું કે એક currency symbol format કરવું પાંચ અલગ વાર જોઈએ, તમારે બિલકુલ એ જ math lines ફરી લખવી કે copy paste કરવી પડત. જો તમે એક નાની formula ભૂલ કરો, તમારે પાંચેય જગ્યાઓ ઠીક કરવા તમારા પૂરા main block માં શોધવું પડત. આપણે આપણી calculation ને એક વાર એક custom, named package માં package કરીને અને નવા numbers સાથે જ્યારે માંગીએ call કેમ ન કરી શકીએ?
Theory
Juicer Machine
એક function ને તમારા kitchen માં એક electronic juicer machine ની જેમ વિચારો. machine પોતે એના design (code block) થી વ્યાખ્યાયિત છે. જે fruits તમે ઉપરના slot માં નાખો છો એ input parameters છે. speed knob setting જે medium પર default થાય છે જ્યાં સુધી તમે એને હાથે ન ફેરવો એક default parameter value ની જેમ કામ કરે છે. છેલ્લે, spout થી તમારા glass માં પડતો તાજો juice returned value છે.
Theory
એક Function ની સંરચના
એક user defined function statements નો એક named, પુનઃઉપયોગી block છે જે એક ખાસ computation કરે છે. તમે એને def keyword વાપરીને વ્યાખ્યાયિત કરો છો, એની પછી function નામ અને optional parameters રાખતા parentheses. C થી ઊલટું, Python inputs માટે dynamic typing વાપરે છે, એટલે તમે ક્યારેય argument data types declare કરતા નથી. code block માત્ર ત્યારે ચાલે છે જ્યારે call કરાય. એ return statement વાપરીને main program ને એક અંતિમ value પાછી return કરી શકે છે.
At a glance
Table 1: C અને Python function mechanics વચ્ચેના સંરચનાત્મક તફાવત.
| Component Syntax | BCA104 C Lang નિયમ | BCA204 Python નિયમ |
|---|---|---|
| Declaration Keyword | int કે float જેવો સ્પષ્ટ data type જોઈએ. | બધા functions માટે generic def keyword વાપરે છે. |
| Parameter Types | arguments ની અંદર દરેક type સ્પષ્ટ રીતે declare કરવો પડે. | કોઈ datatype prefixes વગર માત્ર names યાદી કરે છે. |
| Default Values | Standard ANSI C default parameters ની પરવાનગી આપતું નથી. | brackets ની અંદર param = value જેવા assignments ની પરવાનગી આપે છે. |
| Return Statement | માત્ર declared header type સાથે મેળ ખાતી values return કરી શકે. | return keyword દ્વારા કોઈ પણ data object ને dynamically return કરી શકે. |
Theory
એક Worked Example: Automated Balance Deductions
ચાલો જોઈએ કે આપણું PocketMoney application automated calculations કેવી રીતે સંભાળે છે. આપણે એવું એક function માંગીએ છીએ જે આપણા balance થી એક expense બાદ કરે. આપણે એને miscellaneous નામની એક default category સાથે configure કરીશું જેથી program સરળતાથી ચાલે ભલે user એક expense description type કરવાનું ભૂલી જાય.
Practical
PocketMoney Function Ledger Engine
def calculate_remainder(balance, spend, category="Misc"):
print("Category processed: " + category)
remaining = balance - spend
return remaining
# Call 1: Providing all parameters manually
wallet1 = calculate_remainder(500, 45, "Food")
print(wallet1)
# Call 2: Skipping the optional category parameter
wallet2 = calculate_remainder(100, 20)
print(wallet2)This example runs in Gri-Learn on the web, where you can edit it and see the output.
Think first
Twin Function Calls ને ટ્રેસ કરો
ઉપરના Python script નું મનમાં વિશ્લેષણ કરો. screen પર ક્રમિક રીતે કઈ બિલકુલ textual lines અને numeric balances દેખાશે? tap કરતાં પહેલાં તમારી આગાહીનો નકશો બનાવો.
Show the answer
script output કરશે:
Category processed: Food
455
Category processed: Misc
80
કેમ? Call 1 માં, સ્પષ્ટ string "Food" default setting ને overwrite કરે છે. Call 2 માં, ત્રીજું argument છોડવું Python ને preset value "Misc" પર પાછું પડવાનું કારણ બને છે. બંને calculations પૂરી થાય છે અને પોતાના results ને wallet1 અને wallet2 update કરવા સાફસૂથરા return કરે છે.
Quiz
શું થશે જો તમે તમારી def line ની અંદર એક default value વાળા parameter ને default value વગરના એક mandatory parameter પહેલાં position કરો?
- script સામાન્ય રીતે ચાલે છે અને માને છે કે ગાયબ items જમણેથી ડાબે ભરાય છે.
- Python એક તરત SyntaxError ફેંકે છે: non-default argument follows default argument.
- function perfectly કામ કરે છે પણ આપોઆપ બધા parameters ને strings માં બદલે છે.
- program એક standard C application ની જેમ compile થાય છે પણ calculation પગલાં skip કરે છે.
Show the answer
Python એક તરત SyntaxError ફેંકે છે: non-default argument follows default argument.
Python ને જરૂરી છે કે બધા mandatory parameters (જેમાં default values નથી) પહેલાં મુકાય. default values વાળા કોઈ પણ optional parameters ને parentheses checklist ના બિલકુલ અંતે group કરવા જોઈએ. આ ક્રમ ગૂંચવવો એક તરત syntax crash પેદા કરે છે.
Quiz
આ નાની function structure નો અભ્યાસ કરો: def add_bonus(balance): total = balance + 50 print(add_bonus(500)) screen પર શું print થશે?
- 550
- SyntaxError: missing return declaration
- None
- 500
Show the answer
None
Python માં, જો એક function એક સ્પષ્ટ return keyword સાથે અથડાયા વગર પોતાની statements execute કરવાનું પૂરું કરે, એ આપોઆપ None નામનો એક ખાસ built-in object પાછો મોકલે છે. આ એક signature university viva પ્રશ્ન છે!
Watch out
Classic ફાંદો: Vanishing Variable
university laboratory exams માં એક classic marks-ગુમાવતી ભૂલ એક definition block ની અંદર remaining = balance - spend જેવું એક function variable લખવું, અને પછી તમારા main script body માં બહાર remaining print કે inspect કરવાનો પ્રયાસ કરવો છે. Python એક NameError: name remaining is not defined ફેંકશે કારણ કે એક function scope ની અંદર બનાવેલું કોઈ પણ variable એ ખાસ functional boundary ની અંદર સંપૂર્ણપણે જીવે અને મરે છે.
Theory
Functions ને Semester 3 Database Modules સાથે જોડવા
dynamic parameters પર નિપુણતા back-end development ને ખૂબ modular બનાવે છે. Semester 3 (BCA303) માં, જ્યારે તમે Python scripts ને એક SQLite database સાથે connect કરો છો, તમે SQL execution lines ને def query_db(sql_string, limits = 10): જેવા single functions ની અંદર encapsulate કરશો. આ તમને સરળ single line triggers વાપરીને તમારા system માં ગમે ત્યાં records તરત fetch કરવા દે છે.
Summary
Key takeaways
- Functions custom naming identifiers પછી def keyword વાપરીને declare કરાય છે.
- Python સ્પષ્ટ parameters અને return type declaration labels સંપૂર્ણપણે છોડી દે છે.
- Default values ને સખ્તાઈથી argument lists ના જમણા છેડે મુકાવા જોઈએ.
- એક સ્પષ્ટ return statement છોડવું એક function ને આપોઆપ None ની એક value આપવા મજબૂર કરે છે.
- એક function body ની અંદર declare કરેલા variables એ ખાસ block scope ના local રહે છે.
- Memory Hook: Packages procedures રાખે છે, values સુરક્ષિત રીતે return કરતાં!