uz
Feedback
ToCode

ToCode

Kanalga Telegram鈥檇a o鈥榯ish

讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Postlar arxiv
ToCode
1 419
# 5. Find the first different element
# (still a no-op, until someone will request its next)
duplicates = itertools.dropwhile(lambda p: p[0] == p[1], pairs)

# 6. Print the first duplicate running everything
print(next(duplicates)[0])
讜讻谉 讛诪讟专讛 砖诇 讛拽讜讚 讛讝讛 讛讬讗 诇砖讞拽 注诐 讞讬讘讜专讬 Generators 诇讗 诇诪爪讜讗 讗转 讛讚专讱 讛讬注讬诇讛 讗讜 讛拽爪专讛 讘讬讜转专 诇讝讛讜转 讗讬讘专 讻驻讜诇 讘专砖讬诪讛.

ToCode
1 419
# 讙谞专讟讜专讬诐 讘 Python: 讝讛讬专讜转 专拽 诇讗 诇砖讘讜专 讗讞讚 讛诪谞讙谞讜谞讬诐 砖讗讛讘转讬 讘 Python 诪讛专讙注 讛专讗砖讜谉 讛讬讛 诪谞讙谞讜谉 讛 Generators 讗讜 讘注讘专讬转 驻讜谞拽爪讬讛 讬讜爪专转: 讗谞讞谞讜 诪讙讚讬专讬诐 诇驻讬讬转讜谉 讗讬讱 住讬讚专转 注专讻讬诐 诪住讜讬诪转 谞专讗讬转 讜驻讬讬转讜谉 讻讘专 讬讘谞讛 讗转 讛注专讻讬诐 诪讛住讬讚专讛 注诇 驻讬 讚专讬砖讛. 诇讗 转诪讬讚 拽诇 诇专讗讜转 诪讛砖谞讬讛 讛专讗砖讜谞讛 砖 Generators 注讜讘讚讬诐 诪诪砖 讟讜讘 讬讞讚 (诇驻讞讜转 讻诇 注讜讚 讗谞讞谞讜 诇讗 砖讜讘专讬诐 讗转 讛砖专砖专转). ## 讗讬讱 讝讛 注讜讘讚 讘诪讜讚讜诇 itertools 讗驻砖专 诇诪爪讜讗 诇讗 诪注讟 Generators 讗讝 讘讜讗讜 谞转讞讬诇 注诐 讻诪讛 讚讜讙诪讗讜转 诪砖诐 讜讗讝 谞专讗讛 诪讛 拽讜专讛 讻砖讗谞讞谞讜 讘讜谞讬诐 Generators 讞讚砖讬诐 诪砖诇谞讜. 讛驻讜谞拽爪讬讛 itertools.cycle 诇讚讜讙诪讛 讛讬讗 驻讜谞拽爪讬讛 砖诪讬讬爪专转 住讬讚专讛 讗讬谞住讜驻讬转 砖诇 注专讻讬诐 诪转讜讱 诪住驻专 拽讟谉 砖诇 注专讻讬 讘住讬住 讘讗诪爪注讜转 讞讝专讛 讗讬谞住讜驻讬转 注诇 讛注专讻讬诐. 讛谞讛 讚讜讙诪讛 拽讟谞讛 诇讛诪讞砖讛 - 谞谞讬讞 砖讬砖 诇谞讜 砖谞讬 砖讞拽谞讬诐 讘诪砖讞拽 诪讘讜住住 转讜专讜转, 讗讝 谞讜讻诇 诇讛砖转诪砖 讘 cycle 讻讚讬 诇注讘讜专 讘讬谞讬讛诐:
>>> players = itertools.cycle(['Tom', 'Jane'])
>>> print(f"It's {next(players)}'s turn")
It's Tom's turn
>>> print(f"It's {next(players)}'s turn")
It's Jane's turn
>>> print(f"It's {next(players)}'s turn")
It's Tom's turn
>>> print(f"It's {next(players)}'s turn")
It's Jane's turn
>>> print(f"It's {next(players)}'s turn")
It's Tom's turn
>>> print(f"It's {next(players)}'s turn")
It's Jane's turn
讛驻讜谞拽爪讬讛 itertools.islice 讞讜转讻转 专拽 "驻专讜住讛" 诪转讜讱 Generator. 讜诪讛 砖讬驻讛 砖讗谞讬 讬讻讜诇 诇砖诇讘 讗讜转讛 注诐 cycle:
>>> ''.join(list(itertools.islice(itertools.cycle('hello '), 50)))
'hello hello hello hello hello hello hello hello he'
注讚讬讬谉 诪转讜讱 讗讜转讜 诪讜讚讜诇 讛驻讜谞拽爪讬讛 accumulate 诪讞讝讬专讛 住讬讚专讛 砖诇 转讜爪讗讜转 讛驻注诇转 驻讜谞拽爪讬讛 讻诇 驻注诐 注诇 讛讗诇诪谞讟 讛讘讗. 讗谞讬 诪诪砖讬讱 讗转 讛讛诪讞砖讛 讜诪讜住讬祝 讗讜转讛 诇诪砖讞拽:
>>> list(itertools.islice(itertools.accumulate(itertools.cycle([10, 20, 30, 40]), operator.add), 10))
[10, 30, 60, 100, 110, 130, 160, 200, 210, 230]
## 讗讬讱 讝讛 谞砖讘专 诪讗讞专 讜 Generators 注讜讘讚讬诐 讻诇 讻讱 讟讜讘 讬讞讚 讞砖讜讘 诇砖讬诐 诇讘 讻砖讗谞讞谞讜 讻讜转讘讬诐 Generator 讞讚砖 诇讗 诇砖讘讜专 讗转 讛砖专砖专转. 砖讬诪讜 诇讘 诇拽讜讚 讛讘讗:
import itertools
from collections import OrderedDict

def nodups(collection):
    s = OrderedDict()

    for item in collection:
        s[item] = True

    for item in s:
        yield item
讛驻讜谞拽爪讬讛 nodups 讛讬讗 Generator 砖讗诪讜专 诇讛讞讝讬专 讗转 讻诇 讛讗诇诪谞讟讬诐 诇诇讗 讻驻讬诇讜讬讜转 诪讛讗讜住祝 砖拽讬讘诇讛. 讬讻讜诇讬诐 讻讘专 诇专讗讜转 讗转 讛讘注讬讛 讘驻讜谞拽爪讬讛? 讘讙诇诇 讛讞诇讜拽讛 诇砖谞讬 砖诇讘讬诐 讗讬 讗驻砖专 讬讛讬讛 诇讞讘专 驻讜谞拽爪讬讛 讝讜 诇砖专砖专转 Generators: 讗诐 讛讬讗 转谞住讛 诇讛专讬抓 讗转 讛诇讜诇讗讛 讛专讗砖讜谞讛 注诇 collection 讗讬谞住讜驻讬, 讛诇讜诇讗讛 诇注讜诇诐 诇讗 转住转讬讬诐 讜讗祝 驻注诐 诇讗 讬讛讬讛 砖讜诐 yield. 诇讚讜讙诪讛 讛拽讜讚 讛讘讗 讬讬讻谞住 诇诇讜诇讗讛 讗讬谞住讜驻讬转:
list(itertools.islice(nodups(itertools.cycle('aaaaaaaaaaaaabbbbbbbbbbbbbbbbccccccccccc')), 10))
讙讬砖讛 讟讜讘讛 讬讜转专 转讬专讗讛 讻讱:
def better_nodups(collection):
    s = set()
    for item in collection:
        if item not in s:
            yield item

        s.add(item)
讗谞讬 注讚讬讬谉 诪砖转诪砖 讘拽讘讜爪讛 讻讚讬 诇讚注转 讗讬讝讛 讗诇诪谞讟讬诐 专讗讬转讬 讜诇讻谉 注讚讬讬谉 讬砖 诪讙讘诇讛 砖讻诇 讛讗诇诪谞讟讬诐 讘 collection 爪专讬讻讬诐 诇讛讬讜转 讻讗诇讛 砖讗讜讻诇 诇砖诪讜专 讘转讜讱 set, 讗讘诇 讛驻注诐 讗谞讬 讬讻讜诇 诇讛专讻讬讘 讗转 讛 Generator 讛讝讛 讘砖专砖专转 注诐 Generators 讗讞专讬诐. ## 砖讬诇讜讘 Generators 讘讜讗讜 谞砖诇讘 讗转 讻诇 讛 Generators 砖专讗讬谞讜 讜谞讻转讜讘 诪砖讛讜 诪讜注讬诇 - 诇诪砖诇 拽讜讚 砖诪讜爪讗 讜诪讚驻讬住 讗转 讛讗诇诪谞讟 讛讻驻讜诇 讛专讗砖讜谉 讘专砖讬诪讛: 1. 专砖讬诪转 讛注专讻讬诐 转讛讬讛 讛 Collection 讛讘住讬住讬 砖诇讬. 讗驻注讬诇 注诇讬讛 iter 讻讚讬 诇讛驻讜讱 讗讜转讛 诇 Iterator. 2. 讗转 讛专砖讬诪讛 讗砖诇讞 诇 itertools.tee 砖讬砖讻驻诇 讗讜转讛 诇砖谞讬 讗讬讟专讟讜专讬诐. 3. 讗讞讚 诪讛诐 讗砖诇讞 诇 better_nodups 讻讱 砖诇讗 讬讻讬诇 讻驻讬诇讜讬讜转. 4. 注讻砖讬讜 讗专讜抓 注诇 砖谞讬 讛讗讬讟专讟讜专讬诐 讜讗讞驻砖 讗转 讛讗诇诪谞讟 讛专讗砖讜谉 砖诇讗 砖讜讜讛 讘讬谞讬讛诐. 讝讛 讛讗诇诪谞讟 讛讻驻讜诇 讛专讗砖讜谉 讘住讬讚专讛. 讛谞讛 讛拽讜讚 诇讗诪讬爪讬诐:
import itertools
from collections import OrderedDict

# 1. Create a base list
# (note 2 is the first duplicate item)
base = iter([1, 2, 3, 5, 4, 11, 12, 15, 2, 10, 20, 99])

def uniq(collection):
    s = set()
    for item in collection:
        if item not in s:
            yield item

        s.add(item)

# 2. Send the list to tee
[c1, c2] = itertools.tee(base)

# 3. Remove duplicates from c2
# (though this is still a noop until we start taking elements)
c2 = uniq(c2)

# 4. Create an iterator on the pairs
# (still a no-op)
pairs = zip(c1, c2)

ToCode
1 419
转讜讚讛 诇讻诇 讛诪砖讬讘讬诐 谞专讗讛 砖讬砖 讻讬讜讜谉 讘专讜专. 讗注讚讻谉 讻讗谉 讻砖讚讘专讬诐 讬转讞讬诇讜 诇讛转讘砖诇

ToCode
1 419
# 讗讬讱 讗谞讬 讗讜讛讘 诇诇诪讜讚: 诪讞砖讘讜转 注诇 讛讚专讻讛 讜诇讬诪讜讚 讘讛讜讘诇转 讛转诇诪讬讚 讗谞讬 讝讜讻专 讘转讜专 讬诇讚 讘讘讬转 住驻专 砖讛讬讜 拽爪转 砖讬注讜专讬诐 砖诪讚讘专讬诐 讘讛诐 讗讘诇 讛讬讜 诇讗 诪注讟 砖讬注讜专讬诐 砖讘讛诐 讛诪讜专讛 诪讚讘专转 讜讗转讛 讬讜砖讘 讜讻讜转讘. 讗讞专讬 讝讛 讘讗讜谞讬讘专住讬讟讛 砖讜讘 讛讬讜 拽爪转 砖讬注讜专讬诐 注诐 讚讬讜谞讬诐 讗讘诇 讘专讜讘诐 讛诪讜讞诇讟 讗转 讛诪讜专讛 讛讞诇讬祝 驻专讜驻住讜专 砖注讜诪讚 诇讬讚 讛诇讜讞 讜诪讚讘专 讜讗转讛 砖讜讘 讬讜砖讘 讜讻讜转讘. 讗谞讬 诇讗 讝讜讻专 讛专讘讛 诪讛转讜讻谉 砖诇 讗讜转诐 砖讬注讜专讬诐, 诇讗 讘讘讬转 住驻专 讜诇讗 讘讗讜谞讬讘专住讬讟讛, 讗讘诇 讛讞讜讜讬讛 砖诇 诇砖讘转 讜诇讻转讜讘 讻诇 诪讛 砖讗讜诪专讬诐 诇讱 讜讘讛诪砖讱 诇诇诪讜讚 讗转 讝讛 诇拽专讗转 讛诪讘讞谉 讛讬讗 讞讜讜讬讛 诪注爪讘转. 讛讬讗 讞讜讜讬讛 砖诪砖讚专转 讬讞住讬 讻讜讞讜转, 转驻拽讬讚讬诐 讜转驻讬住讛 砖诇 讛诪拽讜诐 砖诇讱 讘注讜诇诐. 讚讜讜拽讗 讗转 讛讞诇拽 讛讝讛 砖诇 诪注专讻转 讛讞讬谞讜讱 诇拽讞 诇讬 讛专讘讛 讬讜转专 讝诪谉 诇砖讻讜讞. 讜诇讻谉 讻砖讗谞讬 诪住转讻诇 拽讚讬诪讛 注诇 诇讬诪讜讚 讜诇讜拽讞 讚讜讙诪讗讜转 诪讛爪诇讞讜转 诇讬诪讜讚讬讜转 砖讛讬讜 诇讬 讗谞讬 诪讚诪讬讬谉 讗转 讛注拽专讜谞讜转 讛讘讗讬诐: 1. 讗谞讬 专讜爪讛 诇拽讘讜注 讻诪讛 诇讛转注诪拽 讘讻诇 谞讜砖讗 诇驻讬 诪讬讚转 讛注谞讬讬谉 砖诇讬 讘讜. 2. 讗谞讬 专讜爪讛 诇拽讘讜注 讻诪讛 讝诪谉 诇讛砖拽讬注 讘诇讬诪讜讚 讻诇 讬讜诐, 诇驻讬 诪讛 砖诪住转讚专 讗讜 诪转讞砖拽 诇讬. 3. 讗谞讬 专讜爪讛 诇讘讞讜专 诪讛 讬讛讬讛 讛谞讜砖讗 讛讘讗 砖讗诇诪讚, 诪转讜讱 诪讘讞专 砖诇 2-3 讻讬讜讜谞讬 讛转驻转讞讜转 (拽爪转 讻诪讜 讘诪砖讞拽讬 讗住讟专讟讙讬讛 讬砖谞讬诐 砖讗转讛 讬讻讜诇 诇讘讞讜专 讗讬讝讛 讟讻谞讜诇讜讙讬讛 诇讞拽讜专). 4. 讘讬谉 讗诐 讛砖拽注转讬 讘诇讬诪讜讚 15 讚拽讜转 讗讜 4 砖注讜转, 讗谞讬 专讜爪讛 诇拽讞转 诪砖讛讜 砖讗讜讻诇 诇讛砖转诪砖 讘讜 讘讛诪砖讱 讛讬讜诐 讘住讬讟讜讗爪讬讜转 讗讞专讜转: 讗讬讝讜砖讛讬 讛讘谞讛, 讗讬讝砖讛讜 讟专讬拽, 讗讬讝讜砖讛讬 讞砖讬讘讛 讗讞专转 砖转注讝讜专 诇讬 讘讬讜诐 讬讜诐. 5. 讗谞讬 专讜爪讛 诇讘讞讜专 讗转 住讜讙 讛驻注讬诇讜转 讛诇讬诪讜讚讬转 砖转转讗讬诐 诇讬 - 诇驻转讜专 讞讬讚讛, 诇爪驻讜转 讘讜讬讚讗讜, 诇拽专讜讗 诪讗诪专, 诇讻转讜讘 诪讗诪专, 诇讛转拽讚诐 讘驻专讜讬拽讟, 诇讚讘专 注诐 讞讘专讬诐 注诇 诪讛 砖诇诪讚转讬, 诇讛住讘讬专 诇诪讬砖讛讜 讗讞专, 诇讙砖转 诇诪讘讞谉, 诇讻转讜讘 注讘讜讚讛. 6. 讛讞讬讬诐 诪诇讗讬诐 讛驻转注讜转 讜转讝诪讜谞讬诐 讝讛 注住拽 诪住讜讘讱. 讗谞讬 专讜爪讛 诇讛讬讜转 诪住讜讙诇 诇诇诪讜讚 注诇 讗砖 拽讟谞讛 转拽讜驻讛 讘讝诪谉 砖讗谞讬 注讜砖讛 讚讘专讬诐 讗讞专讬诐, 讜讘转拽讜驻讛 讗讞专转 诇讞讝讜专 讜诇讛砖拽讬注 讬讜转专 讘诇讬诪讜讚讬诐, 讘诇讬 砖讗爪讟专讱 诇讛住讘讬专 诇诪注专讻转 诪讛 注砖讬转讬 讘讝诪谉 讛讝讛. 7. 讗谞讬 专讜爪讛 诇拽讘诇 驻专住 讗诪讬转讬 讜住驻爪讬驻讬 砖诪转讗讬诐 诇诪讟专讜转 砖诇讬 讻砖讛讙注转讬 诇讗讘谉 讚专讱 诪砖诪注讜转讬转 讘转讛诇讬讱 (讜诇讗, 爪讬讜谉 讟讜讘 讘转注讜讚讛 诪诪砖 诇讗 讬砖诪讞 讗讜转讬).

ToCode
1 419
讛讬 讞讘专讬诐 讗谞讬 诪转讻谞谉 诇驻转讜讞 拽讜专住 爪讬讘讜专讬 讞讚砖 讘拽专讜讘 讜诪转诇讘讟 诇讙讘讬 讛谞讜砖讗 讗讝 讗砖诪讞 诇砖诪讜注 讗转 讚注转讻诐. 讗讬讝讛 诪讛谞讜砖讗讬诐 讛讘讗讬诐 诪注谞讬讬谉 讗转讻诐 诇诇诪讜讚?
Anonymous voting

ToCode
1 419
# 讟讬驻 讙讬讟: 诪注讬讻转 拽讜诪讬讟讬诐 谞转拽注转诐 注诐 注谞祝 砖讬砖 讘讜 讬讜转专 诪讚讬 砖讬谞讜讬讬诐 讜讗转诐 驻砖讜讟 爪专讬讻讬诐 诇拽讞转 讗转 讻诇 讛拽讜讚 诪砖诐 讘转讜专 拽讜诪讬讟 讬讞讬讚 讗诇讬讻诐 诇注抓? 讻讻讛 转讜讻诇讜 诇讛砖转诪砖 讘 merge squash 讻讚讬 诇注砖讜转 讘讚讬讜拽 讗转 讝讛. ## 诪讛 讗谞讞谞讜 诪谞住讬诐 诇讞讘专 讛驻专讜讬拽讟 砖诇谞讜 讛转讞讬诇 讟讜讘 注诐 注谞祝 main 讜注谞祝 dev 讗讘诇 注诐 讛讝诪谉 讛注谞驻讬诐 讛转驻爪诇讜: 讛诪转讻谞转讬诐 讛转讞讬诇讜 驻讬转讜讞 注诇 注谞祝 dev, 讘讗诪爪注 讛驻讬转讜讞 讙讬诇讜 讘讗讙 拽专讬讟讬 讜转讬拽谞讜 讗讜转讜 讘注谞祝 main 讜注讻砖讬讜 专讜爪讬诐 诇讞讘专 讗转 讻诇 讛拽讜讚 砖讻转讘谞讜 诇 dev, 讘转讜专 拽讜诪讬讟 讬讞讬讚, 诇注谞祝 main 讘诇讬 诇驻讙讜注 讘转讬拽讜谉 讛讘讗讙 讛拽专讬讟讬 砖讻讘专 讬砖 砖诐. 讛诇讜讙 诪注谞祝 main 谞专讗讛 讻讱:
# [main] git log --oneline --graph
* cc5cec4 (HEAD -> main) FIXED readme
* 35e4d4d initial commit
讜讛诇讜讙 诪注谞祝 dev 谞专讗讛 讻讱:
# [dev] git log --oneline --graph
* 754149f (HEAD -> dev) add db/schema
* fe0c9e5 add stuff scaffold
* c3d8bcc FIXED readme
* 3d35a86 add activeadmin
* 35e4d4d initial commit
讛拽讜诪讬讟 讛诪砖讜转祝 讛讗讞专讜谉 讘讬谞讬讛诐 讛讜讗 35e4d4d 讻诇讜诪专 讛拽讜诪讬讟 讛专讗砖讜谉 讘诪注专讻转 讜讗讞专讬讜 讗谞讞谞讜 专讜讗讬诐 讗转 讛驻讬爪讜诇. ## 诪讬讝讜讙 讜诪注讬讻讛 讛讙讬砖讛 讛驻砖讜讟讛 诇讞讬讘讜专 注谞祝 dev 讘转讜专 拽讜诪讬讟 讬讞讬讚 谞拽专讗转 Merge Squash Commits. 讛驻注讜诇讛 讻讗谉 讘注爪诐 诇讜拽讞转 讗转 讻诇 讛拽讜讚 诪讛拽讜诪讬讟 讛讗讞专讜谉 讘注谞祝 讗讞专 讜诪注讘讬专讛 讗讜转讜 讗诇讬讬 诇转讬拽讬讬转 讛注讘讜讚讛, 讘诇讬 讻诇 讛讛讬住讟讜专讬讛 砖诇 讛注谞祝. 讘爪讚 砖诇讬 讗诐 讗谞讬 诪专讜爪讛 诪讛转讜爪讗讛 讗讜讻诇 诇讛驻注讬诇 commit 讗讞专讬 讛 merge 讜诇拽讘诇 拽讜诪讬讟 讬讞讬讚 诪讻诇 讛砖讬谞讜讬讬诐 讘注谞祝 砖讗讜转讜 讗谞讬 诪砖诇讘. 谞砖讬诐 诇讘 砖讘讚讜讙诪讛 砖诇谞讜 讬砖 拽讜谞驻诇讬拽讟: 讙诐 注谞祝 main 讜讙诐 注谞祝 dev 砖讬谞讜 讗转 讛拽讜讘抓 README.md 讜诇讻谉 讗谞讬 爪专讬讱 诇讘讞讜专 讗讬讝讛 砖讬谞讜讬 讗谞讬 专讜爪讛 诇拽讞转. 讘专讜讘 讛诪拽专讬诐 讻砖讬砖 拽讜谞驻诇讬拽讟 谞专爪讛 诇讛住转讻诇 诪诪砖 注诇 转讜讻谉 讛拽讘爪讬诐 讜诇拽讞转 讗转 讛砖讜专讜转 讛诪转讗讬诪讜转 诪讻诇 拽讜讘抓 - 讘砖讘讬诇 砖诪爪讚 讗讞讚 诇讗 谞驻住驻住 转讬拽讜谉 讘讗讙 拽专讬讟讬 砖讘讜爪注 注诇 注谞祝 main, 讗讘诇 诪爪讚 砖谞讬 讻谉 谞讜讜转专 注诇 转讬拽讜谞讬 讘讗讙讬诐 砖讛拽讜讚 砖诇谞讜 讛驻讱 诇诪讬讜转专讬诐. 讘讚讜讙诪讛 砖诇谞讜 讗谞讬 讬讜讚注 砖讛拽讜谞驻诇讬拽讟 讛讬讞讬讚 讛讜讗 讘拽讜讘抓 README.md 讜讬讜讚注 砖讛拽讜讚 讛谞讻讜谉 谞诪爪讗 讘注谞祝 main 讜诇讻谉 讗驻注讬诇 讗转 讛驻拽讜讚讜转 讛讘讗讜转:
$ git checkout main
$ git merge --squash dev

Auto-merging README.md
CONFLICT (content): Merge conflict in README.md
Squash commit -- not updating HEAD
Automatic merge failed; fix conflicts and then commit the result.
讜讝讛 讛拽讜谞驻诇讬拽讟 砖讬讚注谞讜 砖讬讙讬注. 注讻砖讬讜 讗驻砖专 诇拽讞转 讗转 讙讬专住转 README.md 诪注谞祝 main 讜诇讛诪砖讬讱:
$ git checkout main -- README.md
$ git commit -m 'new feature from dev'
$ git log --oneline --graph

* 694f1cb (HEAD -> main) new feature from dev
* cc5cec4 FIXED readme
* 35e4d4d initial commit
拽讬讘诇转讬 拽讜诪讬讟 讬讞讬讚 注诐 讻诇 讛砖讬谞讜讬讬诐 诪注谞祝 dev.

ToCode
1 419
# 拽驻讛 注诇 讛诪拽诇讚转 讻砖注讜讚 讛讬讛 诪讜转专 诇讬诪讚转讬 拽讜专住 Front End 讘讗讬讝讜 讞讘专转 讛讬讬讟拽. 砖讜诇讞谉 讛诪讞砖讘 砖诇 讛诪讚专讬讱 砖诐 讛讬讛 讬讞住讬转 爪驻讜祝 讜讘诇讬 诇砖讬诐 诇讘 讘讗讞讚 讛讛住讘专讬诐 砖诇 讗讞专讬-讗专讜讞转-爪讛专讬讬诐 讛讝讝转讬 讗转 讛讬讚 诇讗 讟讜讘 讜讻讜住 拽驻讛 砖诇诪讛 谞驻诇讛 诇讬 诪讛砖讜诇讞谉 注诇 讛诇驻讟讜驻. 注讻砖讬讜 讛诪拽 砖诪诪砖 诇讗 专讗讛 讗转 讝讛 讘讗 讚讜讜拽讗 讛讙讬讘 讘谞讜谞砖诇谞讟讬讜转 诪驻转讬注讛. 讗讞专讬 谞讬讙讜讘 拽讟谉 砖诇 讛诪拽砖讬诐 讛讜讗 讛诪砖讬讱 诇注讘讜讚, 讛专讬抓 讗转 讻诇 讛转讜讻谞讬讜转 砖讻转讘转讬 讜讗转 讛砖拽驻讬诐 讜诇讗 讛专讗讛 砖讜诐 住讬诪谉 诇诪注讙诇讬诐 讛讞砖诪诇讬讬诐 砖谞砖专驻讬诐 讗爪诇讜 讘讘讟谉. 讗谞讬, 砖讬讚注转讬 注诪讜拽 讘诇讘 砖注讚讬祝 诇讻讘讜转 诪讻砖讬专 讞砖诪诇讬 砖讛转专讟讘 讜诇转转 诇讜 诇讛转讬讬讘砖 (讗驻讬诇讜 诇拽讞转 诇诪注讘讚讛), 诇讗 讛注讝转讬 诇住讬讬诐 讗转 讛讬讜诐 诪讜拽讚诐 专拽 讘讙诇诇 讻讜住 拽驻讛, 讜讘讟讞 讜讘讟讞 讻砖讛诪讞砖讘 注讚讬讬谉 诪讙讬讘. 讘诪注讘讚讛 诇诪讞专转 讻讘专 讬讚注讜 诇讛讙讬讚 砖讛诪讞砖讘 讛讜讗 讟讜讟讗诇 诇讜住, 讜砖诪诪砖 讞讘诇 砖诇讗 住讙专转讬 讗讜转讜 讘讗讜转讜 专讙注 讜讘讗转讬 讗诇讬讛诐 诪讬讚, 讻讬 讗讝 注讜讚 讬讻诇讜 诇讛爪讬诇 讗讜转讜. 讜讻诪讜 讘讗讜转讜 拽讜专住 讙诐 讛讬讜诐 讗谞讬 专讜讗讛 诪注专讻讜转 转讜讻谞讛 讛专讘讛 讬讜转专 诪讜专讻讘讜转 讗驻讬诇讜 诪讛诪拽讘讜拽 砖讛专住转讬, 住讜驻讙讜转 讘专讜讙注 讻讜住 拽驻讛 讜讬专讟讜讗诇讬转 (诪讛 砖诪讻讜谞讛 "砖讬诐 拽爪转 诪住拽谞讟讬讬驻 专拽 砖讬注讘讜讚 讘讚诪讜") 讜诪诪砖讬讻讜转 诇转驻拽讚 - 诇驻注诪讬诐 注讚 讛讚诪讜, 诇驻注诪讬诐 讙诐 讛专讘讛 讗讞专讬. 讻诇 讗讜转讜 讛讝诪谉 讗谞讞谞讜 讬讜讚注讬诐 砖注讚讬祝 讛讬讛 诇注爪讜专 诇 Refactoring, 讗讘诇 专拽 诇注转讬诐 谞讚讬专讜转 诪讜爪讗讬诐 讗转 讛讗讜诪抓 诇注爪讜专 诇驻谞讬 砖谞讛讬讛 诪讗讜讞专 诪讚讬.

ToCode
1 419
# 砖讜专转 驻转讬讞讛 讟讜讘讛 讗谞讞谞讜 讬讜讚注讬诐 砖讛专讘讛 讬讜转专 拽诇 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讞讚砖讛 讻砖讗谞讞谞讜 注讜讘讚讬诐 注诇 驻专讜讬拽讟 讗诪讬转讬 讘讟讻谞讜诇讜讙讬讛 讝讜. 讗讘诇 讗谞讞谞讜 讙诐 讬讜讚注讬诐 砖讘专讜讘 诪拽讜诪讜转 讛注讘讜讚讛 诇讗 讬转谞讜 诇讻诐 诇讛转讞讬诇 驻专讜讬拽讟 讘讟讻谞讜诇讜讙讬讛 砖讗转诐 诇讗 诪讻讬专讬诐 注诇 讞砖讘讜谉 砖注讜转 讛注讘讜讚讛 专拽 讘砖讘讬诇 诇诇诪讜讚 讗讜转讛. 讗诐 讘讞讘专讛 砖诇讻诐 注讜讘讚讬诐 讛讬讜诐 讘 Java 讜讗转诐 专讜爪讬诐 诇砖讻谞注 讗转 讛讘讜住 诇讻转讜讘 住专讘讬住 拽讟谉 讘 Node.JS 专拽 讘砖讘讬诇 诇诇诪讜讚 Node 讝讛 讛讜诇讱 诇讛讬讜转 砖讻谞讜注 拽砖讛. 诪爪讚 砖谞讬 注诐 讻诇 讛注讘讜讚讛 诪讛讘讬转 讜讛住讙专讬诐 讘专讜讘 诪拽讜诪讜转 讛注讘讜讚讛 讬砖 诇讻诐 讛讬讜诐 讬讜转专 讞讜驻砖 驻注讜诇讛 诪诪讛 砖讗讬 驻注诐 讛讬讛. 讗诐 转爪诇讬讞讜 诇拽讜诐 砖注讛 拽讜讚诐 诇转讻谞转 讘谞讜住祝 诇注讘讜讚讛 讛诪讜驻诇讗讛 砖讗转诐 注讜砖讬诐 讘讬讜诐 讬讜诐, 转讜讻诇讜 诇讻转讜讘 讘砖注讛 讛讝讜 讻诇 诪讛 砖讗转诐 专讜爪讬诐. 讜讻讗谉 诪转讞讬诇 讛拽住诐- 讗诐 讘砖注讛 谞讜住驻转 砖诇 注讘讜讚讛 诇诪砖讱 讞讜讚砖 讗转诐 讬讻讜诇讬诐 诇讘谞讜转 诪砖讛讜 砖讗谞砖讬诐 讬砖转诪砖讜 讘讜, 讗讝 讛讞诇 诪讛讞讜讚砖 讛砖谞讬 讗转诐 讻讘专 转讛讬讜 讛诪转讞讝拽讬诐 砖诇 驻专讜讬拽讟 驻谞讬诪讬 讘讞讘专讛 讜转讜讻诇讜 诇拽讘诇 讝诪谉 注讘讜讚讛 讗诪讬转讬 诇砖驻专 讗转 讛驻专讜讬拽讟 砖诇讻诐. 诇讗讟 诇讗讟 讻砖讛驻专讜讬拽讟 讬讙讚诇 讙诐 讛讘讜住 讬专讙讬砖 讬讜转专 讘谞讜讞 诇转转 诇讻诐 诇讘谞讜转 专讻讬讘讬诐 谞讜住驻讬诐 讘讟讻谞讜诇讜讙讬讛 讝讜 讜讘诇讬 诇砖讬诐 诇讘 讗转诐 讻讘专 讘砖诇讬砖 诪砖专讛 诪转讻谞转讬 Node.JS. 砖讜专转 驻转讬讞讛 讟讜讘讛 讝讛 诇驻注诪讬诐 讻诇 诪讛 砖爪专讬讱 讘砖讘讬诇 诇注砖讜转 砖讬谞讜讬 讙讚讜诇. 讻诪讜 讗爪诇 住讬讬诪讜谉 讜讙专驻讬谞拽诇, 专拽 讘拽讜讚: <iframe width="560" height="315" src="https://www.youtube.com/embed/Eo2ZsAOlvEM" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

ToCode
1 419
# 砖诇讜砖讛 讚讘专讬诐 砖诪注住讬拽讬诐 诪讞驻砖讬诐 讘拽讜专讜转 讛讞讬讬诐 砖诇讻诐 讗诐 讗转诐 砖讜诇讞讬诐 拽讜专讜转 讞讬讬诐 讜诇讗 诪拽讘诇讬诐 讝讬诪讜谞讬诐 诇专讗讬讜谞讜转 讬讻讜诇 诇讛讬讜转 砖讛住讬讘讛 讛讬讗 砖讛诪注住讬拽讬诐 讛驻讜讟谞爪讬讗诇讬讬诐 砖诪拽讘诇讬诐 讗转 拽讜专讜转 讛讞讬讬诐 诇讗 诪讜爪讗讬诐 讘讛诐 讗转 转砖讜讘讜转 诪住驻拽讜转 诇-3 砖讗诇讜转 驻砖讜讟讜转 砖诪注谞讬讬谞讜转 讗讜转诐: 1. 讛讗诐 讗转诐 诪住讜讙诇讬诐 诇讘谞讜转 诪讜爪专 注讜讘讚 讘讟讻谞讜诇讜讙讬讛 砖专诇讜讜谞讟讬转 诇讛诐? 2. 讛讗诐 讛拽讜讚 砖诇讻诐 讬住讘讱 诇讗讞专讬诐 讗转 讛讞讬讬诐? 3. 讛讗诐 讗转诐 讛讜诇讻讬诐 诇讛砖拽讬注 讘注讘讜讚讛 诇讗讜专讱 讝诪谉? 讻诇 砖讗诇讛 谞驻转讞转 诇讛诪讜谉 住讬诪谞讬诐 拽讟谞讬诐 砖讗谞讞谞讜 诪讞驻砖讬诐 讘拽讜专讜转 讞讬讬诐 - 诇讚讜讙诪讛 讗谞砖讬诐 砖诪讞诇讬驻讬诐 注讘讜讚讜转 诇注转讬诐 转讻讜驻讜转 讗讜 砖讙专讬诐 专讞讜拽 谞转驻住讬诐 讘转讜专 讻讗诇讛 砖诇讗 讬爪诇讬讞讜 诇讛砖拽讬注 讘诪砖专讛 诇讗讜专讱 讝诪谉. 讗谞砖讬诐 砖讗讬谉 诇讛诐 谞讬住讬讜谉 讘讟讻谞讜诇讜讙讬讛 讛专诇讜讜谞讟讬转 讗讜 讘讟讻谞讜诇讜讙讬讜转 讚讜诪讜转, 讗讜 砖讗谞讞谞讜 诇讗 专讜讗讬诐 注拽讜诪转 诇诪讬讚讛 讘专砖讬诪转 讛诪砖专讜转 砖诇讛诐, 谞转驻住讬诐 讘转讜专 讻讗诇讛 砖诇讗 讬爪诇讬讞讜 诇讘谞讜转 诪讜爪专 注讜讘讚 讘讟讻谞讜诇讜讙讬讛 讛专诇讜讜谞讟讬转. 讜讗谞砖讬诐 砖注讜砖讬诐 讟注讜讬讜转 诪讟讜驻砖讜转, 诇讗 诪讟驻诇讬诐 讟讜讘 讘诪拽专讬 拽爪讛, 诪砖讗讬专讬诐 拽讜讚 砖讬转诪讜讟讟 讻砖讬讛讬讜 讬讜转专 诪砖转诪砖讬诐, 诇讗 讻讜转讘讬诐 转讬注讜讚 讻诪讜 砖爪专讬讱 讜诇讗 讘讜谞讬诐 讘讚讬拽讜转 讗讜讟讜诪讟讬讜转 诇拽讜讚 砖诇讛诐 谞转驻住讬诐 讘转讜专 讻讗诇讛 砖讛拽讜讚 砖诇讛诐 讛讜诇讱 诇住讘讱 讗转 讛讗讞专讬诐. 专讜爪讬诐 诇砖驻专 讗转 讛住讬讻讜讬讬诐 砖诇讻诐 诇拽讘诇 专讗讬讜谉? 诇驻谞讬 砖讗转诐 砖讜诇讞讬诐 拽讜专讜转 讞讬讬诐 诇诪砖专讛 讛讘讗讛 谞住讜 诇讛住转讻诇 注诇 讛诪住诪讱 诪谞拽讜讚转 诪讘讟 砖诇 讛诪讙讬讬住 讜讘讬讚拽讜 讗讬讝讛 转砖讜讘讜转 讗转诐 诪爪诇讬讞讬诐 诇转转 诇砖诇讜砖转 讛砖讗诇讜转 诪拽专讬讗转 诪住诪讱 拽讜专讜转 讛讞讬讬诐 砖讗转诐 专讜爪讬诐 诇砖诇讜讞. 讗诐 讛转砖讜讘讜转 诇讗 诪住驻讬拽 讟讜讘讜转, 注讚讻谞讜 讗转 讛诪住诪讱 注讚 砖转讛讬讜 诪专讜爪讬诐.

ToCode
1 419
# 讗讬讱 诇讝讛讜转 诇讞讬爪讜转 诪拽诇讚转 (讜讗讬专讜注讬诐 讗讞专讬诐) 讘 tkinter 诪注专讻转 讛讗讬专讜注讬诐 砖诇 tk 讬讻讜诇讛 诇讛讬讜转 拽爪转 诪讘诇讘诇转 讘注讬拽专 讘讙诇诇 住讜讙讬 讛讗讬专讜注讬诐 讛诪讜讘谞讬转 讜讛砖讬诪讜砖 讘讟拽住讟讬诐 讻讚讬 诇转讗专 讗讬专讜注讬诐 (讜讘讙诇诇 砖讛转讬注讜讚 砖诇 tk 诇讗 讛讻讬 谞讜讞 诇拽专讬讗讛). 讗讝 诇讟讜讘转 讗诇讛 诪讻诐 砖诪住转讘讻讬诐 讜讘注拽讘讜转 砖讗诇讛 砖诇 转诇诪讬讚, 讛谞讛 讻诪讛 讚讜讙诪讗讜转 拽讜讚 诇注讘讜讚讛 注诐 诇讞讬爪讜转 诪拽诇讚转 讘转讜讻谞讬转 tk. ## 讗讬讱 讝讛 注讜讘讚 讻诇 Widget 讘 tk 讬讻讜诇 诇讚讜讜讞 诇注讜诇诐 注诇 讚讘专讬诐 砖拽讜专讬诐, 诇诪砖诇 讗诐 砖讬谞讜 诇讜 讗转 讛讙讜讚诇, 讗诐 讛讜讗 拽讬讘诇 驻讜拽讜住, 讗讜 - 讜讝讛 诪讛 砖讗讜转谞讜 诪注谞讬讬谉 - 讗诐 诇讞爪讜 注诇 讻驻转讜专 诪拽诇讚转 讘砖讟讞 砖诇讜. 讛 Widgets 砖诇 tk 诪诪讜拽诪讬诐 讗讞讚 讘转讜讱 讛砖谞讬 讜诇讻谉 讻砖拽讜专讛 讗讬专讜注 讻诇 Widget 专诇讜讜谞讟讬 诪拽讘诇 讛讝讚诪谞讜转 诇讟驻诇 讘讜. 讗诐 讬砖 诇讬 转讬讘转 讟拽住讟 砖谞诪爪讗转 讘转讜讱 驻专讬讬诐 讗讝 砖谞讬讛诐 讬讛讬讜 诪讜讚注讬诐 诇诇讞讬爪转 讛讻驻转讜专 讜讬拽讘诇讜 讛讝讚诪谞讜转 诇讟驻诇 讘讗讬专讜注. 讞讬讘讜专 拽讜讚 诇讗讬专讜注讬诐 诪讘讜爪注 注诐 讛驻讜谞拽爪讬讛 bind. 讬砖 bind 诇讻诇 Widget 讜讙诐 讛驻讜谞拽爪讬讛 谞诪爪讗转 注诇 讗讜讘讬拽讟 讛 Tk 讛专讗砖讬 讻讱 砖讗驻砖专 讘诪拽讜诐 讗讞讚 诇讟驻诇 讘讻诇 讛讗讬专讜注讬诐 诪讻诇 讛 Widgets. ## 讚讜讙诪转 拽讜讚 拽爪专讛 讛转讜讻谞讬转 讛讘讗讛 讛讬讗 讛讚专讱 讛讻讬 拽爪专讛 砖诪爪讗转讬 讘 tk 诇讛拽砖讬讘 诇诇讞讬爪讜转 诪拽诇讚转:
from tkinter import *

root = Tk()

def on_key_press(event):
    print("Key Press: ", event.char)

root.bind('<KeyPress>', on_key_press)
root.mainloop()
讛专爪转 讛转讜讻谞讬转 转爪讬讙 讞诇讜谉 讞讚砖 专讬拽, 讜讻讗砖专 讞诇讜谉 讝讛 讬讛讬讛 讘驻讜拽讜住 讗讝 讻诇 诇讞讬爪转 诪拽诇讚转 讘转讜讱 讛讞诇讜谉 转讜住讬祝 讛讜讚注讛 讘诪住讜祝 注诐 讛讻驻转讜专 砖谞诇讞抓. ## 讚讜讙诪转 拽讜讚 拽爪转 讬讜转专 讗专讜讻讛 讗驻砖专 诇专讗讜转 砖讛专注讬讜谉 注讜讘讚 讙诐 讗诐 讬砖 诇谞讜 诪住驻专 Widgets, 讜砖讘诪爪讘 讻讝讛 讻诇 讛 Event Handlers 砖诇 讻诇 讛 Widgets 讬讜驻注诇讜. 谞住讜 讗转 讛拽讜讚 讛讘讗:
from tkinter import *

root = Tk()
a = Label(root, text="Hello World")
a.pack()

b = Text(root)
b.pack()

def on_key_press(event):
    print("Key Press: ", event.char)


def on_text_keypress(ev):
    print("A")

root.bind('<KeyPress>', on_key_press)
b.bind('<KeyPress>', on_text_keypress)
root.mainloop()
讛拽讜讚 诪爪讬讙 Label 讜诪转讞转讬讛 转讬讘转 讟拽住讟. 讻诇 诇讞讬爪转 诪拽诇讚转 讘转讜讱 讛讞诇讜谉, 讜诇讗 诪砖谞讛 讗讬讝讛 Widget 谞诪爪讗 注讻砖讬讜 讘驻讜拽讜住, 转讙专讜诐 诇讛驻注诇转 讛驻讜谞拽爪讬讛 on_key_press. 讘谞讜住祝 讻诇 诇讞讬爪转 诪拽诇讚转 讘转讜讱 讛驻讜拽讜住 砖诇 转讬讘转 讛讟拽住讟 转讙专讜诐 诇讛驻注诇转 讛驻讜谞拽爪讬讛 on_text_keypress.

ToCode
1 419
# 讛爪讚 讛讗驻诇 砖诇 诇诪讬讚讛 注爪诪讬转 讛专讘讛 诪讚讘专讬诐 讘注讬讚谉 讛拽讜专讜谞讛 注诇 讛拽住诐 讘诇诪讬讚讛 注爪诪讬转, 注诇 讗讬讱 砖诇诪讬讚讛 诪专讞讜拽 爪专讬讻讛 诇讛讬讜转 讬讜转专 讗住讬谞讻专讜谞讬转, 讜讘诪讬讜讞讚 讘讛拽砖专 讛讘讬转 住驻专讬 注诇 讻诪讛 讝讛 谞驻诇讗 讻砖转诇诪讬讚讬诐 诪住转讚专讬诐 讘拽讘讜爪讜转 讜讞讜拽专讬诐 讜诪讙诇讬诐 讬讞讚 专注讬讜谞讜转 讞讚砖讬诐. 谞讚诪讛 诇驻注诪讬诐 砖讛讗谞砖讬诐 讛讗诇讛 讗祝 驻注诐 诇讗 讛讬讜 转诇诪讬讚讬诐 讗讜 砖诇讗 专讗讜 转诇诪讬讚讬诐 诪拽专讜讘. 诇诪讬讚讛 注爪诪讬转 讗住讬谞讻专讜谞讬转 讛讬讗 讛讚专讱 讛讬讞讬讚讛 诇讛拽谞讜转 诪讬讜诪谞讜转 讘爪讜专讛 砖诪讗驻砖专转 讛转驻转讞讜转. 讛讛转诪讜讚讚讜转 讛讗讬砖讬转 砖诇 讻诇 转诇诪讬讚 注诐 讛讞住诪讬诐 讜讛讗转讙专讬诐 讛讗讬砖讬讬诐 砖诇讜 讘拽讘讜爪讛 注诐 转诇诪讬讚讬诐 讗讞专讬诐 砖转讜诪讻讬诐 讘讜 讜诪讜专讛 砖诪拽讚诐 讗讜转诐 讜谞讜转谉 驻讬讚讘拽 注诇 讛注砖讬讛 讛讬讗 转讛诇讬讱 讗讜转讜 转诇诪讬讚讬诐 讬爪讟专讻讜 诇讛讟诪讬注 诇拽专讗转 讛讬讜诐 讘讜 讬讛讬讜 讗谞砖讬诐 讘讜讙专讬诐 砖爪专讬讻讬诐 诇讛住转讚专 讘砖讜拽 讛注讘讜讚讛. 讗讘诇 讗诇 转讟注讜 - 讘砖讘讬诇 诇转转 诇转诇诪讬讚讬诐 讻诇讬诐 讟讜讘讬诐 诇诇诪讬讚讛 爪专讬讱 诇讛讬讜转 诪讜讻谞讬诐 讙诐 诇讞讬讜转 注诐 讛爪讚 讛讗驻诇 砖诇 讛诇诪讬讚讛 讛注爪诪讬转 讜讛讗住讬谞讻专讜谞讬转. 讛谞讛 讻诪讛 讚讘专讬诐 砖转诇诪讬讚讬诐 讬注砖讜 讻砖谞讬转谉 诇讛诐 讬讜转专 讗讞专讬讜转 注诇 讛诇诪讬讚讛 砖诇讛诐: ## 讛诐 讬讬讻砖诇讜 诇诪讬讚讛 注爪诪讬转 讗住讬谞讻专讜谞讬转 讗讜诪专转 砖讗谞讞谞讜 谞讜转谞讬诐 诇转诇诪讬讚 诪砖讬诪讛 讜讛讜讗 爪专讬讱 诇注砖讜转 讗讜转讛 讘讝诪谉 砖诇讜 讬讞讚 注诐 讛讞讘专讬诐 砖诇讜. 讛转诇诪讬讚 讬讻讜诇 诇砖讗讜诇 砖讗诇讜转 讜讗谞讞谞讜 讬讻讜诇讬诐 诇砖讗讜诇 讗讜转讜 讗讬讱 讛讜诇讱 讜诇讘拽砖 诇专讗讜转 讛转拽讚诪讜转, 拽爪转 讻诪讜 讘注讜诇诐 讛注讘讜讚讛. 讜拽爪转 讻诪讜 讘注讜诇诐 讛注讘讜讚讛 讬讻讜诇 诇讛讬讜转 砖拽讘讜爪讛 诪住讜讬诪转 转诇讱 诇讗讬讘讜讚. 讛诐 诇讗 讬讚注讜 诪讛 诇注砖讜转, 讛诐 诇讗 讬讘讬谞讜 讗转 讛讛讜专讗讜转, 讛诐 诇讗 讬讘讬谞讜 讗转 讞讜诪专讬 讛诇讬诪讜讚 砖谞转转诐 诇讛诐. 专讜讘 讛诪讜专讬诐 诇讗 诪住讜讙诇讬诐 诇讞讬讜转 注诐 转诇诪讬讚讬诐 砖诇讗 诪讘讬谞讬诐 讗讜 砖诇讗 诪住转讚专讬诐. 讙诐 讻讗谉 讘讗转专 讻诇 驻注诐 诪讞讚砖 拽砖讛 诇讬 诇注谞讜转 诇转诇诪讬讚 砖讗讬谉 诇谞讜 转砖讜讘讜转 讘讬转 住驻专 诇转专讙讜诇讬诐 讜砖讗谞讬 诪讜讻谉 诇注讝讜专 讘砖讗诇讛 谞拽讜讚转讬转 讗讘诇 砖讝讛 讙诐 讘住讚专 诇讗 诇讛爪诇讬讞. 讜诇讬 注讜讚 讬砖 讗讙'谞讚讛 讞讝拽讛 讘谞讜砖讗. 讛注谞讬讬谉 砖讘专讜讘 讛注讜诇诐 讛讗诪讬转讬 讝讛 讘讚讬讜拽 诪讛 砖拽讜专讛: 讗谞讞谞讜 诇讗 诪住转讚专讬诐, 爪讜注拽讬诐, 诪转注爪讘谞讬诐 注讚 砖讘住讜祝 诪爪诇讬讞讬诐 (讗讜 砖诇讗). 讘砖讘讬诇 砖诇诪讬讚讛 注爪诪讬转 讘讗诪转 转拽谞讛 诪讬讜诪谞讜讬讜转 诇诪讬讚讛 讞砖讜讘讜转 诇注讜诇诐 讛讗诪讬转讬 讗驻砖专讜转 讛讻讬砖诇讜谉 讞讬讬讘转 诇讛讬讜转 砖诐. 讻诇 注讜讚 讝讛 诪砖讞拽 砖讗驻砖专 专拽 诇谞爪讞 讘讜, 讗讬谉 讛转诪讜讚讚讜转 讗诪讬转讬转 讜讗讬谉 诇诪讬讚讛. ## 讛诐 讬诇诪讚讜 讟注讜讬讜转 专讜讘 讛诇讬诪讜讚 讛讗住讬谞讻专讜谞讬 讘讘转讬 住驻专 诪讘讜住住 注诇 讛专注讬讜谉 砖讛诪讜专讛 谞讜转谉 诇转诇诪讬讚讬诐 讗转 讻诇 讞讜诪专 讛诇讬诪讜讚 讜讛转诇诪讬讚 驻砖讜讟 诪讘爪注 讗转 讛诇讬诪讜讚 讗讜 讛诪砖讬诪讛 讘讝诪谉 砖诇讜 讘爪讜专讛 讗住讬谞讻专讜谞讬转. 讝讛 诇讗 诪砖拽祝 讗转 讛注讜诇诐 讛讗诪讬转讬 讜讙诐 诪砖注诪诐 诇转诇诪讬讚讬诐. 讛专讘讛 讬讜转专 诪注谞讬讬谉 诇专讗讜转 转诇诪讬讚讬诐 砖诪讞驻砖讬诐 讞讜诪专讬诐 讘注爪诪诐, 砖讜讗诇讬诐 讗转 讛讞讘专讬诐 砖诇讛诐 讗讜 讛讛讜专讬诐 砖诇讛诐 (讗讜 讗转 讙讜讙诇) 讜诪讻讬谞讬诐 诪砖讛讜 砖讛诪讜专讛 诇讗 转讻谞谉 诪专讗砖 砖讛诐 讬讘谞讜. 讜讻谉 讗诐 讗转诐 讛讜诇讻讬诐 讘讚专讱 讛讝讗转 讗诇 转讛讬讜 诪讜驻转注讬诐 讻砖讛讚讘专 砖讛诐 讘谞讜 讻讜诇诇 讟注讜讬讜转 拽讟谞讜转 讗讜 砖拽专讬诐 讘讜讟讬诐. ## 讛诐 讬注讘讬专讜 转拽讜驻讜转 讗专讜讻讜转 讘诇讬 诇诇诪讜讚 讻诇讜诐 讙诐 讗谞砖讬诐 诪讘讜讙专讬诐 诪转讞讘砖谞讬诐 讘注讘讜讚讛 讜讛讚讘专 谞讻讜谉 驻讬 讻诪讛 诇转诇诪讬讚讬诐 讘讘讬转 住驻专. 转诇诪讬讚讬诐 讬诇诪讚讜 诪讛 砖诪注谞讬讬谉 讗讜转诐 讜讬讞驻驻讜 讗转 诪讛 砖诇讗 诪注谞讬讬谉 讗讜转诐. 讞讜驻砖 讛驻注讜诇讛 砖谞转转诐 诇讛诐 讬讛驻讜讱 诇讞专讘 驻讬驻讬讜转 讻砖讛谞讜砖讗 砖注诇 讛驻专拽 讛讜讗 讛讻谞讛 诇讘讙专讜转 讘讗讝专讞讜转. 讗讘诇 诪讛 砖讬讜转专 诪讝注讝注 讛讜讗 砖诪讜讟讬讘爪讬讛 驻谞讬诪讬转 讬讻讜诇讛 诇讛讬注诇诐 诪讛专 讻诪讜 砖讛讬讗 讛讜驻讬注讛. (讜讻谉 讛诪讜讟讬讘爪讬讛 讞讬讬讘转 诇讛讬讜转 驻谞讬诪讬转 讻讚讬 诇讬爪讜专 诇诪讬讚讛 讗驻拽讟讬讘讬转 诪讞讜抓 诇诪住讙专转 砖诇 诪讜专讛-诪拽专讬讗-讞讜诪专-讜讻讜诇诐-讻讜转讘讬诐). 讞诇拽 诪讛注谞讬讬谉 讘讬爪讬专转 诪讜讟讬讘爪讬讛 驻谞讬诪讬转 讛讜讗 砖诇驻注诪讬诐 讛讬讗 诇讗 砖诐, 讜讝讛 讘住讚专. 讗诐 讗转诐 诇讗 诪讜讻谞讬诐 诇讞讬讜转 注诐 转拽讜驻讜转 讘诇讬 诇诪讬讚讛 讗讝 讗转诐 讘讛讻专讞 讬讜爪专讬诐 诪谞讙谞讜谞讬 诪讜讟讬讘爪讬讛 讞讬爪讜谞讬讬诐, 讜讘诪讻讛 讗讞转 讛驻住讚转诐 讛讻诇. ## 讛诐 讬讘讜讗讜 诇讗 诪讜讻谞讬诐 诇诪讘讞谉 诇诪讬讚讛 注爪诪讬转 讗驻拽讟讬讘讬转 拽讜专讬转 讻砖转诇诪讬讚 诪讘讬谉 讗转 讛诪讟专讛, 诪讘讬谉 讗转 讛诪讜讟讬讘爪讬讛 讜诪转拽讚诐 讘拽爪讘 砖诇讜 诇讻讬讜讜谉 讗讜转讛 诪讟专讛. 转诇诪讬讚讬诐 砖讜谞讬诐 讬转拽讚诪讜 讘拽爪讘 砖讜谞讛 讜诇讻讬讜讜谉 诪讟专讜转 砖讜谞讜转. 讗讝 讗讬讱 讘讚讬讜拽 讗转诐 讛讜诇讻讬诐 诇诪讚讜讚 讛转拽讚诪讜转? 讜讗讬讱 讛诪讘讞谉 砖诇讻诐 讛讜诇讱 诇讛砖驻讬注 注诇 讛讘讞讬专讜转 砖诇 讛转诇诪讬讚讬诐 讜注诇 讛诪讜讟讬讘爪讬讛 讛驻谞讬诪讬转 砖诇讛诐? 诇诪讬讚讛 注爪诪讬转 讗驻拽讟讬讘讬转 讛讬讗 讗谞讟讬-诪讘讞谉 讘诪讜讘谉 讝讛 砖讛诪讘讞谉 讛讜讗 讗讬砖讬 诇讻诇 诪砖转转祝 讜讛诪讬专讜抓 讛讜讗 谞讙讚 注爪诪讱 讘诇讘讚. ## 讜讘讻诇 讝讗转 诇诪讬讚讛 注爪诪讬转 讗住讬谞讻专讜谞讬转 讘讛谞讞讬讬转 诪讜专讛 讜讘砖讬转讜祝 讞讘专讬诐 诇讻讬转讛 讛讬讗 讚专讱 讛诇讬诪讜讚 讛讬讞讬讚讛 砖转讬转谉 诇转诇诪讬讚讬诐 砖诇谞讜 讗转 讛讻诇讬诐 诇讛住转讚专 讘注转讬讚 讘注讜诇诐 讛注讘讜讚讛 讛讟讻谞讜诇讜讙讬. 讛讟讻谞讜诇讜讙讬讛 诪砖转谞讛 诪讛专 讜讗谞讞谞讜 爪专讬讻讬诐 讗谞砖讬诐 注诐 住讟 诪讬讜诪谞讜讬讜转 诪讙讜讜谉 讘爪讜讜转. 讗讬谉 砖讜诐 讚专讱 砖讛讚专讻讛 讗讞讬讚讛 诇转诇诪讬讚讬诐 砖"住讜驻讙讬诐" 讗转 讛讞讜诪专 讬讻讜诇讛 诇注讘讜讚. 讛讘注讬讛 砖诇 讻诪注讟 讻诇 诪讗诪专 砖拽专讗转讬 讘讛拽砖专 砖诇 砖讬诇讜讘 诇诪讬讚讛 讗住讬谞讻专讜谞讬转 讘讻讬转讜转 讘讬转 讛住驻专 讛讬讗 砖讛诐 诪谞住讬诐 诇讛讞讝讬拽 讘诪拽诇 诪砖谞讬 拽爪讜转讬讜: 讙诐 诇拽讘诇 诇诪讬讚讛 注转讬讚谞讬转, 注爪诪讬转, 注诐 转诇诪讬讚讬诐 住拽专谞讬诐 砖讘讜谞讬诐 讚讘专讬诐 诪讜驻诇讗讬诐 讘注爪诪诐; 讜讙诐 诇讛爪诇讬讞 讘诪讘讞谉 讜诇讛转拽讘诇 诇讗讜谞讬讘专住讬讟讛. 讛砖谞讬讬诐 诇讗 讛讜诇讻讬诐 讬讞讚 讜讗讬谉 诇讬 住驻拽 注诇 讗讬讝讛 诪讛砖谞讬讬诐 爪专讬讱 诇讜讜转专.