මෙම මොඩියුලය ආනයනය නාස්ති කරන්නේ නැහැ කිසිම දෙයක් , මොඩියුලය සැමවිටම සම්පුර්ණයෙන්ම ආනයනය කරනු ලැබේ ( sys.modules
සිතියම් ගත කිරීම සඳහා), එබැවින් ඔබ තෙතමනය භාවිතා කරයි import sys
හෝ from sys import argv
කිසිදු ගැටළුවක් නොකරයි.
ප්රකාශ දෙක අතර ඇති එකම වෙනස නම් බැඳී ඇති නමයි; මොඩියුලයට import sys
නම බන්ධනය කරයි sys
(එසේ sys
-> sys.modules['sys']
), from sys import argv
වෙනත් නමක් බන්ධනය කරන අතර argv
, මොඩියුලයේ ඇතුළත ඇති ගුණාංගයට කෙළින්ම යොමු කරයි (එබැවින් argv
-> sys.modules['sys'].argv
). sys
ඔබ මොඩියුලයෙන් වෙනත් දෙයක් භාවිතා කළත් නැතත්, මොඩියුලයේ ඉතිරි කොටස තවමත් පවතී.
ප්රවේශයන් දෙක අතර කාර්ය සාධන වෙනසක් ද නොමැත. ඔව්, sys.argv
කරුණු දෙකක් සොයා බැලිය යුතුය; එය sys
ඔබගේ ගෝලීය නාම අවකාශයේ සොයා බැලිය යුතුය (මොඩියුලය සොයා ගනී), පසුව ගුණාංගය සොයා බලන්න argv
. ඔව්, from sys import argv
ඔබට දැනටමත් ගුණාංගය පිළිබඳ සෘජු සඳහනක් ඇති බැවින්, භාවිතා කිරීමෙන් ඔබට ගුණාංග බැලීම මඟ හැරිය හැක. නමුත් import
ප්රකාශය තවමත් එම කාර්යය කළ යුතුව ඇත, ආනයනය කිරීමේදී එය එකම ගුණාංගයක් ලෙස පෙනේ, ඔබට භාවිතා කිරීමට අවශ්ය වන්නේ argv
එක් වරක් පමණි . ඔබට argv
ලූපයක් තුළ දහස් වාරයක් භාවිතා කිරීමට සිදුවුවහොත් එය යම් වෙනසක් කළ හැකිය, නමුත් මෙම විශේෂිත අවස්ථාවෙහිදී එය සැබවින්ම සිදු නොවේ.
එක හෝ අනෙක අතර තේරීම ඒ වෙනුවට කේතීකරණ විලාසය මත පදනම් විය යුතුය .
දී විශාල මොඩියුලය, මම භාවිතා කරනවා import sys
; කේත ප්රලේඛනය වැදගත් වන sys.argv
අතර විශාල මොඩියුලයක කොතැනක හෝ භාවිතා කිරීමෙන් ඔබ යොමු කරන දෙය වෙන argv
කවරදාටත් වඩා පැහැදිලි වේ.
ඔබ භාවිතා කරන එකම තැන නම්, argv
යනු විශාල '__main__'
කැඳවීමට වාරණ main()
සියලු මාර්ගයෙන්, ක්රියාව භාවිත from sys import argv
ඔයා ඒ ගැන සතුටු වෙනවා නම්:
if __name__ == '__main__':
from sys import argv
main(argv)
මම තවමත් import sys
එහිම භාවිතා කරමි. සෑම දෙයක්ම එක හා සමානයි (ඒවා හරියටම කාර්ය සාධනය සහ එය ලිවීමට භාවිතා කරන චරිත ගණන අනුව), එය මට ඇසට පහසුය.
ඔබ වෙනත් දෙයක් මුළුමනින්ම ආනයනය කරන්නේ නම් , සමහර විට කාර්ය සාධනය ක්රියාත්මක වේ. නමුත් ඔබ මොඩියුලයක නිශ්චිත නමක් බොහෝ වාරයක් භාවිතා කරන්නේ නම් පමණක්, උදාහරණයක් ලෙස විවේචනාත්මක පුඩුවක් තුළ. නමුත් පසුව දේශීය නමක් සෑදීම (ශ්රිතයක් තුළ) තවමත් වේගවත් වනු ඇත:
import somemodule
def somefunction():
localname = somemodule.somefunctionorother
while test:
# huge, critical loop
foo = localname(bar)