02:53 pm - čūsku dīdīšana: Python f-ju atgriežamās vērtības
Pitõnā jebkurš koda gabals ir funkcija. Mainīgā radīšana, metodes izsaukums, moduļa importēšana, klases definīcija, un lai būtu pavisam rekursīvi arī funkcijas definīcija ir funkcija.
Tālāk pavisam vienkārši par atgriežamajām vērtībām.
>>> def fun():
... return 5
...
>>> fun()
5
Šī funkcija atgriež 5 :)
>>> def fun1():
... return
...
>>> fun1()
>>> fun1() == None
True
>>> fun1() == ''
False
Šī savukārt atgriež
None
. Kas ir speciāla vērtība tukšuma apzīmēšanai. Atšķirīga no
citām loģiskajām
False
vērtībām, kā
"", [], 0
.
>>> def fun2():
... pass
...
>>> fun2()
>>> fun2() == None
True
Lai nodefinētu f-ju vai klasi, kas neko nedara jālieto
pass
komanda. Tas tapēc, lai būtu atkāpe un parseris visu saprastu.
>>> def fun3():
... a = 3
...
>>> fun3() == None
True
Šī funkcija itkā kautko dara, bet tāpat atgriež None
>>> def fun4():
... return 3,4
...
>>>
>>> fun4()
(3, 4)
Lūk šis ir tas sīkums, kas man tiešām piedur. Funcija var atgriezt vairākas vērtības. Lūk!:
>>> a,b = fun4()
>>> a
3
>>> b
4
Un še nāks
pārsteigums lācim.
>>> a,b = b,a
>>> a
4
>>> b
3
Patiesībā tā ir tikai noklusētā
tuple
sintakse. Kā arī strādā ar jebkura tipa objektu. Vienkārši tiek apmainītas mainīgajos glabātās references.
>>> (a,b)=(b,a)
>>> a
3
>>> b
4
Bet ir taču jauki neierobežot sevi ar vienu atgriežamo vērtību vai arī referencēm/pointeriem ieejas parametros.
Jāpiezīmē, ka rakstot f-jas un citiem vārdiem metodes, jāņem vērā, ka None var būt gan rezultāts, gan zīme tam, ka nekas nav atgriezts.
From: | grrr |
Date: | February 19th, 2004 - 04:30 pm |
---|
| | | (Link) |
|
Vienu brīdi gribēju apskatīt to pitonu tuvāk, taču indentation significance mani maķenīt atbaidīja. Starp citu, nebūt ne tāpēc, ka nelietoju. Tieši otrādi - vizuāli strukturēts kods - eto vse naše. Taču neuzticos tam kā prasībai.
Tagad paskatījos tuvāk python saitu, un skatoties uz valodu, secināju, ka visai tomēr līdzīga manam favorītam Pike.
Un tomēr izbrīnījos izlasot Pike www:
Programs written in Python look very different from Pike programs, but Python and Pike are similar when it comes to ideas and use. Python is more widely used and has more libraries available. Pike on the other hand is faster, has a more advanced type system, and has better support for object-oriented programming. Pike's more C++-like syntax makes it easier to get started with for programmers who know C++, C or Java.
Jo vizuāli kods izskatās stipri savādāks. :)
ar tām atkāpēm ir tā, ka vispirms pārgāju no viena taba uz 4 spacēm, tad uz 2. no sākuma ir biku problēmas, galvenokārt ar neredzamo vaitspeisu, bet to var padarīt redzamu.
From: | grrr |
Date: | February 19th, 2004 - 06:04 pm |
---|
| | | (Link) |
|
nujā, bet vai vajag valodu, kurā ir jāapiet (šādas) problēmas? :)
vpročem, nesaku nē. par maz zinu vēl.
teorētiski tā vispār nav problēma :)
praktiski ir tā, ka vēlāk nav skaidrs, kapēc ir jālieto {}; () un tamlīdzīgas lietas:
template <class T>
void mystify(T a, T b)
{
if ( a > b )
{
doMagic();
return a;
}
else
{
return b;
}
}
ja var šitā:
def mystify(a, b):
if a > b:
doMagic()
return a
else:
return b
From: | grrr |
Date: | February 19th, 2004 - 06:29 pm |
---|
| | | (Link) |
|
nez, man pirmais variants šķiet pārskatāmāks... :)
ir ok ..
assambly var rakstīt šādi
inc ax ;
mov ax , bx;
pitonā var rakstīt šādi:
def foo():
#{
blaBla();
#}
vai arī
def foo():
#begin
blaBla();
#end
vai arī kombinēt
def foo():
#{
blaBla();
#end
</pre>
;-)
From: | grrr |
Date: | February 19th, 2004 - 06:47 pm |
---|
| | | (Link) |
|
heheh, ar pliku # jau pietiek.
bet saki -- ja jau lietot #, tad kāpēc vispār whitespace? ;)
// off to birthday, see you later.
pēdējā piemērā formatējums nepareizs. pietiek ar atkāpi+#
atkāpes tāpat obligātas.
:)