පයිතන්ගේ වස්තු-නැඹුරු this.method()
සහ කාර්ය පටිපාටික / ක්රියාකාරී method(this)
සින්ටැක්ස් සංයෝජනය ඉතා නොසන්සුන් බව මට පෙනේ :
x = [0, 1, 2, 3, 4]
x.count(1)
len(x)
any(x)
x.reverse()
reversed(x)
x.sort()
sorted(x)
මෙය විශේෂයෙන් නරක ය, මන්ද යත්, ශ්රිත විශාල ප්රමාණයක් (ක්රමවලට වඩා) ගෝලීය නාම අවකාශයට දමා ඇති හෙයිනි : ලැයිස්තු, නූල්, සංඛ්යා, ඉදිකිරීම්කරුවන්, මෙට්රොප්රොග්රැමිං හා සම්බන්ධ ක්රම, සියල්ලම එක් විශාල අකාරාදී පිළිවෙලට සකස් කළ ලැයිස්තුවකට මිශ්ර වී ඇත.
අවම වශයෙන්, F # වැනි ක්රියාකාරී භාෂාවන්ට මොඩියුලවල නිසි ලෙස නම් කර ඇති සියලුම කාර්යයන් ඇත:
List.map(x)
List.reversed(x)
List.any(x)
එබැවින් ඔවුන් සියල්ලන්ම එකට නොවේ. තවද, මෙය පුස්තකාලය පුරා අනුගමනය කරන ප්රමිතියකි, එබැවින් අවම වශයෙන් එය අනුකූල වේ.
ශ්රිතය එදිරිව ක්රමවේදය කිරීමට හේතු මට වැටහී ඇත , නමුත් මම තවමත් සිතන්නේ ඒවා මේ ආකාරයට මිශ්ර කිරීම නරක අදහසක් බවයි. අවම වශයෙන් පොදු මෙහෙයුම් සඳහා ක්රමවේදය-වාක්ය ඛණ්ඩය අනුගමනය කළේ නම් මම වඩාත් සතුටට පත්වෙමි.
x.count(1)
x.len()
x.any()
x.reverse()
x.reversed()
x.sort()
x.sorted()
ක්රම විකෘති වුවත් නැතත්, ඒවා වස්තුව මත ක්රම ලෙස තබා ගැනීමෙන් වාසි කිහිපයක් ඇත:
- දත්ත වර්ගයක “පොදු” මෙහෙයුම් සොයා බැලීමට තනි ස්ථානයක්: වෙනත් පුස්තකාල / යනාදිය. දත්ත සමුදායන්ට ඔවුන්ට කළ හැකි වෙනත් විසිතුරු දේවල් තිබිය හැකි නමුත් “පෙරනිමි” මෙහෙයුම් සියල්ලම වස්තුවේ ක්රමවල ඇත.
- පුනරුච්චාරනය කරමින් තබා ගැනීමට කිසිදු අවශ්යතාවයක්
Module
කරන විට Module.method(x)
. ඉහත ක්රියාකාරී ලැයිස්තු උදාහරණය ගනිමින්, මට නැවත නැවතත් List
පැවසිය යුත්තේ ඇයි? එය එය බව දැන සිටිය යුතු අතර එය මත ශ්රිතය List
ඇමතීමට මට අවශ්ය නැත Navigation.map()
! x.map()
සින්ටැක්ස් භාවිතා කිරීමෙන් එය වියළී යන අතර තවමත් සැක සහිතය.
ඇත්ත වශයෙන්ම එය ගෝලීය-නාම අවකාශයේ සෑම දෙයක්ම කිරීමට වඩා වාසි ඇත . වර්තමාන ක්රමය මඟින් දේවල් කිරීමට නොහැකි බව නොවේ . len(lst)
කිසිවක් නම් නොකෙරෙන බැවින් එය ඊටත් වඩා ලස්සනයි ( )! ක්රම වලට වඩා කාර්යයන් (පෙරනිමි හැසිරීම ආදිය) භාවිතා කිරීමේ වාසි මම තේරුම් ගතිමි, නමුත් මම තවමත් එයට කැමති නැත.
ඒක අවුල් සහගතයි. විශාල ව්යාපෘති වලදී, අවුල් සහගතභාවය ඔබේ නරකම සතුරා වේ.