මෙම මොඩියුලය ආනයනය නාස්ති කරන්නේ නැහැ කිසිම දෙයක් , මොඩියුලය සැමවිටම සම්පුර්ණයෙන්ම ආනයනය කරනු ලැබේ ( 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)