පයිතන්ගේ අඩුපාඩු මොනවාද? [වසා ඇත]


147

පයිතන් මේ දිනවල සියලු කෝපයෙන් සිටින බවක් පෙනෙන්නට තිබේ. එහෙත්, wise ානවන්ත මිනිසෙක් වරක් පැවසූ පරිදි (ඔහුව බුද්ධිමත් මිනිසෙකු ලෙස හැඳින්වූයේ ඇත්ත වශයෙන්ම එය කීවේ කවුරුන්ද යන්න ගැන මා නොදන්නා නිසා පමණි; ඔහු එතරම් බුද්ධිමත් දැයි නිශ්චිතවම කිව නොහැක), භාෂාවක් දැන ගැනීම පමණක් එහි භාෂාව පමණක් දන්නේ නැත වාක්‍ය ඛණ්ඩය, සැලසුම් යනාදිය එහි වාසි මෙන්ම එහි අඩුපාඩු ද වේ. කිසිම භාෂාවක් පරිපූර්ණ නොවේ, සමහර ඒවා අනෙක් ඒවාට වඩා හොඳයි.

ඉතින්, ඔබේ මතය අනුව, පයිතන්ගේ වෛෂයික අඩුපාඩු මොනවාද?

සටහන: මම මෙහි භාෂා සංසන්දනයක් ඉල්ලා නොසිටිමි (එනම් සී # පයිතන්ට වඩා හොඳ නිසා ... යද්ද යද්ද යද්ද) - වඩා වෛෂයික (යම් මට්ටමකට) මතයක් වඩා කුමන භාෂා අංගයන් නරක ලෙස නිර්මාණය කර ඇත්ද, කුමක් විය හැකිද? සමහර ඒවා ඔබට මග හැරී ඇත. සංසන්දනයක් ලෙස වෙනත් භාෂාවක් භාවිතා කළ යුතු නම්, වෙනත් ආකාරයකින් විස්තාරණය කිරීමට අපහසු කාරණයක් නිදර්ශනය කිරීම සඳහා පමණි (එනම් තේරුම් ගැනීමේ පහසුව සඳහා)


50
මම හිතන්නේ මෙය ප්‍රයෝජනවත් ආත්මීය ප්‍රශ්නයක් වන අතර එය වසා දැමීම ලැජ්ජාවකි.
එරික් විල්සන්

25
සියලුම පයිතන් විරෝධී පිළිතුරු පහත් කොට සලකන පයිතන්-රසිකයෙක් මෙහි සිටින බව පෙනේ.
zvrba

2
@TMN: එය තවමත් සුදු අවකාශය ටෝකන ලෙස සලකයි, ඒවා ආපසු නොදෙනු ඇත - එය හරියටම පයිතන්ගේ ව්‍යාකරණ ද කරයි.

9
Og රොජර්: SO පිළිබඳ සම්මුතිය වන්නේ පහත් අදහස් දැක්වීමයි. මෙය ආත්මීය මතයන් සඳහා වන වෙබ් අඩවියක් බැවින් , පහත හෙලීමට කිසිදු හේතුවක් මා දකින්නේ නැත. අදහස් දැක්වීම්. ඉතින්, මම මගේ "නම කැඳවීම" වෙනුවෙන් පෙනී සිටිමි.
zvrba

8
vzvrba: Downvotes තවමත් සෑම විටම මෙන් "ප්‍රයෝජනවත් නොවේ" යන්නයි.

Answers:


109

මම තරමක් නිතිපතා පයිතන් භාවිතා කරන අතර සමස්තයක් ලෙස එය ඉතා හොඳ භාෂාවක් ලෙස මම සලකමි. එසේ වුවද, කිසිදු භාෂාවක් පරිපූර්ණ නොවේ. පෞද්ගලිකව මට වැදගත් වන අනුපිළිවෙලෙහි ඇති අඩුපාඩු මෙන්න:

  1. එය මන්දගාමී ය. මම කිව්වේ ඇත්තටම මන්දගාමීයි. බොහෝ වාර ගණනක් මෙය වැදගත් නොවේ, නමුත් එයින් අනිවාර්යයෙන්ම අදහස් කරන්නේ එම කාර්ය සාධනය-විවේචනාත්මක බිටු සඳහා ඔබට වෙනත් භාෂාවක් අවශ්‍ය බවයි.

  2. පිටත විෂය පථයේ විචල්‍යයන් වෙනස් කිරීමට ඔබට නොහැකි වන පරිදි කූඩුවල ක්‍රියාකාරිත්වය උරා බොයි. සංස්කරණය කරන්න: මම තවමත් Python 2 නිසා පුස්තකාලය සහයෝගය භාවිතා කරන අතර, මේ නිර්මාණ දෝෂයක් මාව එළියට චාටර් ද මන්දා වෙලාවට නමුදු එය වීම යන Python 3 ස්ථාවර වෙනවා nonlocal ප්රකාශයක්. මා භාවිතා කරන ලිබ්ස් පෝර්ට් කරන තෙක් බලා සිටිය නොහැක, එබැවින් මෙම දෝෂය ඉතිහාසයේ අළු ගොඩට යහපත සඳහා යැවිය හැකිය.

  3. පුස්තකාලයට / සාමාන්‍ය කේතයට ප්‍රයෝජනවත් විය හැකි විශේෂාංග කිහිපයක් එහි නොමැති අතර IMHO යනු සෞඛ්‍යයට අහිතකර අන්තයන් වෙත ගෙන යන සරල බවකි. මට සිතිය හැකි වැදගත්ම ඒවා වන්නේ පරිශීලක අර්ථ දක්වන ලද වටිනාකම් වර්ග (මම අනුමාන කරන්නේ මේවා මෙටැක්ලාස් මැජික් සමඟ නිර්මාණය කළ හැකි නමුත් මම කිසි විටෙකත් උත්සාහ කර නැත), සහ ref ක්‍රියාකාරී පරාමිතියයි.

  4. එය ලෝහයෙන් බොහෝ දුරයි. නූල් ප්‍රාථමික හෝ කර්නල් කේතය හෝ යමක් ලිවීමට අවශ්‍යද? වාසනාව.

  5. පයිතන් ඉදිරිපත් කරන ගතිකත්වයේ වෙළඳාමක් ලෙස අර්ථකථන දෝෂ හසු කර ගැනීමේ හැකියාවක් නොමැතිකම මට කමක් නැතත් , ඇත්ත වශයෙන්ම කේතය ක්‍රියාත්මක නොකර සින්ටැක්ටික් දෝෂ සහ විචල්‍ය නම් වැරදි ලෙස ටයිප් කිරීම වැනි මෝඩ දේවල් අල්ලා ගැනීමට ක්‍රමයක් තිබෙන්නට ඇතැයි මම සිතමි.

  6. ශක්තිමත් ආයතනික පිටුබලය ඇති PHP සහ Java වැනි භාෂා තරම් ප්‍රලේඛනය හොඳ නැත.


60
As කේසි, මට එකඟ නොවිය යුතුයි. දර්ශකය භයානකයි - withප්‍රකාශය හෝ ක්‍රම සොයා බැලීමට උත්සාහ කරන්න list. නිබන්ධනයේ ආවරණය වන ඕනෑම දෙයක් මූලික වශයෙන් සොයාගත නොහැකි ය. C ++ සඳහා මයික්‍රොසොෆ්ට් ලියකියවිලි සමඟ මට වඩා හොඳ වාසනාවක් ඇත.
මාර්ක් රැන්සම්

17
5 ක් පමණ - පයිෆ්ලේක් භාවිතා කරන්න. එය ලියා ඇත්තේ හරියටම එම දෝෂයන් හසු කර ගැනීම සඳහා ය.
ඇලෙක්සැන්ඩර් සොලොවියොව්

4
වේගය සම්බන්ධයෙන්: PyPy හි වැඩිවීමත් සමඟ, බොහෝ Python පරිශීලකයින්ට දැන් JIT- සම්පාදකය තුළ ඇති පරිවර්තකයක් භාවිතා කිරීමෙන් වේග ගැටළුව විසඳා ගත හැකිය (දැනට, Python 3 භාවිතා කරන්නන් සහ C දිගුව මොඩියුල භාවිතා කරන්නන් cpyext විසින් හසුරුවනු නොලැබේ මෙම විකල්පය නොමැත).
ncoghlan

29
මම පයිතන් ලියකියවිලි හෙළා දකිමි. ඒවා බොහෝ දෙනාට වඩා ලස්සනයි, නමුත් නූල් සහ ලැයිස්තු වල ක්‍රම වැනි බොහෝ ප්‍රයෝජනවත් තොරතුරු එක් පිටුවකට එකතු කර ඇත - සහ සියලු අනුක්‍රමික වර්ග එකට එකතු වී ඇත. මම මෙම තොරතුරු සෙවූ විට, මම විශාල ටොම් එකකට ගොඩ වී, මට අවශ්‍ය දේ සොයා ගැනීමට පිටුව පහළට සෙවිය යුතුය. මෙම පිටුවල ඇති දර්ශකය කියවීමටද මට අපහසුය, සමහර විට මට අවශ්‍ය කුමන කොටසදැයි කීමට අපහසුය.
කාර්සන් මයර්ස්

5
ලෝහයෙන් දුරස්ථ වීම තර්කයක් වන්නේ කෙසේද? පයිතන් කවදා හෝ පද්ධති භාෂාවක් ලෙස සිතුවාද?
මාර්ක් කැන්ලස්

66

විචල්‍යයක් ප්‍රකාශ කිරීම සහ භාවිතා කිරීම අතර වෙනස හඳුනා ගැනීමට පයිතන්ට නොහැකි බව මම වෛර කරමි. එය සිදු කිරීම සඳහා ඔබට ස්ථිතික ටයිප් කිරීම අවශ්‍ය නොවේ. “මෙය මම හිතාමතාම ප්‍රකාශ කරන විචල්‍යයක් වන අතර නව නමක් හඳුන්වා දීමට අදහස් කරමි , මෙය යතුරු ලියනය නොවේ ” යැයි කීමට ක්‍රමයක් තිබීම සතුටක් .

තවද, මම සාමාන්‍යයෙන් පයිතන් විචල්‍යයන් ලිවීමේ-එක් වරක් ශෛලියක් තුළ භාවිතා කරමි, එනම්, මම විචල්‍යයන් වෙනස් කළ නොහැකි යැයි සලකන අතර ඒවායේ පළමු පැවරුමෙන් පසුව ඒවා වෙනස් නොකරමි. ලැයිස්තු අවබෝධය වැනි විශේෂාංග වලට ස්තූතියි, මෙය සැබවින්ම ඇදහිය නොහැකි තරම් පහසු වන අතර කේත ප්‍රවාහය අනුගමනය කිරීම වඩාත් පහසු කරයි.

කෙසේ වෙතත්, මට එම කරුණ ලේඛනගත කළ නොහැක. පයිතන් හි කිසිවක් විචල්‍යයන් නැවත ලිවීම හෝ නැවත භාවිතා කිරීම වළක්වයි.

සාරාංශයක් ලෙස, භාෂාවේ මූල පද දෙකක් තිබීමට මා කැමතිය: varසහ let. මම ඒ දෙකෙන්ම ප්‍රකාශ නොකළ විචල්‍යයකට ලියන්නේ නම්, පයිතන් දෝෂයක් මතු කළ යුතුය. තවද, letවිචල්‍යයන් කියවීමට පමණක් වන අතර varවිචල්‍යයන් “සාමාන්‍ය” වේ.

මෙම උදාහරණය සලකා බලන්න:

x = 42    # Error: Variable `x` undeclared

var x = 1 # OK: Declares `x` and assigns a value.
x = 42    # OK: `x` is declared and mutable.

var x = 2 # Error: Redeclaration of existing variable `x`

let y     # Error: Declaration of read-only variable `y` without value
let y = 5 # OK: Declares `y` as read-only and assigns a value.

y = 23    # Error: Variable `y` is read-only

වර්ග තවමත් ව්‍යංගයෙන් පවතින බව සැලකිල්ලට ගන්න (නමුත් letවිචල්‍යයන් සියලු අභිප්‍රායන් සහ අරමුණු සඳහා සංඛ්‍යාත්මකව යතුරු ලියනය කර ඇති බැවින් ඒවා නව අගයකට ආපසු යා නොහැකි අතර varවිචල්‍යයන් තවමත් ගතිකව ටයිප් කළ හැක).

අවසාන වශයෙන්, සියලු ක්‍රම තර්ක ස්වයංක්‍රීයව විය යුතුය let, එනම් ඒවා කියවීමට පමණි. පහත දැක්වෙන මෝඩකම හැර, පරාමිතියක් වෙනස් කිරීමට පොදුවේ හොඳ හේතුවක් නොමැත:

def foo(bar = None):
    if bar == None: bar = [1, 2, 3]

මෙය තරමක් වෙනස් මෝඩකමක් මගින් ප්‍රතිස්ථාපනය කළ හැකිය:

def foo(bar = None):
    let mybar = bar or [1, 2, 3]

6
මම කැමතියි පයිතන්ට "var" ප්‍රකාශයක් තිබුනා නම් හොඳයි. ඔබ පවසන (ඉතා හොඳ) හේතුවට අමතරව, එය කේතය කියවීමද පහසු කරයි, මන්ද එවිට ඔබට සියලු විචල්‍ය ප්‍රකාශයන් හඳුනා ගැනීමට පිටුව පුරා පරිලෝකනය කළ හැකිය.
ජොකිං

25
එය හරියට පයිතන් සංවර්ධකයින් අතීතයේ පාඩම් නොසලකා හැරියාක් මෙනි. විචල්යයන් ප්රකාශයට පත් නොකිරීම, කාර්යයන් ප්රකාශයට පත් නොකිරීම, 1950 ගණන්වලදී සිදු කරන ලද වැරැද්දකි. යතුරු ලියනය කිරීම අසීරු වීමෙන් ඇති වූ දෝෂ සොයා ගැනීමට අපහසු අය පුදුම සහගත ලෙස 1950 ගණන්වලදී සෑදී ඇත. මෙම භාෂා වැරැද්ද නැවත වරක් හා පසුව සිදු කර ඇත. විචල්යයන් ප්රකාශ කිරීම විශාල බරක් නොවේ. එය මගේ බට් එක කිහිප වතාවක් ඉතිරි කර ඇත. මම අනිවාර්යයෙන් ම use strict;සහ use warnings;ඕනෑම ප්රමාණයේ තිර රචනය මත perl බසට ලං දී. පයිතන් විසින් බොහෝ නිදොස් කිරීමේ ආධාරක සංවර්ධකයා ඉවත් කර ඇත.
ඩේවිඩ් හැමන්

19
Av ඩේවිඩ්, පයිතන්ට සාධාරණ වීමට නම්, ඔබ පවරා නොමැති විචල්‍යයකට ප්‍රවේශ වීමට උත්සාහ කළහොත් එය ව්‍යතිරේකයක් මතු කරයි. ප්‍රකාශන නොමැති බොහෝ භාෂාවන් යම් ආකාරයක පෙරනිමි අගයක් ලබා දෙනු ඇත. එහි ප්‍රති As ලයක් වශයෙන්, පයිතන්ගේ අනුවාදය ගැටළු සහගත නොවේ.
වින්ස්ටන් එවර්ට්

1
@yi_H මෙම යෝජනාව පසුපසට අනුකූල වීම හෝ සැබෑ යෝජනාවක් නොවේ. ප්‍රශ්නය වූයේ, “පයිතන්ගේ අඩුපාඩු මොනවාද” යන්නයි… හොඳයි, නොතිබීම varසහ let(හෝ ඒ හා සමාන යාන්ත්‍රණයක්) අඩුපාඩුවක්. වෙනස් ලෙස කියන්න: මම පයිතන්ගේ නිර්මාණකරු වූයේ නම්, මම මේ වගේ දෙයක් කිරීමට ඉඩ තිබුණි. ඔබ විශේෂ පැකේජයක් පටවන විට (සමාන ) අනාගත අනුවාදවලට මෙය ඇතුළත් විය හැකි බව එයින් කියැවේ . කියන්න , . සින්ටැක්ටිකල් හැක්ස් අවශ්‍ය බැවින් මෙය සිදු නොවනු ඇත…__future__import strict
කොන්රාඩ් රුඩොල්ෆ්

3
+1 වඩා හොඳ 'ක්‍රියාකාරී-සමාන' ක්‍රමලේඛන හැකියාවන් එක් කිරීම සඳහා.
ඉවාන් ප්ලේස්

44

මගේ ප්‍රධාන පැමිණිල්ල වන්නේ නූල් ගැසීමයි, එය ගෝලීය පරිවර්තක අගුල හේතුවෙන් බොහෝ අවස්ථාවන්හි (ජාවා, සී සහ වෙනත් අය සමඟ සසඳන විට) ක්‍රියාකාරී නොවේ ( "පයිතන් ජිල් ඇතුලත" (PDF සබැඳිය) කතාව බලන්න)

කෙසේ වෙතත් බහු ක්‍රියාදාම අතුරුමුහුණතක් භාවිතා කිරීම ඉතා පහසුය, කෙසේ වෙතත් එය එදිරිව එදිරිව එදිරිව එකම ක්‍රියාදාමයන් සඳහා මතක භාවිතය මත වඩා බර වනු ඇත, නැතහොත් ඔබට බෙදාගත් දත්ත විශාල ප්‍රමාණයක් තිබේ නම් එය දුෂ්කර වේ. කෙසේ වෙතත්, වාසිය නම්, ඔබ බහු ක්‍රියාදාමයන් සමඟ වැඩ කරන වැඩසටහනක් ඇති විට, එය බහු යන්ත්‍ර හරහා පරිමාණය කළ හැකිය, නූල් කළ වැඩසටහනකට කළ නොහැකි දෙයක්.

ප්‍රලේඛනයේ විවේචනයට මම සැබවින්ම එකඟ නොවෙමි, එහි ඇති සියලුම ප්‍රධාන භාෂාවන් නොමැති නම් එය වඩා හොඳ හා වඩා හොඳ යැයි මම සිතමි.

එසේම ඔබට පයිලින්ට් ධාවනය වන ධාවන කාල දෝෂ බොහොමයක් අල්ලා ගත හැකිය .


2
පයිලින්ට් සඳහා +1. මම ඒ ගැන දැනගෙන හිටියේ නැහැ. ඊළඟ වතාවේ මම පයිතන්හි ව්‍යාපෘතියක් කරන විට, මම එය උත්සාහ කරමි. තවද, ඔබ CPython ක්‍රියාත්මක කිරීම වෙනුවට Jython භාවිතා කරන්නේ නම් බහු තෙරපුම හොඳින් ක්‍රියාත්මක වන බව පෙනේ. OTOH Jython CPython වලට වඩා තරමක් මන්දගාමී වේ, එබැවින් මෙය අර්ධ වශයෙන් පරමාර්ථය පරාජය කළ හැකිය.
dsimcha

3
නූල් දැමීම හොඳින් සහාය නොදක්වයිද? නූල් පුස්තකාල 2.1 ට පෙර සිට එහි පවතී.
rox0r

2
නූල් ආධාරකයක් ඇති බව මම දනිමි, නමුත් ජාවා හෝ සී සමඟ සසඳන විට, GIL ඔබේ කාර්ය සාධනය සැබවින්ම අඩු කරනු ඇත. නූල් සැකසීමට වඩා බහු සැකසුම් මොඩියුලය වඩාත් සුදුසු වන්නේ එබැවිනි.
cmcginty

2
ඔබට එය සොයා ගැනීමට කළමනාකරණය කළ හැකි නම් ප්‍රලේඛනය හොඳයි. ජාවා පංති ගූගල් කිරීම පයිතන්ට වඩා පහසුය.
බ්‍රෙන්ඩන් ලෝන්ග්

Ase කේසී මම පිළිතුරේ වචන පැහැදිලි කර ඇත්තෙමි, නූල් දැමීම සඳහා සහය දක්වන බැවින්, අමුතු කාර්ය සාධනයක් ප්‍රදර්ශනය කරයි (යොමු කිරීමක් සහ ලේඛනයට සබැඳි කිහිපයක් ද එක් කර ඇත)
dbr

28

සමහර පන්ති ධාවන දෝෂ හඳුන්වා දිය හැකි ස්ථිතික යතුරු ලියනය කිරීමේ lack නතාවය , තාරාවන්ගේ යතුරු ලියනය මඟින් සපයන අමතර නම්යතාවය වටින්නේ නැත.


5
පයිචෙකර් වැනි මෙවලම් තිබුණද, සී / ජාවා වැනි භාෂාවලින් සම්පාදකයෙකු විසින් සිදුකරන දෝෂ පරීක්ෂා කළ හැකිය.
ඔලිවර් වෙයිලර්

24
ගතික ටයිප් කිරීම සවි conscious ් design ාණික සැලසුම් තීරණයක් මිස අඩුපාඩුවක් නොවේ.
missingfaktor

14
ජාවාගේ දුර්වලතාවය ගතික ටයිප් කිරීමේ lack නතාවය යැයි කීමට සමාන වේ.
MAK

12
issmissingfaktor, @MAK, පැහැදිලිවම තාරාවන් ටයිප් කිරීම අපේක්ෂිත අංගයකි. නමුත් බොහෝ සැලසුම් තීරණ වෛෂයික ප්‍රතිලාභ සහ අවාසි හඳුන්වා දෙයි. එකතු කරන ලද කේත නම්යතාවය ගතික ටයිප් කිරීමේ වාසියක් වන අතර අමතර ධාවන කාල දෝෂ වල අඩුපාඩුවකි. විෂයානුබද්ධ කොටස නම් විශේෂාංගය එය වටී ද යන්නයි.
ජාකොබ්

6
ස්ථිතික ටයිප් කිරීම නොමැතිකම නිසා ක්‍රමලේඛකයන්ට ධාවන කාල දෝෂ ඇති කේත ලිවීම පහසු කරයි . C # හි, int foo = 4; Console.Write(foo.Length);සම්පාදනය නොකරයි, එබැවින් "Int32 ට දේපල දිගක් නොමැත" යන දෝෂය ප්‍රකාශිත මෘදුකාංගයක් තුළට අහම්බෙන් ඇතුල් විය නොහැක. පයිතන් වලදී, ඔබ එවැනි දෝෂ සෙවීම සඳහා විකල්ප ද්විතියික මෙවලම් ධාවනය නොකරන්නේ නම්, දැනට පවතින වස්තූන්ගේ සාමාජිකයින්ට ප්‍රවේශ වන කේතය ධාවන කාල දෝෂ ඇති වන තෙක් හඳුනාගත නොහැක.
ජාකොබ්

27

මම හිතන්නේ පයිතන්ගේ වස්තු-නැඹුරු කොටස් "බෝල්ට් ඔන්" බවක් දැනෙනවා. සෑම ක්‍රමයකටම “ස්වයං” යන්න පැහැදිලිවම සම්මත කිරීමේ අවශ්‍යතාවය එහි OOP සං component ටකය පැහැදිලිවම සැලසුම් කර නොමැති බවට රෝග ලක්ෂණයකි , ඔබට පැවසිය හැකිය; වෙනත් පිළිතුරකින් විවේචනය කරන ලද පයිතන්ගේ ඇතැම් විට අවිනිශ්චිත විෂය පථ නීති ද එය පෙන්වයි.

සංස්කරණය කරන්න:

පයිතන්ගේ වස්තු-නැඹුරු කොටස් "බෝල්ට් ඔන්" යැයි හැඟෙන විට, මම අදහස් කරන්නේ ඇතැම් විට ඕඕපී පැත්තට තරමක් නොගැලපෙන බවක් දැනෙන බවයි. උදාහරණයක් ලෙස රූබි ගන්න: රූබි හි සෑම දෙයක්ම වස්තුවක් වන අතර ඔබ හුරුපුරුදු obj.methodවාක්‍ය ඛණ්ඩය භාවිතා කරන ක්‍රමයක් අමතන්න (අධික බර පැටවූ ක්‍රියාකරුවන් හැර); පයිතන්හි, සෑම දෙයක්ම වස්තුවකි, නමුත් සමහර ක්‍රම ඔබ ශ්‍රිතයක් ලෙස හඳුන්වයි; එනම්, __len__දිගක් ආපසු ලබා දීම සඳහා ඔබ අධික ලෙස පැටවෙනු ඇත, නමුත් වෙනත් භාෂාවල සුලභ len(obj)(සහ ස්ථාවර) obj.lengthපොදු වෙනුවට එය අමතන්න . මෙම සැලසුම් තීරණය පිටුපස හේතු ඇති බව මම දනිමි, නමුත් මම ඒවාට කැමති නැත.

ඊට අමතරව, පයිතන්ගේ OOP මාදිලියේ කිසිදු ආකාරයක දත්ත ආරක්ෂාවක් නොමැත, එනම් පුද්ගලික, ආරක්ෂිත සහ මහජන සාමාජිකයන් නොමැත; ක්‍රම භාවිතා කරමින් _හා __ඉදිරියෙන් ඔබට ඒවා අනුකරණය කළ හැකිය , නමුත් එය එක්තරා ආකාරයක කැතයි. ඒ හා සමානව, පයිතන්ට OOP හි පණිවුඩ යැවීමේ අංගය හරියටම ලැබෙන්නේ නැත.


17
ස්වයං පරාමිතිය හුදෙක් වෙනත් භාෂාවන්ගෙන් ගම්‍ය වන දේ පැහැදිලි කිරීමකි . එම භාෂාවන්ට පැහැදිලිවම "ස්වයං" පරාමිතියක් ඇත.

13
Og රොජර් පේට්: ඔව්, නමුත් “ස්වයං” සඳහා එම පැහැදිලි අවශ්‍යතාවය කරදරකාරී කාරණයක් (සහ, මම තර්ක කරන්නේ, කාන්දු වන සාරාංශයකි). එය හිතාමතාම සැලසුම් තීරණයක් ලෙස නොව, පයිතන්ගේ “අමුතු” විෂය පථ නීති නිසා ය. මට ලිපිය ඉක්මණින් සොයාගත නොහැක, නමුත් ගයිඩෝ වැන් රොසුම්ගේ ඊමේල් සටහනක් ඇත, එය "ස්වයං" පරාමිතිය අවශ්‍ය වන්නේ ඇයිද යන්න පැහැදිලි කරයි.
mipadi

2
Og රොජර් පේට්: වස්තු-නැඹුරු භාෂාවලින්, පළමු පරාමිතිය ලෙස ඉලක්කය පසු කිරීම තවමත් ක්‍රියාත්මක කිරීමේ විස්තරයක් ලෙස සැලකිය හැකිය. මගේ අදහස එය හොඳ අදහසක් ද නැද්ද යන්න නොවේ; කාරණය Python, එය අප අතර නැති බවයි නොවේ දැනුවත් නිර්මාණය තීරණය කිරීම නොව, නමුත් එම කරුණු නිශ්චය පද්ධතිය ඉනනන පමණ වැඩ කටයුතු නිසා.
mipadi

3
@mipadi: යාවත් කාලීන කිරීම වඩා හොඳ තර්ක (මම downvote ඉවත් කරන්නම් එසේ) ඇත, නමුත් ඔබ මෙන් ලෙන් බැලීම නම් ක්රියාකරු ඔබ වැඩිපුර ඇති, එය Python වඩා OO ය. පයිතන්ට පණිවුඩ යැවීම වැරදිසහගත වන්නේ කෙසේද යන්න පිළිබඳ උදාහරණයක් හෝ තර්කයක් බැලීමට කැමතියි.

8
පැහැදිලි ස්වයං යනු ක්‍රම යනු හුදෙක් කාර්යයන් පමණක් වන අතර (වින්ස්ටන් සඳහන් කළ පරිදි, දේශීය විචල්‍ය ප්‍රකාශයන් ව්‍යංගයෙන්). එසේ සිදු කිරීමට ඔබ කරන්නේ නිදහස් වගේ මෝස්තර තීරණය, නමුත් එහිදී භාෂාවෙන් "මත සවිකරන" OOP ඉල්ලා සියල්ල ක්රියාත්මක වීමේදී වස්තුවක් ඒක වෙනස් ලෙස ලබාගත හැකි ය.
ncoghlan

19

පයිතන් ගැන මා අකමැති දේවල්:

  1. නූල් දැමීම (එය දැනටමත් සඳහන් කර ඇති බව මම දනිමි, නමුත් සෑම තනතුරකම සඳහන් කිරීම වටී).
  2. බහු රේඛා නිර්නාමික ශ්‍රිත සඳහා සහය නොදක්වයි ( lambdaඅඩංගු විය හැක්කේ එක් ප්‍රකාශනයක් පමණි).
  3. සරල නොමැති නමුත් බලවත් ආදාන කියවීම කාර්යය / පන්ති (වගේ cinහෝ scanfC ++ හා C හෝ Scannerජාවා).
  4. සියලුම නූල් පෙරනිමියෙන් යුනිකෝඩ් නොවේ (නමුත් පයිතන් 3 හි සවි කර ඇත).

5
(2) සම්බන්ධයෙන්, මම සිතන්නේ මෙය කැදැලි ක්‍රියාකාරිත්වයට ඇති හැකියාව මගින් සමනය කර ඇති බවයි.
කොන්රාඩ් රුඩොල්ෆ්

3
On කොන්රාඩ් රුඩොල්ෆ් බහු රේඛීය ලැම්බඩාස් වෙනුවට කූඩුවල ක්‍රියාකාරිත්වයන් ඇති මගේ ප්‍රධාන කුසලතාවය වන්නේ කියවීමේ අනුපිළිවෙල මාරු වීමයි.
කුකී ඕෆ් ෆෝචූන්

2
kswkschwartz: raw_inputසහ 'sys.stdin' ලස්සන හිස් කබල්. ආකෘතිගත ආදානය ලබා ගැනීමට ඔවුන් සහාය නොදක්වයි (උදා: "% d:% d:% d"% (වේලාව කියවීමට පැය, මිනිත්තුව, තත්පර) වැනි). ස්කෑන්ෆ් (සී වලින්) හෝ ස්කෑනර් (ජාවා) හි ක්‍රියාකාරීත්වයට ළඟා වන කිසිවක් මේ දක්වා පයිතන්ට නොමැත.
MAK

2
@limscoder: ජාවා හි සියලුම නූල් පෙරනිමියෙන් යුනිකෝඩ් වේ. වෙනම str සහ යුනිකෝඩ් පන්ති පැවැත්වීමට මට හොඳ හේතුවක් නොපෙනේ. IMHO, නූල් සහ බයිට් වල අරා එකම වියුක්තයකින් නිරූපණය නොකළ යුතුය. නූල් පංතියක් විය යුත්තේ පෙළ ගබඩා කිරීම සහ හැසිරවීම සඳහා ය - අප අභ්‍යන්තර සැලකිල්ලක් නොදක්වයි. නූලක් තුළ නිශ්චිත බයිට් එකක කැපීම / ප්‍රතිස්ථාපනය / මකා දැමීම / ඇතුළත් කිරීම වැනි දේවල් කිරීමට අපට අවශ්‍ය නොවිය යුතුය - අපට මෙය විශේෂිත අක්ෂරයකින් කිරීමට අවශ්‍යය . වෙනස අමතක කිරීම පහසු වන අතර ඉංග්‍රීසි නොවන ආදානය පෝෂණය කරන විට ඔබේ කේතය පුපුරවා හරිනු ඇත.
MAK

1
@limscoder: ඔබට පහසු යුනිකෝඩ් දැකීමට අවශ්‍ය නම්, Tcl උත්සාහ කරන්න. මීට වසර කිහිපයකට පෙර මට Tcl සිට Python වෙත මාරුවීමට සිදු වූ අතර, පිරිමි ළමයා පුදුමයට පත් වූයේ ප්‍රාථමික පයිතන්ගේ යුනිකෝඩ් සහයෝගය සැසඳීමේදී කෙතරම්ද යන්නයි. එය Tcl හි සැබවින්ම නොපෙනෙන අතර පයිතන්හි විශාල වේදනාවක් වේ.
බ්‍රයන් ඕක්ලි

18

විකෘති දත්ත වර්ග සමඟ පෙරනිමි තර්ක.

def foo(a, L = []):
    L.append(a)
    print L

>>> foo(1)
[1]
>>> foo(2)
[1, 2]

එය සාමාන්‍යයෙන් සමහර සියුම් දෝෂවල ප්‍රති result ලයකි. පෙරනිමි තර්කයක් අවශ්‍ය වූ විට (සෑම ශ්‍රිත ඇමතුමකටම භාවිතා කිරීමට තනි වස්තුවක් නිර්මාණය කරනවාට වඩා) එය නව ලැයිස්තු වස්තුවක් නිර්මාණය කළහොත් වඩා හොඳ යැයි මම සිතමි.

සංස්කරණය කරන්න: එය විශාල ගැටළුවක් නොවේ, නමුත් ලේඛනයේ යමක් යොමු කිරීමට අවශ්‍ය වූ විට, එයින් අදහස් වන්නේ එය ගැටළුවක් බවයි. මෙය අවශ්‍ය නොවිය යුතුය.

def foo(a, L = None):
    if L is None:
        L = []
    ...

විශේෂයෙන් එය පෙරනිමිය විය යුතු විට. එය ඔබ බලාපොරොත්තු වන දේට නොගැලපෙන හා තත්වයන් විශාල ගණනකට ප්‍රයෝජනවත් නොවන අමුතු හැසිරීමකි.


මම මේ පිළිබඳව පැමිණිලි රාශියක් දකිමි, නමුත් සුපුරුදු තර්කයක් ලෙස හිස් ලැයිස්තුවක් (ශ්‍රිතය වෙනස් කරන බව) මිනිසුන් බල කරන්නේ ඇයි? ඇත්තෙන්ම මෙය එතරම් විශාල ගැටලුවක්ද? එනම්, මෙය සැබෑ ගැටලුවක්ද?
මාටින් විල්කන්ස්

8
එය අවම වශයෙන් පුදුම කිරීමේ මූලධර්මය උල්ලං lates නය කරයි. ඇමතුම් හරහා ශ්‍රිතයේ පරාමිතීන් නොනැසී පවතිනු ඇතැයි කිසිවෙකු අපේක්ෂා නොකරයි.
aib

එය ස්ක්‍රිප්ටින් භාෂාවක් වීම එහි ප්‍රති ence ලයකි. ඔබට මෙම දෝෂය එක් වරක් පමණක් කඩා වැටෙනු ඇත. මෙම දෝෂය ඔබම හදුනා ගැනීම ඇත්තෙන්ම ඔබට මතක් කර දෙන්නේ ඔව්, මෙය තවමත් ස්ක්‍රිප්ටින් භාෂාවක් බවයි. ඒ, ස්ක්‍රිප්ටින් අංගය සැඟවීමට භාෂාව එතරම් හොඳ නිසා පමණි (ඔබ එය නිවැරදිව භාවිතා කරයි යැයි උපකල්පනය කරන්න).
සෝරන් පැව්ලොවික්

O සෝරන්පව්ලොවික් කුතුහලයෙන්, මෙය ස්ක්‍රිප්ටින් භාෂාවක් වීමේ ප්‍රති ence ලයක් වන්නේ ඇයි? දත්ත බැඳී ඇති විට සහ ලැයිස්තු විකෘති වන නිසා (එය සාමාන්‍යයෙන් හොඳ කාරණා දෙකක් වන නමුත් එකට එකතු වූ විට නරක වීමට හේතු වේ) එය ගැටළුවක් ලෙස පෙනේ. ශ්‍රිතය කැඳවන සෑම අවස්ථාවකම නව ලැයිස්තුවක් නිර්මාණය කරනවාට වඩා, ක්‍රියාකාරීත්වය නිර්මාණය කරන අවස්ථාවේ දී දත්ත බැඳ තැබුවහොත්, ස්ක්‍රිප්ටින් නොවන භාෂාවකින් ද මෙම ගැටළුව සිදුවිය හැකිය.
jsternberg

අයිබ්: මම හිතන්නේ නැහැ - මෙහි ඇති පරාමිතිය අනෙක් සෑම පයිතන් වස්තුවක් මෙන් - වස්තුවකට දර්ශකයක් වේ. මෙම අවස්ථාවේ දී, වස්තුව විකෘති එකක් වන අතර, ශ්‍රිතය ප්‍රකාශ කරන විට විචල්‍යය බැඳී ඇත. පරාමිතිය "ඇමතුම් හරහා නොනැසී පවතී", නමුත් නොනැසී පවතින්නේ විකෘති වස්තුවක් වෙත යොමු වීමකි.
පැට්‍රික් කොලින්ස්

14

සංවර්ධන භාෂාවක් ලෙස එතරම් නම්‍යශීලී වන පයිතන්ගේ සමහර අංගයන් සී ++ සහ ජාවා වැනි භාෂාවල සම්පාදනය හා සම්බන්ධ කිරීමේ ක්‍රියාවලිය මගින් සිදු කරන ලද “සමස්ත වැඩසටහන” ස්ථිතික විශ්ලේෂණයට භාවිතා කරන අයගේ ප්‍රධාන අඩුපාඩු ලෙස සැලකේ.

  • දේශීය විචල්‍යයන් ව්‍යංගයෙන් ප්‍රකාශ කිරීම

සාමාන්‍ය පැවරුම් ප්‍රකාශය භාවිතයෙන් දේශීය විචල්‍යයන් ප්‍රකාශයට පත් කෙරේ. මෙයින් අදහස් කරන්නේ වෙනත් ඕනෑම විෂය පථයක විචල්‍ය බන්ධන සඳහා සම්පාදකයා විසින් පැහැදිලි විවරණයක් ලබා ගත යුතු බවයි (පිටත විෂය පථ සඳහා ගෝලීය සහ ස්ථානීය නොවන ප්‍රකාශ, නිදසුනක් ලෙස විෂය පථ සඳහා ප්‍රවේශ අංකනය ආරෝපණය කිරීම). මෙය ක්‍රමලේඛනය කිරීමේදී අවශ්‍ය බොයිලේරු ප්‍රමාණය විශාල වශයෙන් අඩු කරයි, නමුත් එයින් අදහස් කරන්නේ පැහැදිලි විචල්‍ය ප්‍රකාශන අවශ්‍ය වන භාෂාවලින් සම්පාදකයා විසින් හසුරුවන චෙක්පත් සිදු කිරීම සඳහා තෙවන පාර්ශවීය ස්ථිතික විශ්ලේෂණ මෙවලම් (පයිෆ්ලේක් වැනි) අවශ්‍ය බවයි.

  • "වඳුරු පැච් කිරීම" සඳහා සහය දක්වයි

මොඩියුල, පංති වස්තු සහ බිල්ඩින් නාම අවකාශයේ අන්තර්ගතය ධාවන වේලාවේදී වෙනස් කළ හැකිය. මෙය අතිශයින්ම බලවත් වන අතර බොහෝ අතිශයින්ම ප්‍රයෝජනවත් ක්‍රමවේදයන්ට ඉඩ සලසයි. කෙසේ වෙතත්, මෙම නම්යශීලීභාවය යනු ස්ථිතිකව ටයිප් කරන ලද OO භාෂාවන්ට පොදු සමහර විශේෂාංග පයිතන් ඉදිරිපත් නොකරන බවයි. වඩාත්ම වැදගත් දෙය නම්, “ස්වයං” පරාමිතිය නිදර්ශන ක්‍රමවලට වඩා පැහැදිලිය. (“ක්‍රම” පන්තියක් තුළ නිර්වචනය කළ යුතු නැති නිසා, පංතිය වෙනස් කිරීමෙන් ඒවා පසුව එකතු කළ හැකිය, එයින් අදහස් වන්නේ එය විශේෂයෙන් ප්‍රායෝගික නොවන බවයි නිදර්ශන යොමුව ව්‍යංගයෙන් සම්මත කිරීම සඳහා) සහ කේතය පන්තියේ “ඇතුළත” හෝ “පිටත” තිබේද යන්න මත පදනම්ව ආරෝපණ ප්‍රවේශ ප්‍රවේශයන් පහසුවෙන් බලාත්මක කළ නොහැක (එම වෙනස පවතින්නේ පන්ති අර්ථ දැක්වීම ක්‍රියාත්මක කරන අතරතුර පමණි).

  • ලෝහයෙන් far ත

වෙනත් බොහෝ ඉහළ මට්ටමේ භාෂාවන් සම්බන්ධයෙන්ද මෙය සත්‍යයකි, නමුත් පයිතන් බොහෝ දෘඩාංග විස්තර වියුක්ත කරයි. සී සහ සී ++ වැනි පද්ධති ක්‍රමලේඛන භාෂා දෘඩාංග ප්‍රවේශය හැසිරවීමට වඩා සුදුසු ය (කෙසේ වෙතත්, පයිතන් සීපයිතන් දිගුව මොඩියුල හරහා හෝ වඩාත් පහසුවෙන් ctypesපුස්තකාලය හරහා කතා කරන අය සමඟ සතුටින් කතා කරනු ඇත ).


12
  1. Start} / ආරම්භක-අන්තය වෙනුවට කේත බ්ලොක් සඳහා ඉන්ඩෙන්ටේෂන් භාවිතා කිරීම.
  2. සෑම නවීන භාෂාවකටම නිසි ශබ්ද කෝෂයක් ඇත, නමුත් පයිතන් නොවේ (පහත බලන්න).
  3. අවුල් සහගත ලියකියවිලි (පර්ල් 5 ප්‍රලේඛනය සමඟ සසඳන්න, එය විශිෂ්ටයි).
  4. සමුද්‍ර ජැකට් (එය කිරීමට ඇත්තේ එක් මාර්ගයක් පමණි).

බිඳුණු විෂය පථය සඳහා උදාහරණය; පරිවර්තක සැසියෙන් පිටපත:

>>> x=0
>>> def f():
...     x+=3
...     print x
... 
>>> f()
Traceback (most recent call last):
  File "", line 1, in ?
  File "", line 2, in f
UnboundLocalError: local variable 'x' referenced before assignment

globalහා nonlocalප්රධාන වචන මේ නිර්මාණය ආගමට පුරවා ගැනීමට හඳුන්වා දී තිබේ.


2
විෂය පථය සම්බන්ධයෙන්, කුතුහලය දනවන අයට වර්තමාන ක්‍රමයේ තර්කණය අවබෝධ කර ගැනීම සඳහා python.org/dev/peps/pep-3104 දෙස බැලීම වටී .
වින්ස්ටන් එවර්ට්

+1 සමඟ එකඟ වන්න. ඉතින්, +1.
ජාස්

34
එය කිරීමට එක් ක්‍රමයක් තිබීම වාසියකි. ඔබ වෙනත් කෙනෙකුගේ කේතයක් කියවන විට ඔබට තේරුම් ගත හැකි තනි ප්‍රකාශයක් නොමැත. ඔබේ මොළයේ මෝඩයන් දැඩි වූ පසු, ඔබට ක්ෂණික හඳුනා ගැනීමක් තිබිය යුතුය.
rox0r

9
@ Rox0r සමඟ සම්පුර්ණයෙන්ම එකඟ වන්න. "Straight ජු-ජැකට්" සියලු ආකාරයේ සින්ටැක්ස් යුද්ධ වළක්වයි.
keithjgrant

8
ඇත්තම කිව්වොත්, මට ඉතා කලාතුරකින් පයිතන්හි globalහෝ nonlocalවචන අවශ්‍ය වේ. වැඩ කරන සෑම දිනකම මම පයිතන් කේතය ලිවුවද, මෙම ගැටලුව පවතින බව මට අමතක වී ඇති අතර එය පැමිණි කිහිප වතාවක්ම නැවත ගූගල් කිරීමට සිදුවේ. මට නම්, ගෝලීය විචල්‍යයන් වෙනස් කිරීමට අවශ්‍ය කේතය (හෝ ඊටත් වඩා, බාහිර ගෝලීය නොවන විචල්‍යයන්) කේත සුවඳකි. සාමාන්‍යයෙන් (සෑම විටම නොවේ) වඩා හොඳ ක්‍රමයක් තිබේ.
බෙන්

11

පයිතන්ගේ වස්තු-නැඹුරු 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)කිසිවක් නම් නොකෙරෙන බැවින් එය ඊටත් වඩා ලස්සනයි ( )! ක්‍රම වලට වඩා කාර්යයන් (පෙරනිමි හැසිරීම ආදිය) භාවිතා කිරීමේ වාසි මම තේරුම් ගතිමි, නමුත් මම තවමත් එයට කැමති නැත.

ඒක අවුල් සහගතයි. විශාල ව්‍යාපෘති වලදී, අවුල් සහගතභාවය ඔබේ නරකම සතුරා වේ.


1
ඔව් ... මට ඇත්තටම LINQ ශෛලිය මග හැරී ඇත (මට විශ්වාසයි එය ක්‍රියාත්මක කළ පළමු පුද්ගලයා LINQ නොවන බව, නමුත් මට එය වඩාත් හුරුපුරුදුයි) ලැයිස්තු හැසිරවීම.
කුකී ඕෆ් ෆෝචූන්

1
ලෙන් (x) ක්‍රමයක් ලෙස නොසිතන්න. "len" යනු ශ්‍රිතයකි. පයිතන්ට කාර්යයන් සහ ක්‍රම ඇති අතර එම ප්‍රවේශයේ කිසිදු වරදක් මා දකින්නේ නැත. නිසි කාර්යයන් නොමැතිකම සාමාන්‍යයෙන් අනවශ්‍ය යතුරු ලියනයක ප්‍රභවයකි.
rbanffy

මම දන්නවා len()ශ්‍රිතයක්, සහ වාසි මොනවාද. එය නරක අදහසක් යැයි මා සිතන්නේ ඇයි, ගෝලීය කාර්යයන් විශේෂයෙන් නරක අදහසක් යැයි මා සිතන්නේ ඇයි සහ ඔබේ ක්‍රියාකාරිත්වය සංවිධානය කිරීමට හා
පරිහරණය කිරීමට

42 (හෝ එය 43 ද?) මූල පද 'විශාල' සංඛ්‍යාවක් යැයි මම නොසිතමි. බව ද වැනි දේවල් ඇතුළත් වේ def, classසහ අනෙකුත් නොවන ශ්රිත කැඳවුම්. වෙනත් බොහෝ ජනප්‍රිය භාෂාවලින් එය 100+ සමඟ සසඳන්න. එසේම, සිට පේළි සලකා import this: Namespaces are one honking great idea -- let's do more of those!. මම හිතන්නේ ඔබ පයිතන් නාම අවකාශයන් වරදවා වටහා ගත හැකිය;)
වේන් වර්නර්

8

නොමැතිකම homoiconicity .

පයිතන්ට 3.x සඳහා "සමඟ" යතුරු පදයක් එක් කිරීමට බලා සිටීමට සිදුවිය. ඕනෑම සමජාතීය භාෂාවකින් එය පුස්තකාලයකට සුළු වශයෙන් එකතු කළ හැකිය.

පිළිතුරු වල මා දැක ඇති වෙනත් බොහෝ ගැටළු වර්ග 3 න් එකකි:

1) මෙවලම් සමඟ සවි කළ හැකි දේවල් (උදා: පයිෆ්ලේක්) 2) ක්‍රියාත්මක කිරීමේ විස්තර (ජීඅයිඑල්, කාර්ය සාධනය) 3) කේතීකරණ ප්‍රමිතීන් සමඟ සවි කළ හැකි දේවල් (එනම් මිනිසුන් නොසිටියේ නම්)

# 2 භාෂාව පිළිබඳ ගැටළුවක් නොවේ, IMO # 1 සහ # 3 බරපතල ගැටළු නොවේ.


1
withපයිතන් 2.5 සමඟ ලබා ගත හැකි from __future__ import with_statementනමුත්, මම එකඟ වෙමි, සාමාන්‍ය කාර්යයන් වෙනුවට if/ for/ print/ වැනි ප්‍රකාශ “විශේෂ” වීම ඉඳහිට අවාසනාවන්ත බව මට පෙනී
ගියේය

7

පයිතන් මගේ ප්‍රියතම භාෂාව වන අතර එය ඉතා ප්‍රකාශිත වන නමුත් බොහෝ වැරදි කිරීමෙන් ඔබව වළක්වයි. මට කරදර කරන කරුණු කිහිපයක් තවමත් මා සතුව ඇත:

  • සැබෑ නිර්නාමික කාර්යයන් නොමැත. තනි ප්‍රකාශන කාර්යයන් සඳහා ලැම්බඩා භාවිතා කළ හැකි withඅතර, ඔබ රූබී හි කේත වාරණයක් භාවිතා කරන බොහෝ දේ සඳහා ප්‍රකාශය භාවිතා කළ හැකිය. නමුත් සමහර අවස්ථාවන්හිදී එය දේවල් වලට වඩා ටිකක් අවුල් සහගත කරයි. (ජාවාහි මෙන් එය අවුල් සහගතය, නමුත් තවමත් ...)

  • මොඩියුල සහ ගොනු අතර සම්බන්ධතාවයේ සමහර ව්‍යාකූලතා. විධාන රේඛාවෙන් "python foo.py" ධාවනය කිරීම "import foo" ට වඩා වෙනස් වේ. පයිතන් 2.x හි සාපේක්ෂ ආනයනයන් ද ගැටළු ඇති කළ හැකිය. තවමත්, පයිතන්ගේ මොඩියුලයන් සී, සී ++ සහ රූබි වල අනුරූප ලක්ෂණ වලට වඩා බෙහෙවින් යහපත් ය.

  • පැහැදිලි self. මම එයට හේතු කිහිපයක් තේරුම් ගත්තද, මම දිනපතා පයිතන් භාවිතා කළද, එය අමතක කිරීමේ වැරැද්ද කිරීමට මම නැඹුරු වෙමි. එය සමඟ ඇති තවත් ගැටළුවක් නම් මොඩියුලයකින් පන්තියක් සෑදීම තරමක් වෙහෙසකර වීමයි. පැහැදිලි ස්වයං සම්බන්ධය අනෙක් අය පැමිණිලි කර ඇති සීමිත විෂය පථයට සම්බන්ධ වේ. පයිතන් හි කුඩාම විෂය පථය වන්නේ ශ්‍රිත විෂය පථයයි. ඔබ කළ යුතු පරිදි ඔබේ කාර්යයන් කුඩා ලෙස තබා ගන්නේ නම්, එය තනිවම ගැටළුවක් නොවන අතර IMO බොහෝ විට පිරිසිදු කේතයක් ලබා දෙයි.

  • lenඔබ ක්‍රමවේදයක් වනු ඇතැයි අපේක්ෂා කරන සමහර ගෝලීය කාර්යයන් (එය ඇත්ත වශයෙන්ම තිරය පිටුපස ඇත).

  • සැලකිය යුතු ඉන්ඩෙන්ටේෂන්. මම සිතන අදහසම නොවේ, නමුත් බොහෝ දෙනෙකුට පයිතන් උත්සාහ කිරීමෙන් වළක්වන එකම දෙය මෙය බැවින්, සමහර විට (විකල්ප) ආරම්භක / අවසන් සංකේත සමඟ පයිතන් වඩා හොඳ වනු ඇත. එම පුද්ගලයින් නොසලකා හැරීමෙන්, මට මුළුමනින්ම ඉන්ඩෙන්ටේෂන් සඳහා බලහත්කාරයෙන් ජීවත් විය හැකිය.

  • එය ජාවාස්ක්‍රිප්ට් වෙනුවට වෙබ් බ්‍රව්සර්වල සාදන ලද භාෂාව නොවන බව.

මෙම පැමිණිලි අතුරින්, එය භාෂාවට එකතු කළ යුතු යැයි මා සිතන තරමටම සැලකිලිමත් වන පළමු එක එයයි. අන්තිම එක හැර අනෙක් ඒවා තරමක් සුළුය, එය සිදුවුවහොත් එය ඉතා හොඳ වනු ඇත!


+1 datetime.datetime.now()එක් ව්‍යාපෘතියක් ලිවිය හැකි විට ලිවිය යුතුදැයි මට සිතේ. datetime.nowඉන්පසු ව්‍යාපෘති දෙකක් මිශ්‍ර කිරීමෙන් එය ලිවීමේ එක් ක්‍රමයක් අනෙකක් බැහැර කරයි. නියත වශයෙන්ම මෙය ජාවාහි සිදු නොවනු ඇත, එය මොඩියුලයක් ගොනුවකට සමාන නොවේ (?) භාවිතයන් දෙකම ප්‍රායෝගිකව හා පැහැදිලිව භාවිතා කරන විට මොඩියුලය ගොනුව සමඟ අපව ව්‍යාකූල කර ඇති බව පොදු ආකාරයෙන් පෙනෙන්නේ කෙසේදැයි ඔබ දුටුවහොත් self, ඇමතුම්වල ක්‍රියාකාරිත්වයට සමාන තර්ක සංඛ්‍යාවක් නොමැති බැවින් මම තවමත් තේරුම් ගැනීමට උත්සාහ කරමි. වීඑම් පයිතන් මන්දගාමී බව ඔබ සිතනු ඇත?
නික්ලස්

පැහැදිලි ස්වයං මූල පදය සමඟ ඔබේ ගැටලුව සම්බන්ධයෙන්. ඒ සඳහා හොඳ පයිතන් IDE භාවිතා කිරීමට මා යෝජනා කළ හැකිද? මම දන්නවා PyDev on Eclipse ඔබ පන්තියක් තුළ ලියන බව අනාවරණය වුවහොත් ශ්‍රිත අත්සනක ස්වයං කොටස ස්වයංක්‍රීයව සම්පූර්ණ කරයි.
සෝරන් පැව්ලොවික්

5

පයිතන් සම්පුර්ණයෙන්ම පරිණත නොවේ: මේ මොහොතේ පයිතන් 3.2 භාෂාවට දැනට බෙදා හැර ඇති බොහෝ පැකේජ සමඟ අනුකූලතා ගැටලු ඇත (සාමාන්‍යයෙන් ඒවා පයිතන් 2.5 සමඟ අනුකූල වේ). මෙය දැනට විශාල සංවර්ධන උත්සාහයක් අවශ්‍ය වන විශාල අඩුපාඩුවක් වේ (අවශ්‍ය පැකේජය සොයා ගන්න; ගැළපුම සත්‍යාපනය කරන්න; වඩා ගැළපෙන තරම් හොඳ නොවන පැකේජයක් තෝරා ගැනීම කිරා මැන බලන්න; හොඳම අනුවාදය ගන්න, එය දින 3.3 ක් දක්වා යාවත්කාලීන කරන්න; ප්‍රයෝජනවත් දෙයක් කිරීමට පටන් ගන්න).

2012 මැද භාගයේදී මෙය අඩුපාඩුවක් වනු ඇත.

මම හිතන්නේ මම රසික පිරිමි ළමයෙකු විසින් පහත් කොට සලකනු ලැබුවා. සංවර්ධක සාකච්ඡාවකදී අපගේ ඉහළ මට්ටමේ සංවර්ධක කණ්ඩායම එකම නිගමනයකට එළඹුණි.

පරිණතභාවය එක් ප්‍රධාන අර්ථයකින් අදහස් කරන්නේ කණ්ඩායමකට තාක්‍ෂණය භාවිතා කළ හැකි අතර සැඟවුණු අවදානම් නොමැතිව (අනුකූලතා ගැටලු ඇතුළුව) ඉතා ඉක්මණින් ක්‍රියාත්මක විය හැකි බවයි. තෙවන පාර්ශවීය පයිතන් පැකේජ සහ බොහෝ යෙදුම් අද බහුතර පැකේජ සඳහා 3.2 යටතේ ක්‍රියා නොකරයි. මෙමඟින් ගැටළුව විසඳීම වෙනුවට තාක්‍ෂණය ඒකාබද්ධ කිරීම, පරීක්ෂා කිරීම, නැවත ක්‍රියාත්මක කිරීම වැනි වැඩ වැඩි ප්‍රමාණයක් නිර්මාණය කරයි == අඩු පරිණත තාක්‍ෂණය.

2013 ජුනි සඳහා යාවත්කාලීන කිරීම: පයිතන් 3 තවමත් පරිණත ගැටලු ඇත. සෑම විටම කණ්ඩායම් සාමාජිකයෙකුට අවශ්‍ය පැකේජයක් සඳහන් කර "එය 2.6 සඳහා පමණක්" යැයි පවසනු ඇත (මෙම සමහර අවස්ථාවල මම 2.6 සමඟ පමණක් 2.6 පැකේජය භාවිතා කිරීම සඳහා දේශීය හොස්ට් සොකට් හරහා වැඩ කිරීමේ ක්‍රියාවලියක් ක්‍රියාත්මක කර ඇති අතර ඉතිරි කොටස අපගේ මෙවලම් 3.2 සමඟ පවතී). පිරිසිදු-පයිතන් විකිය වන මොයින්මොයින් පවා පයිතන් 3 හි ලියා නොමැත.


2
මම ඔබ සමඟ එකඟ වන්නේ පරිණතභාවය පිළිබඳ ඔබේ අර්ථ දැක්වීම සැලසුමට නොගැලපෙන අනුවාදයකට නොගැලපේ නම් පමණි .
tshepang

3
පයිතන්ගේ නොගැලපෙන ධාරා දෙක ගැටළුවක් බව මම එකඟ වෙමි (එය සිදු කළේ ඇයිද යන්න තේරුම් ගත හැකි වුවද), නමුත් එය “පරිණතභාවය” පිළිබඳ ගැටලුවක් ලෙස මා දකින්නේ නැත.
වින්ස්ටන් එවර්ට්

පරිණතභාවය යනු එක් අර්ථයකින් අදහස් කරන්නේ කණ්ඩායමකට තාක්‍ෂණය භාවිතා කළ හැකි අතර සැඟවුණු අවදානම් නොමැතිව (අනුකූලතා ගැටලු ඇතුළුව) ඉතා ඉක්මණින් ක්‍රියාත්මක විය හැකි බවයි. තෙවන පාර්ශවීය පයිතන් පැකේජ සහ බොහෝ යෙදුම් අද බහුතර පැකේජ සඳහා 3.2 යටතේ ක්‍රියා නොකරයි. මෙමඟින් ගැටළුව විසඳීම වෙනුවට තාක්‍ෂණය ඒකාබද්ධ කිරීම, පරීක්ෂා කිරීම, නැවත ක්‍රියාත්මක කිරීම වැනි වැඩ වැඩි ප්‍රමාණයක් නිර්මාණය කරයි == අඩු පරිණත තාක්‍ෂණය.
ජොනතන් ක්ලයින් අයිඊඊඊ

2
ඉන්පසු පයිතන් 2.x භාවිතා කරන්න. ඔබ දන්නවා ... හැමෝම භාවිතා කරන අනුවාදය. නැතහොත් පැකේජ ප්‍රලේඛනය තත්පර 2 ක් කියවා එය කුමන අනුවාදයන්ට අනුකූලදැයි සොයා බලන්න.
jsternberg

2
"පයිතන් 3.0 නිකුත් කර ඇත්තේ යම් කාලයක් තිස්සේ එහි අනුවාදය නොවේ. පයිතන් 3.0 සහ 2.x එකවර සංවර්ධනය වෙමින් පවතී. අනාගතයේදී අප සැමට භාවිතා කළ හැකි වනු ඇතැයි මම බලාපොරොත්තු වෙමි. python 3.0, නමුත් දැනට 2.x භාවිතා කිරීම හොඳ විසඳුමකි "-> එය අක්ෂර 500 ක ක්‍රමයක්: එය තවමත් පරිණත නැත.
ජොනතන් ක්ලයින් අයිඊඊඊ

4

පයිතන්ගේ විෂය පථය දරුණු ලෙස කැඩී ඇති අතර එමඟින් පයිතන් හි වස්තු-නැඹුරු වැඩසටහන් ඉතා අමුතු කරයි.


8
ඔබට උදාහරණයක් දිය හැකිද? (මට විශ්වාසයි ඔබ නිවැරදියි, නමුත් මම උදාහරණයක් කැමතියි)
වින්ස්ටන් එවර්ට්

24
මම Python නමුත් මම පරම වැනි හෙළා දැමීමට ඇති self.නිදසුනක් දේපල හා ක්රමය සෑම යොමු ඉදිරිපිට උද්ඝෝෂණයක් සංවිධානය කර තිබුණි. රුබී හි එය කිරීමට පහසු වන පරිදි ඩීඑස්එල් නිර්මාණය කිරීම සඳහා පයිතන් භාවිතා කිරීම අපහසු වේ.
ඇඩම් ක්‍රොස්ලන්ඩ්

35
මට ස්වයං අමුතු බවක් නොපෙනේ, මම පැහැදිලිකමට කැමතියි.
වින්ස්ටන් එවර්ට්

9
පැහැදිලි ස්වයං පිළිබඳ විශාල ගනුදෙනුව කුමක්දැයි මම නොදනිමි. සී ++, ජාවා සහ ඩී වලදී, මිනිසුන් බොහෝ විට සාමාජික විචල්‍යයන් කෙසේ හෝ සම්මුතියෙන් පැහැදිලි කරයි, නිදසුනක් ලෙස ඒවා යටි ඉරි සහිත උපසර්ගයක් මඟින්.
dsimcha

7
ඔබ ඔවුන්ගේ ප්‍රකාශයට වඩා වෙනස් ක්‍රමවේදයන් භාවිතා කරයි: def foo (self) නමුත් self.foo (). මෙම පැහැදිලි අර්ථකථනයේ මිශ්‍රණය මට පෙනේ, නමුත් තිරය පිටුපස ඇති දේවල් එතරම් ලස්සන නැත.
ලෙනී ප්‍රෝග්‍රැමර්ස්

4

පයිතන් පිළිබඳ මගේ ග්‍රහණය:

  • බෝල්ට්-ඕ ඕපී (මේ පිළිබඳ විස්තර කිරීම සඳහා @ මිපාඩිගේ පිළිතුර බලන්න)
  • ලැම්බඩාස් බිඳුණු ක්‍රියාත්මක කිරීම
  • විෂය පථ ගැටළු
  • සම්මත පුස්තකාලයේ අඛණ්ඩ එකතු කිරීම් නොමැත
  • කාවැද්දූ ඩීඑස්එල් සඳහා දුර්වල පහසුකම්

පහත වැටීම ඇයි?
missingfaktor

මම පහත් තැනැත්තා නොවේ, නමුත් OO ක්‍රියාත්මක වන්නේ යැයි ඔබ සිතන්නේ මන්දැයි ඔබට පැහැදිලි කළ හැකිද? පයිතන්ට සෑම විටම OO ඇත, එය භාෂාවේ මූලික අංගයකි.
ඩෙනීත්

@ මිපාඩිගේ පිළිතුර බලන්න.
missingfaktor


4

පයිතන් හි ප්‍රවේශ විකරණකාරක බලාත්මක කළ නොහැක - හොඳින් ව්‍යුහගත, මොඩියුලරීකරණය කළ කේත ලිවීම දුෂ්කර කරයි.

මම හිතන්නේ එය @ මේසන්ගේ බිඳුණු විෂය පථයේ කොටසක් - මෙම භාෂාව සම්බන්ධයෙන් පොදුවේ විශාල ගැටළුවක්. කියවිය යුතු යැයි සිතන කේතය සඳහා, විෂය පථයට තිබිය හැකි හා තිබිය යුතු දේ සහ ඕනෑම වේලාවක වටිනාකමක් කුමක් දැයි ගණනය කිරීම තරමක් අපහසු බව පෙනේ - මෙම අඩුපාඩු නිසා මම දැනට පයිතන් භාෂාවෙන් ඉදිරියට යාමට සිතමි. .

“අපි සියල්ලෝම වැඩිහිටියන්ට එකඟ වෙමු” යන්නෙන් අදහස් කරන්නේ අප වැරදි නොකරන බවත් ශක්තිමත් ව්‍යුහයක් තුළ වඩා හොඳින් ක්‍රියා නොකරන බවත් නොවේ, විශේෂයෙන් සංකීර්ණ ව්‍යාපෘතිවල වැඩ කරන විට - ඉන්ඩෙන්ටේෂන් සහ අර්ථ විරහිත අවධාරනයන් ප්‍රමාණවත් නොවන බව පෙනේ .


එබැවින් ප්‍රවේශ පාලක නොමැතිකම නරකයි ... නමුත් ඕනෑම දේශීය නොවන නාම අවකාශයකට විචල්‍ය ලිවීම් පැහැදිලිව පරික්ෂා කිරීමද නරකද?
ncoghlan

concoghlan: 1 - ඔබ ඔබේ ව්‍යාපෘතිය වින්‍යාස කරන ආකාරය මත පදනම්ව බොහෝ නවීන භාෂාවලින් එම ලක්ෂණය සම්මත වේ. 2 -එය ක්‍රමලේඛකයාගේ පාලනය යටතේ පවතී. 3 - ඒ ගැන එතරම් හොඳ කුමක්දැයි විශ්වාස නැත - බොහෝ සම්පාදනය කරන ලද භාෂා / IDE හි ව්‍යාපෘති සැකසුම් කිහිපයක් සමඟ ඔබට පහසුවෙන් ඔබේ විෂය පථය පාලනය කළ හැකිය. 'අපි සියල්ලෝම වැඩිහිටියන්ට එකඟ වෙමු' නම්, අපට අපගේම තීරණ ගැනීමට සහ අපගේ විශේෂිත සුවපහසුව මට්ටමට අනුව විෂය පථය සකස් කිරීමට අපට හැකි විය යුතුය.
දෛශික

2
කාරණය නම්, “බලහත්කාරයෙන් ප්‍රවේශවීමේ පාලනයන්” ඉල්ලා සිටින පුද්ගලයින් අපෙන් ඉල්ලා සිටින්නේ පයිතන් මෙතරම් විශාල මැලියම් භාෂාවක් බවට පත් කරන එක් කරුණක් ඉවත් කර ගන්නා ලෙසයි: සංවර්ධකයින්ට ඔවුන්ගේ කේතය පසුව භාවිතා කරන ආකාරය පාලනය කිරීම හිතාමතාම දුෂ්කර ය . බලාත්මක ප්‍රවේශ ප්‍රවේශයන් වටා වැඩ කිරීම සඳහා සී ++ සහ ජාවා රටා වල බොයිලේරු කොපමණ ප්‍රමාණයක් තිබේද? එම හේතුන් මත පයිතන් භාවිතා නොකිරීමට ජනතාව තෝරා ගැනීම මට නිසැකවම තේරුම් ගත හැකිය, නමුත් ස්ථිතික බලාත්මක කිරීම කිසි විටෙකත් දැඩි පරීක්ෂණ සඳහා ආදේශකයක් නොවනු ඇත.
ncoghlan

1
concoghlan - මට නම් පයිතන් පිළිබඳ විශිෂ්ට දේ වන්නේ වාක්‍ය ඛණ්ඩයේ අලංකාරය සහ සාරාංශය - ප්‍රකාශන හැකියාවයි. මා පැවසූ පරිදි, කේතකරණ ව්‍යුහය හා සංවිධානයට වඩා ක්‍රමලේඛකයින් විසින් නොකළ යුතු දේ අවුල් කිරීම සමඟ විෂය පථයට අඩු සම්බන්ධයක් ඇත - එබැවින් 'වැඩිහිටියන්ට එකඟ වීම' යන සංකල්පය වැදගත් වේ. මම වැඩ කරන්නේ සංකීර්ණ ව්‍යාපෘතිවල මිස සරල උපයෝගිතා සහ ස්ක්‍රිප්ට් නොවේ - කේතය පරිස්සමින් මොඩියුලරීකරණය කර ව්‍යුහගත කළ යුතුය - ප්‍රවේශ විකරණකාරක එය සහතික කිරීමේ වැදගත්ම ක්‍රමයකි.
දෛශික

1
කේත සමාලෝචනය, පුහුණුව සහ සම්බන්ධක විශ්ලේෂණය අනෙක් ඒවා වේ. මට නම්, බලාත්මක ප්‍රවේශ ප්‍රවේශයන් ස්ථිතික ටයිප් කිරීම මෙන් ම බාල්දියට වැටේ: ඒවා නිවැරදි බව පිළිබඳ අමතර විශ්වාසයක් සැපයීමට උපකාරී වේ (නමුත් පුළුල් පරීක්ෂණ අවශ්‍යතාවයෙන් වැළකී සිටීමට එය ප්‍රමාණවත් නොවේ), නමුත් සංවර්ධන produc ලදායිතාවයේ ඉහළ පිරිවැයකින්. (ප්‍රායෝගික මට්ටමින්, පංති වලින් ලබාගත් සාමාන්‍ය කාර්යයන් වන ක්‍රම පමණක් වන පයිතන්ගේ වස්තු ආකෘතියට පන්ති ආරෝපණ ප්‍රවේශ පාලනයන් නොගැලපේ. පන්ති සඳහා “ඇතුළත / පිටත” සීමාව සැබවින්ම නොපවතී, එබැවින් එය විය නොහැක බලාත්මක)
ncoghlan

3
  1. කාර්ය සාධනය හොඳ නැත, නමුත් පයිපී සමඟ වැඩි දියුණු වේ,
  2. කේතය වේගවත් කිරීම සඳහා නූල් භාවිතා කිරීම GIL වළක්වයි, (මෙය සාමාන්‍යයෙන් නොමේරූ ප්‍රශස්තිකරණයක් වුවද),
  3. එය යෙදුම් ක්‍රමලේඛනය සඳහා පමණක් ප්‍රයෝජනවත් වේ,

නමුත් එය විශාල මුදවා ගැනීමේ ලක්ෂණ ඇත:

  1. එය RAD සඳහා පරිපූර්ණයි,
  2. සී සමඟ අන්තර් සම්බන්ධ කිරීම පහසුය (සහ සී සඳහා පයිතන් පරිවර්තකයක් කාවැද්දීම සඳහා),
  3. එය ඉතා කියවිය හැකි ය,
  4. ඉගෙනීම පහසුය,
  5. එය හොඳින් ලේඛනගත කර ඇත,
  6. බැටරි සැබවින්ම ඇතුළත් කර ඇත, එහි සම්මත පුස්තකාලය අති විශාල වන අතර ප්‍රායෝගිකව සෑම දෙයක් සඳහාම මොඩියුල අඩංගු වේ.
  7. එයට නිරෝගී ප්‍රජාවක් ඇත.

වාසි ගැන සඳහන් කිරීමට පෙලඹුණේ කුමක් ද? ගැටළු සඳහා ප්රශ්නය. කෙසේ වෙතත්, ඔබ අදහස් කරන්නේ එය යෙදුම් ක්‍රමලේඛනය සඳහා පමණක් ප්‍රයෝජනවත්ද? වෙනත් වැඩසටහන් මොනවාද? විශේෂයෙන් හොඳ නැති දේ කුමක්ද?
tshepang

5
මම වාසි ලැයිස්තුගත කළේ ඒවා අවාසි ඉක්මවා යන බැවිනි. පයිතන් හි ලිනක්ස් කර්නල් මොඩියුලයක් ක්‍රියාත්මක කිරීමට ඔබ කවදා හෝ උත්සාහ කර තිබේද?
dan_waterworth

3

මම පයිතන්ට අනුග්‍රහය දක්වන අතර මගේ මතකයට එන පළමු අවාසිය නම් ප්‍රකාශයක් අදහස් දැක්වීමේදී if myTest():ඔබ සී හෝ ජාවා සමඟ නොකළ යුතු සමස්ත ක්‍රියාත්මක කළ කොටසෙහි ඉන්ඩෙන්ටේෂන් වෙනස් කළ යුතුය. ඇත්ත වශයෙන්ම පයිතන්හි if-clause එකක් අදහස් දැක්වීම වෙනුවට මම මේ ආකාරයෙන් අදහස් දැක්වීමට පටන් ගතිමි: `ඇත්ත නම්: #myTest () එබැවින් මට පහත කේත වාරණය වෙනස් කිරීමට අවශ්‍ය නොවනු ඇත. ජාවා සහ සී ඉන්ඩෙන්ටේෂන් මත රඳා නොසිටින බැවින් එය සී සහ ජාවා සමඟ ප්‍රකාශ කිරීම පහසු කරයි.


1
යම් කේතයක ඉන්ඩෙන්ටේෂන් වෙනස් නොකර බ්ලොක් මට්ටම වෙනස් කිරීම සඳහා ඔබ සී හෝ ජාවා කේතය බරපතල ලෙස සංස්කරණය කරනවාද?
බෙන්

4
En බෙන් තාවකාලිකව, ඔව් ...
විකල්ප


2
මම වෙනස් කිරීමේ උපක්රමය භාවිතා if something()කිරීමට if False and something(). තවත් උපක්‍රමයක් නම් බහු රේඛා නූලක් භාවිතා කර “අදහස් දැක්වීම” ය.
මාටින් විල්කන්ස්

1
Cour පා Mar මාලාවේ මාටින්! වැරදියි නම් ...
ක්‍රිස්ටෝපර් මහන්

3

බහුවිධ යැවීම ස්ථාපිත තනි යැවීමේ වර්ගයේ පද්ධතිය සමඟ හොඳින් සම්බන්ධ නොවන අතර එය එතරම් ක්‍රියාකාරී නොවේ.

සමාන්තර ගොනු පද්ධතිවල ගතික පැටවීම විශාල ගැටළුවක් වන අතර POSIX වැනි අර්ථ නිරූපණයන් පාරදත්ත-තීව්‍ර මෙහෙයුම් සඳහා විනාශකාරී මන්දගාමී වීමට හේතු වේ. පයිතන් (අංක, එම්පී 4 පීපී, පෙට්ස් 4 පීපී සහ වෙනත් විස්තාරණ මොඩියුල සහිතව) 65k කෝර් මත පටවා ඇති මූලික පැය මිලියන හතරක් පුළුස්සා දැමූ සගයන් මා සතුව ඇත. . dlopenසාමූහික ගොනු පද්ධති ප්‍රවේශය සිදු කිරීම සඳහා libc-rtld ඇලවීම ඇතුළුව පරිමාණයෙන් සාධාරණ පැටවීමේ වේලාවන් .


ඇවැත්නි, ඉතා තාක්‍ෂණික බවක් පෙනේ, ඔබට මෙම විෂය පිළිබඳ යොමු තොරතුරු, උදාහරණ, බ්ලොග් සටහන් හෝ ලිපි තිබේද? නුදුරු අනාගතයේ දී මා එවැනි අවස්ථාවන්ට නිරාවරණය වනු ඇත්දැයි මම කල්පනා කරමි.
වින්සන්ට්

ආරොන් SciPy 2012 හි කතාවක් දුන්නේය . මෙම dlopenදේවල් ඇත්තේ අපේ collfs පුස්තකාලය. එම ගබඩාවේ ආශර් ලැන්ග්ටන්ගේ මාර්ග හැඹිලියෙන් ආනුභාව ලත් අමතර සිම්පිම්පෝට් උපක්‍රම ද අඩංගු වේ. අපි වඩා හොඳ බෙදාහැරීමක් සහ කඩදාසි මත වැඩ කරමින් සිටිමු.
ජෙඩ්

3
  • බහුලව භාවිතා වන ප්‍රධාන ධාරාවේ තෙවන පාර්ශවීය පුස්තකාල සහ මෘදුකාංග සමූහයක් තරමක් පයිතොනික් නොවේ. උදාහරණ කිහිපයක්: සබන් ලිබ්, ඕපනර්ප්, රිපෝට්ලැබ්. විවේචනය කළ නොහැක්කකි, එය එහි තිබේ, එය බහුලව භාවිතා වේ, නමුත් එය පයිතන් සංස්කෘතිය අවුල් සහගත කරයි (එය "එකක් තිබිය යුතුය - සහ ඊට වඩා එක් ක්‍රමයක් පමණක් තිබිය යුතුය" යන ආදර්ශ පා o ය රිදවයි). දන්නා පයිතොනික් සාර්ථකත්වයන් (ජැන්ගෝ හෝ ට්‍රැක් වැනි) ව්‍යතිරේකය ලෙස පෙනේ.
  • නිදසුනක් ලෙස, පංතිය, මෙටාක්ලාස් හි වියුක්ත කිරීමේ විභවය අසීමිත ගැඹුර සංකල්පමය වශයෙන් සුන්දර හා අද්විතීය වේ. නමුත් එය ප්‍රගුණ කිරීම සඳහා ඔබ පරිවර්තකයා ගැඹුරින් දැන සිටිය යුතුය (පයිතන් කේතය අර්ථ නිරූපණය කරන්නේ කුමන අනුපිළිවෙලටද). එය පුළුල් ලෙස නොදන්නා සහ භාවිතා නොකරන (හෝ නිවැරදිව භාවිතා කර ඇත), නමුත් සංකල්පමය වශයෙන් වඩා කැටි ගැසුණු (IMHO) C # generics වැනි සමාන මැජික්, සමානුපාතිකව වඩාත් පුළුල් ලෙස දන්නා සහ භාවිතා වන බව පෙනේ.
  • මතකය සහ නූල් ආකෘතිය පිළිබඳ මනා අවබෝධයක් ලබා ගැනීම සඳහා, ඔබ පයිතන් සමඟ තරමක් අත්දැකීම් ලබා ගත යුතුය, මන්ද පුළුල් පිරිවිතරයක් නොමැති බැවිනි. ඔබ පරිවර්තකයාගේ මූලාශ්‍ර හෝ පළපුරුදු විචක්ෂණ කියවා ඒවා නිවැරදි කරන්නේ කෙසේදැයි සොයාගත් නිසා විය හැකි දේ ඔබ දනී. නිදසුනක් ලෙස, ඇත්තේ ශක්තිමත් හෝ දුර්වල යොමු කිරීම් පමණි, ජාවාහි මෘදු හා ෆැන්ටම් යොමු නොවේ. ජාවාහි කසළ එකතු කිරීම සඳහා නූල් ඇති අතර පයිතන්හි කසළ එකතු වන්නේ කවදාද යන්න පිළිබඳ විධිමත් පිළිතුරක් නොමැත; පයිතන් කේතයක් ක්‍රියාත්මක නොකළහොත් කසළ එකතු වීම සිදු නොවන බව ඔබට නිරීක්ෂණය කළ හැකි අතර මතකය වෙන් කිරීමට උත්සාහ කරන විට සමහර විට එය සිදු වන බව නිගමනය කරන්න. අගුළු දැමූ සම්පතක් නිදහස් නොකළේ මන්දැයි ඔබ නොදන්නා විට උපක්‍රමශීලී විය හැකිය (ඒ පිළිබඳ මගේ අත්දැකීම ෆ්‍රීස්විච් හි mod_python විය).

කෙසේ වෙතත්, දැන් අවුරුදු 4 ක් තිස්සේ පයිතන් මගේ ප්‍රධාන භාෂාවයි. රසිකයින්, ප්‍රභූන් හෝ මොනොනියාක් වීම පයිතන් සංස්කෘතියේ කොටසක් නොවේ.


+1. මතකය සහ නූල් ආකෘතිය සඳහා පිරිවිතර නිවැරදිව ක්‍රියාත්මක වේ. නමුත් FWIW, ජාවා කසළ එකතු කරන්නා නූල් එකක සිටීම (සහ GC ගැන අනෙක් සියල්ලම) ජාවා භාෂාවේ අංගයක් හෝ VM පිරිවිතරයන්ට අනුව නොව, එය විශේෂිත JVM ක්‍රියාත්මක කිරීමකි. කෙසේ වෙතත්, ප්‍රධාන සන් / ඔරකල් ජේවීඑම්, ජේවීඑම් සුසර කිරීම පිළිබඳ සම්පූර්ණ පොත් ප්‍රකාශයට පත් කර ඇති තාක් දුරට, ජීආර්සී හැසිරීම සහ වින්‍යාසය පිළිබඳව පුළුල් ලෙස ලේඛනගත කර ඇත. න්‍යාය අනුව යමෙකුට භාෂා පිරිවිතර නොසලකා CPython එකම ආකාරයකින් ලේඛනගත කළ හැකිය.
ඇන්ඩ rew ජැන්කේ

2
  • අමුතු OOP:
    • len(s)හරහා __len__(self)සහ වෙනත් "විශේෂ ක්‍රම"
    • වෙනත් විශේෂ ක්‍රම වලින් ලබා ගත හැකි අතිරේක විශේෂ ක්‍රම ( __add__සහ __iadd__සඳහා +සහ සඳහා +=)
    • self පළමු ක්‍රම පරාමිතිය ලෙස
    • ඔබට මූලික පන්තියේ ඉදිකිරීම්කරු ඇමතීමට අමතක කළ හැකිය
    • ප්‍රවේශ විකරණකාරක නොමැත (පුද්ගලික, ආරක්ෂිත ...)
  • නියත අර්ථ දැක්වීම් නොමැත
  • අභිරුචි වර්ග සඳහා වෙනස් කළ නොහැකි ය
  • ගිල්
  • දුර්වල ක්‍රියාකාරිත්වය පයිතන් සහ සී මිශ්‍රණයකට තුඩු දෙන අතර ගොඩනැගීම් සමඟ කරදර (සී ලිබ්, වේදිකා පරායත්තතා සොයමින් ...)
  • නරක ලියකියවිලි, විශේෂයෙන් තෙවන පාර්ශවීය ලිබ් වල
  • පයිතන් 2.x සහ 3.x අතර නොගැලපීම
  • දුර්වල කේත විශ්ලේෂණ මෙවලම් (ජාවා හෝ සී # වැනි සංඛ්‍යාත්මකව ටයිප් කළ භාෂාවන් සඳහා ලබා දී ඇති දේ හා සසඳන විට)

5
පුද්ගලිකව මම සිතන්නේ 2.x සහ 3.x අතර නොගැලපීම පයිතන්ගේ ලොකුම වාසියකි. ඇත්ත වශයෙන්ම, එය අවාසියකි. නමුත් සංවර්ධකයින් පසුපසට ගැළපීම සඳහා ඇති ධෛර්යය යන්නෙන් අදහස් කරන්නේ ඔවුන්ට නිමක් නැතිව කබොල රැගෙන යා යුතු නැති බවයි. තවත් භාෂාවන්ට එවැනි වෙනස් කිරීමක් අවශ්‍ය වේ.
කොන්රාඩ් රුඩොල්ෆ්

0

“නිශ්චලතාව” යනු එය ප්‍රබල කරුණක් නොවේ. AFAIK අංක, ටුපල් සහ නූල් වෙනස් කළ නොහැක, අනෙක් සියල්ල (එනම් වස්තු) විකෘති වේ. සෑම දෙයක්ම වෙනස් කළ නොහැකි එර්ලන්ග් හෝ හැස්කල් වැනි ක්‍රියාකාරී භාෂාවන් සමඟ සසඳන්න (පෙරනිමියෙන්, අවම වශයෙන්).

කෙසේ වෙතත්, ප්‍රතිශක්තීකරණ හැකියාව සැබවින්ම සමගාමී මුදල් වලින් බබළයි *, එය ද පයිතන්ගේ ප්‍රබල ලක්ෂ්‍යය නොවේ, එබැවින් අවම වශයෙන් එය ප්‍රති .ලයකි.

. සමගියකින් තොරව පවා විශිෂ්ටයි.))


0

පැහැදිලිවම සමාන්තර ඉදිකිරීම් කිරීමට මම කැමතියි. බොහෝ විට, මම ලැයිස්තු අවබෝධයක් ලියන විට වැනි

[ f(x) for x in lots_of_sx ]

මූලද්‍රව්‍ය සැකසෙන අනුපිළිවෙල මට ප්‍රශ්නයක් නොවේ. සමහර විට, ඔවුන් ආපසු එවන්නේ කුමන අනුපිළිවෙලටදැයි මට ප්‍රශ්නයක් නැත.

මගේ f පිරිසිදු පයිතන් වන විට CPython හට එය හොඳින් කළ නොහැකි වුවද, වෙනත් ක්‍රියාවට නැංවීම සඳහා මෙවැනි හැසිරීම අර්ථ දැක්විය හැකිය.


// නූල් පොකුරක් // සියලු නූල් වලට පෝලිම් පෝලිම් දමන්න que.extend ([x සඳහා x සඳහා lot_of_sx]) que.night () # සියලුම lot_of_sx නූල් මඟින් සැකසීමට බලා සිටින්න.
සෝරන් පැව්ලොවික්

0

බොහෝ විට දාර්ශනික හේතූන් මත පයිතන්ට වලිග ඇමතුම් ප්‍රශස්තිකරණය නොමැත . මෙයින් අදහස් කරන්නේ විශාල ව්‍යුහයන් මත වලිගය පුනරාවර්තනය කිරීම සඳහා O (n) මතකය වැය විය හැකි බවයි (අනවශ්‍ය තොගයක් තබා ඇති නිසා) සහ O (1) මතකය ලබා ගැනීම සඳහා පුනරාවර්තනය ලූපයක් ලෙස නැවත ලිවීමට ඔබට අවශ්‍ය වනු ඇත.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.