
Index
इस chapter में हम ये सब चीजे सीखने वाले हैं. तो कमर कस लीजिये और हो जाईये तैयार.
- Introduction
- Functions
- Using a function[calling a function]
- Python function types
- Structure of a python module
- Importing modules in python program
- Importing python module
- Importing select objects from a module
- Pythons processing of import command
- Invoking python’s built-in functions
- Working with math module
- Working with random module
Introduction:
दोस्तों हम सभी ने बहुत सारे books बड़े मजे से पढ़े होंगे जैसे- कहानी की किताबे , novels, अपनी course की book फिर उसकी रिफरेन्स books इत्यादि. याद करे , इन सभी में एक चीज़ common होगी, नहीं पता चला? चलिए बता देती हूँ, इन सभी books में chapter में divided होते हैं. क्या आप बता सकते हैं ऐसा क्यों होता हैं? क्युकी book के सभी पेज को एक साथ ही रख कर जोड़ देंगे बिना किसी chapters के तो book boring और आसानी से समझ में भी नहीं आएगी. इसलिए एक बड़े unit को छोटे और manageable unit को करना अच्छी startegy है.
यही same ideology (बड़े part को छोटे part में divide करना) जब programming में apply होता है तो उसे Modularity कहते हैं. एक program को individual component (जिसे modules कहते हैं) को partition करने के act को modularity कहते हैं. module खुद में ही अलग unit होता है जैसे- chapter.
Program को partition करने का reason नीचे दिया गया है:
Program में कुछ हद तक complexity को कम करता है.
ये program में ही number ऑफ़ well-defined documented boundaries बना देता है. जैसे- एक chapter एक book में करता है.
एक useful feature भी है program में modules रखने का और ये है, modules के contents को बार बार दुसरे program में use कर सकते हैं बिना उसके कोड को rewrite या recreate किये बिना.
चलो एक example ले लेते हैं ताकि आपको ये और अच्छे से समझ आ सके.
जैसे- किसी भाई ने एक module बनाया है ‘Playaudio’ जिससे हम अलग audio formats को play कर सकते हैं जो अलग sources से आता है- mp3player, fm-radio etc. अब कोई अलग program लिख रहा है लेकिन उसे fm-radio का input चाहिए तो उसे कोड लिखने की ज़रुरत नहीं है उसकी जगह पर वो PlayAudio के fm-radio के functionality को use कर सकते हैं. है न amazing? re-usage बिना re-work के यही modules की खुबसूरती है.
इस chapter में भी हम पहले function और module को introduce करेंगे. फिर हम modules को python में कैसे इस्तेमाल करते है वो देखेंगे. इस chapter में हम-math module और random module देखेंगे.
Function
programming language में function का क्या मतलब होता है इसे समजने के लिए नीचे की lines ध्यान से पढ़े.
maths में हमने polynomials के साथ काम क्या होगा. जैसे- हमारे पास polynomial 2x2 है.
अब इसमें हम x=1 देंगे तो result में 2*1**2=2
अगर इसमें x=3 देंगे तो result में 2*3**2=18
polynomial में में इस को represent करेंगे तो f(x)=2x2 ऐसे लिखेंगे.
इसे हम उपर के calculation से कह सकते हैं:
f(1) | 2 |
f(2) | 8 |
f(3) | 18 |
यहाँ f(x)= 2x2 को function कहते हैं. जहा function f है, x एक arugment है और 2x2 functionality है. argument x की value को बदलने पे f(x) अलग value return करेगी.
बस तो, इसी के basis पर programming language भी function को support करती है. program में हम function को बना सकते है जिसमे:
- Arguments भी हो सकते हैं ( values दिए जाना)
- Certain functionality को perform करना (कुछ set ऑफ़ statements)
- Result को return भी कर सकता है.
जैसे- हम उपर दिए हुए function को python में ऐसे लिख सकते हैं. जहाँ
- Def का मतलब है function की definition start हो रहा है.
- Def के बाद वाला identifier calcsomething function का नाम है.
- Variables/identifier जो paranthesis के अन्दर है वो arguments या parameters है (function को जो value दिया जाए) यहाँ calcsomething में x अरुगेमेंट है.
- Def लाइन के अंत में colon है जो block बनता है तब ज़रूरी है.
- Function के नीचे जो statement indented है (block below def line) function के functionality (working) को define करता है. इसे हम block- of-the-function. यहाँ दो statement है function calcsomething के body में.
- Return statement computed result को return करता है.
non-indented statement function के part नहीं है.
Function का उपयोग करना (calling a function)
python में जब हमे function का उपयोग करना होता है जो पहले से defined होता है हमे उस function को call करने के लिए statement लिखना होता है. नीचे दिया हुआ statement function को कैसे call करना है वो बताया है:
जैसे हमने कोड में calcsomething को call करने लिए calcsomething(a) लिखा है. यहाँ a argument की तरह function को हमने दिया है. इसे हम दुसरे तरीके से भी लिख सकते हैं. जैसे calcsomething(4). यहाँ 4 argument हैं.
याद रखे जितने number है parameters है उतने ही values पास करने होते हैं. function को call करने के तरीके को अलग अलग होता है जैसे-
Passing literal as argument.
calcsomething(3), इसमें हमने value 4 को argument दिया है.
Passing variable as argument
a=5
calcsomething(a)
Taking input और फिर उसे argument देना
a=input(“Enter the number:”)
calcsomething(a)
Function को किसी और statement के साथ call करना
print calcsomething(3)
Expression के अन्दर function को call करना
c=5*calcsomething(5)
आगे हम function के types पढेंगे.
Python Function Types
Python में पहले से ही बहुत सारे function-definition से preloaded है जिनका हम अपनी ज़रुरत के हिसाब से इस्तेमाल कर सकते हैं. हम खुद से भी नए function create कर सकते हैं. python के functions नीचे दिए हुए तीन category में से कोई भी category को belong कर सकता है:
- Built-in functions:
ये function पहले से defined होते हैं और इसे हम कभी भी इस्तेमाल कर सकते हैं. इनमे से हमने पहले भी कई built-in function का इस्तेमाल किया है जैसे- len(), type(), int(), raw_input()
- Functions जो module में defined हैं:
ये function किसी particular module में defined होते हैं और इन्हें हम access तब ही कर सकते हैं जब हम इसके corresponding module को import करेंगे. जैसे- अगर हमे कोई sin() नाम के function को use करना है पर ये math module में defined है तो पहले हमे math module को import करेंगे.
- User defined functions:
ये वो functions हैं जिन्हें programmer खुद define करता है. as programmer हम खुद से भी function बना सकते हैं. हम user defined function को अगले chapter में पढेंगे.
इस chapter में हम built-in function और दो module जो python में पहले से defined है – math module और random module इसके बारे में पढेंगे.
Python module का Structure
एक python module में function के अलावा भी बहुत कुछ होता है. Python module एक normal python file (.py) की तरह होती है जिसमे एक या उससे ज्यादा objects होते हैं जो किसी न किसी particular task से related होते हैं. जैसे कि
- docstrings: triple quoted comments; documentation के लिए useful होता है. documentation के लिए, docstring हमेशा पहला string होता module/function-body/class.
- variables और constants: data के लिए labels
- classes: templates/blueprint certain kind के objects बनाने के लिए.
- objects: classes के instances. दरअसल, object real या abstract entity को represent करता है.
- statements: instructions
- functions: group of instruction को कहा जाता है.
आगे हम classes और objects के concept को discuss करेंगे.
python modules जो python में preloaded होते हैं वो standard library modules.
ये compositio/structure python module का है. चलिए एक example देख लेते हैं. इस example में module का नाम tempConversion है. ये compositio/structure python module का है.
note: ये python का standard library से module नहीं है ये user defined module है.
ये sample module(tempConversion.py) है.
उपर के module में elements जो present है:
module के docstrings documentation के लिए display किया जाता है जब हम नीचे दिए गए command को python shell prompt पर >>> run करते हैं. लेकिन ये उस module को import करने के बाद run किया जाता है.
import करने का command: import
docstring के लिए: help()
जैसे हमने उपर tempconversion module बनाया है, तो उसे import करके ऊपर के command को लिखते हैं. python सभी docstrings, module name, filename, function के नाम के साथ display करेगा.
एक और function dir() है जो apply module पे करने पे सभी के name दिखाता है जो अन्दर defined हैं.
docstrings लिखने का तरीका:
- पहला लैटर पहली line का capital होना चाहिए .
- दूसरी line blank होनी चाहिए.
- बाकी के डिटेल्स तीसरी line से चालू होना चाहिए.
Python program में module का imporation
जैसे की हमने पहले भी discuss कर चुके है इस topic के बारे में. python import statements का इस्तेमाल करता है module को import करने के लिए. import statement दो तरीके से use हो सकता है:
- जब हमे pure module को import करना हो: import command
- जब हमे selected objects को import करना हो: fromimport
Importing Entire module
import statement का इस्तेमाल न सिर्फ पुरे module को import करने में किया जाता है बल्कि अगर हम कुछ items को भी import करना चाहे तो भी कर सकते हैं.
syntax:
import module [,module2 [,….module]]
example:
import time
दो module को import करना हो:
import decimals, fractions
ये statement उस module के सभी चीजों को import करता है. एक बार import करने के बाद हम किसी भी function/definition को ऐसे import कर सकते हैं.
<module-name>.<function-name>
जैसे-
import tempconversion
tempconversion.to_centigrate(98.6)
Importing select objects from a module
अगर हमे पुरे module को छोड़ सिर्फ कुछ items को import करना हो तो ये from<module>import के statement का इस्तेमाल होगा.
syntax:
from<module>import<objectname>[,<objectname>[…]
Single object को import करना:
तो हम ये लिख सकते हैं.
from module math import pi
यहाँ math module है और हम constant pi जो उस module में declare है उसे import कर रहे हैं. अब यहाँ हम constant pi को बिना module के name को prefix करे इस्तेमाल किया जा सकता है. जैसे उसे print करने के लिए
print pi
नाकी print math.pi
multiple object को import करना है:
उसके लिए हम ये लिख सकते हैं :
from module math import sqrt, pow
सभी objects module के import करना हो:
ये हम इस्तेमाल कर सकते हैं:
fromimport*
math module के सभी objects import करना हो :
from math import *
Python processing of import command
जब भी हम import command issue करते हैं तो उसे process करने के लिए python internally ही कुछ steps करता है. इससे पहले की हम import statement की internal processing सीखे, हम पहले namespace discuss करेंगे. ये internal processing के लिए important concept है.
Namespace
namespace एक space है जो एक bunch of names को hold करता है. python की terms में इसे explain करने से पहले हम एक real life example देखें. Suppose करे, interstate student seminar है, वहा पर अलग states से students आये हुए है जिसमे कुछ student के name similar है. मान लीजिये seminar में तीन Nalini हैं एक kerala, एक Delhi और एक Odisha से हैं.
जब तक ये तीनो अपने अपने state ward में हैं, तब तक कोई confusion नहीं होगा. क्युकी Delhi में एक nalini है, kerala और odisha में भी. अगर कोई delhi state में nalini को call करेगा तो automatically delhi student nalini की बात हो रही है. Same odisha और kerala के case में भी है.
Problem तब आएगी, जब delhi, odisha और kerala states साथ में बैठेंगे. अब अगर nalini का नाम call किया जाएगा तो confusion होगा-कौन सी state की nalini? इसलिए सभी को अपना name qualify होगा odisha’s nalini या kerala’s nalini या delhi’s nalini.
उपर के example से हम कह सकते हैं, kerala ward का अपना अलग namespace होगा जहा कोई दो nalini नहीं है ठीक उसी तरह delhi और odisha के namespace के साथ भी.
Python में भी हम namespace को ऐसे define कर सकते हैं, namespace एक logical environment है जो logical group के related object को hold करता हैं. उसके member object को refer करने के लिए किसी prefix की ज़रुरत नहीं हैं.
हर module जो .py file) है, py python file का extension होता है. python namespace बनता है जिसके name module के name से similar होते हैं. मतलब, अगर module time है तो उसका namespace का नाम भी time होगा.
जब दो namespace साथ होता है, object-name dispute को resolve करने के लिए python हमसे objects को name को qualify करने को कहता है उसे qualify करने के लिए . जैसे हमने real-life के example में किया था delhi’s nalini. जब हम एक namespace में ही होते हैं तो object को किसी prefix की ज़रुरत नहीं होती है.
Processing of import command
जब हम import command issue करते हैं तो internally ये चीज़े होती हैं:
- Imported module के code को interpret और execute किया जाता है.
- Defined functions और variables module में जो created होते हैं अब वो program में available हैं जिसने import किया है.
- Imported module के लिए, एक नया namespace setup होता है जिसका name module के name से similar होता है.
जैसे- आपने अगर module myMod import किया है है अपने program में तो myMod के objects को हम refer myMod. से करेंगे. अगर myMod में कोई function checksum() करके function हैं, तो उसे refer करने के लिए myMod.checksum() अपने program में लिखेंगे.
Processing of fromimport
जब हम fromimport
- imported module के code को interpret और execute किया जाता है.
- सिर्फ पूछे हुए functions और variables module में से program में available कराया जाता है.
- कोई नया namespace नहीं बनता, imported definition current namespace में ही add हो जाता है.
इसे हम फिगर से समझते हैं.
इसका मतलब अगर आपके program में पहले से एक variable है जिसका name imported module के variable से same है, तो variable जो आपके program में है वो imported member, जिसका same name है, उसको hide कर देगा. क्युकी दो variables same name से एक namespace में नहीं हो सकते हैं. नीचे के code को देख कर समझ जायेंगे.
चलिए हम अपना पहला module को ही consider करते हैं.
from tempConversion import*
Freezing_c=-17.5
print Freezing_c
उपर का कोड ये print करेगा
-17.5
अगर हम Freezing_c=-17.5 को comment बना देते हैं.
from tempConversion import*
#Freezing_c=-17.5
print Freezing_c
output:
0.0
क्युकी Freezing_c करके कोई variable का name program में share नहीं है. इसलिए hidden नहीं है.
Invoking Python’s built-in function
Python interpreter के पास number of functions बने हुए है जो हमेशा ही available होते हैं. उसके लिए किसी module को import करने के लिए ज़रुरत नहीं है. मतलब, built-in function current namespace के part होते हैं. इसलिए python built-in function को directly हम use कर सकते हैं.
function-name ()
जैसे- हमने पहले भी कुछ built-in function का इस्तेमाल किया है जैसे-raw_input(), input(), float(), type(), len() etc. ये सभी built-in function हैं जिसे हम किसी भी module के नाम से prefix नहीं होते हैं.
नीचे दिए हुए program को देखे जिसमे built-in function का उपयोग किया जाता है.
उपर का program का output नीचे दिया हुआ है.
please note-oct(), hex(), और bin() जो binary number में convert करता है ये सभी कोई number return नहीं करते हैं, ये converted number को string में represent कर return करता है.
Working with math module
python के standard library बहुत सारे module जिसके अलग functionalities हैं, उसका collection है जैसे- module time time related functions को offer करता है.
ठीक उसी तरह python के standard library में math करके module है जो math related function जो सभी number types except complex number पे काम करता है.
math module के function के काम करने के लिए पहले math module को import करना है:
import math
नीचे दिए हुए table में math module के useful function लिखे हुए और उनको use करने के लिए math. अपने program में लिखना होगा.
S.no. | Function | Prototype(general form) | Description | example |
1. | ceil | math.ceil(num) | ceil() function smallest integer return करता है जो num से less नहीं होती. | math.ceil(1.03) 2.0 output देता है. |
2. | sqrt | math.sqrt(num) | sqrt()function num का square root return करता है. अगर num<0, तो domain error होता है. | math.sqrt(81.0) 9.0 output देता ही. |
3. | exp | math.exp(arg) | exp() function natural logarithm e raised to the argument return करता है. | math.exp(2.0) का output e2 का output देता है. |
4. | fabs | math.fabs(num) | fabs()function num का absolute value को return करता है. | math.fabs(1.0)output 1.0 देगा.
math.fabs(-1.0) output 1.0 देगा. |
5. | floor | math.floor(num) | floor()function largest integer return करता है जो num से बड़ा नहीं होता है. | math.floor(1.03) output 1.0 देगा.
math.floor(-1.03) output -2.0 देगा. |
6. | log | math.log(num,[base]) | log()function num का natural logarithm return करता है. लेकिन domain error occur होता है जब num negative होता है और range error occur होती है जब arugment num zero होता है. | math.log(1.0) output natural logarithm 1.0 का देता है.
math.log(1024,2) output logarithm 1024 का base 2 पे देगा. |
7. | log10 | math.log10(num) | log10()function base10 logarithm num के लिए return करता है. domain error occur होता है अगर num negative होता है और range error अगर argument zero होता है. | math.log(1.0) base 10 पे 1.0 का logarithm output देगा. |
8. | pow | math.pow(base,exp) | pow()function base raised to exp power i.e. base exp को return करता है. domain error occur होता है अगर base=0 और exp<=0 और base<0 और exp integer नहीं हुआ तब भी ये error होता है. | math.pow(3.0,0) का value 30 होगा. |
9. | sin | math.sin(arg) | sin() function arg का sine return करता है. arg की value radians में होनी चायेही. | math.sin(val)
val एक number है. |
10. | cos | math.cos(arg) | cos() function arg का cosine return करता है. arg की value radians में होनी चायेही. | math.cos(val)
val एक number है. |
11. | tan | math.tan(arg) | tan() function arg का tangent return करता है. arg की value radians में होनी चायेही. | math.tan(val)
val एक number है. |
12. | degrees | math.degrees(x) | degrees() function angle x को radians से degrees में convert होता है. | math.degrees(3.14) output 179.91देगा. |
13. | radians | math.radians(x) | radians()function angle x को degrees से radians में convert करता है. | math.radians(179.91) का output 3.14 देगा. |
उपर के program का output
math module दो constants भी available कराती है:
math.pi, जो p की value 3.141592 देती है.
math.e, जो e का value 2.71821 देती है.
Working with random module
python के पास random module है जो random-numbers generate करता है. random number मतलब कोई number जो by chance generate होता है,randomly.
इसे use करने के लिए random module को import करे.
import random
दो most common random number generators function random module में है:
random() | ये random floating point number N output देता है जिसका range [0.0,1.0] होता है, 0.0<=N<1.0 number हमेशा 1.0 से कम ही होता है. |
randint(a,b) | ये random integer N return करता है जिसका range (a,b) होता है, a<=N<=b. होता है. ये हमेशा integer generate करता है. |
चलिए कुछ इसके example देखते हैं:
1.Random floating point number 0.0 से 1.0 के बीच में generate करने के लिए.
import random
print random.random()
0.0548924789
2.अगर हमे random floating number एक range में lower to upper में generate करना हो तो:
a.random() को upper और lower limit के difference से multiply कर दे.
b.फिर उसे lower limit से add करे.
import random
print random.random()*(40-10)+40
32.259456
3.अगर हमे कोई random integer एक range में generate करना हो तो randint() का उपयोग करे.
print random.randint(40,10)
25
This does interest me
Thanks Buddy..