16. ਪਰਿਸ਼ਿਸ਼ਟ

16.1. ਇੰਟਰਐਕਟਿਵ ਮੋਡ

ਇੰਟਰਐਕਟਿਵ REPL ਦੇ ਦੋ ਵਰਜਨ ਹਨ। ਕਲਾਸਿਕ ਬੇਸਿਕ ਇੰਟਰਪ੍ਰਿਟਰ ਉਹਨਾਂ ਸਾਰੇ ਪਲੇਟਫਾਰਮਾਂ 'ਤੇ ਸਮਰਥਿਤ ਹੈ ਜਿੱਥੇ ਘੱਟੋ-ਘੱਟ ਲਾਈਨ ਕੰਟਰੋਲ ਸਮਰੱਥਾਵਾਂ ਮੌਜੂਦ ਹਨ।

Python 3.13 ਤੋਂ ਡਿਫਾਲਟ ਤੌਰ 'ਤੇ ਇੱਕ ਨਵਾਂ interactive shell ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਰੰਗ, multiline editing, history browsing ਅਤੇ paste mode ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। ਰੰਗ ਬੰਦ ਕਰਨ ਲਈ Controlling color ਵੇਖੋ। Function keys ਕੁਝ ਵਾਧੂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦਿੰਦੀਆਂ ਹਨ। F1 interactive help browser pydoc ਖੋਲ੍ਹਦਾ ਹੈ। F2 output ਅਤੇ >>> ਅਤੇ ... prompts ਤੋਂ ਬਿਨਾਂ command-line history ਵੇਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। F3 "paste mode" ਵਿੱਚ ਦਾਖਲ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਕੋਡ ਦੇ ਵੱਡੇ ਬਲੌਕ ਪੇਸਟ ਕਰਨਾ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ। ਸਧਾਰਣ prompt 'ਤੇ ਵਾਪਸ ਆਉਣ ਲਈ F3 ਦੁਬਾਰਾ ਦਬਾਓ।

ਨਵੇਂ interactive shell ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ exit ਜਾਂ quit ਲਿਖ ਕੇ shell ਤੋਂ ਬਾਹਰ ਨਿਕਲਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਨ੍ਹਾਂ ਕਮਾਂਡਾਂ ਦੇ ਬਾਅਦ parentheses ਜੋੜਨਾ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ।

ਜੇ ਨਵਾਂ interactive shell ਨਹੀਂ ਚਾਹੀਦਾ, ਤਾਂ ਇਸਨੂੰ PYTHON_BASIC_REPL environment variable ਰਾਹੀਂ ਅਯੋਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।

16.1.1. ਗਲਤੀ ਸੰਭਾਲ

ਜਦੋਂ ਕੋਈ ਗਲਤੀ ਹੁੰਦੀ ਹੈ, interpreter ਇੱਕ error message ਅਤੇ stack trace ਛਾਪਦਾ ਹੈ। Interactive mode ਵਿੱਚ ਇਹ ਮੁੜ primary prompt 'ਤੇ ਆ ਜਾਂਦਾ ਹੈ। ਜੇ input ਕਿਸੇ ਫਾਈਲ ਤੋਂ ਆਇਆ ਹੋਵੇ ਤਾਂ stack trace ਛਾਪਣ ਤੋਂ ਬਾਅਦ nonzero exit status ਨਾਲ ਬੰਦ ਹੋ ਜਾਂਦਾ ਹੈ। (try statement ਵਿੱਚ except ਦੁਆਰਾ ਸੰਭਾਲੀਆਂ exceptions ਇਸ ਸੰਦਰਭ ਵਿੱਚ ਗਲਤੀਆਂ ਨਹੀਂ ਮੰਨੀਆਂ ਜਾਂਦੀਆਂ।) ਕੁਝ ਗਲਤੀਆਂ ਗੰਭੀਰ ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ nonzero exit status ਨਾਲ ਪ੍ਰੋਗਰਾਮ ਬੰਦ ਕਰ ਦਿੰਦੀਆਂ ਹਨ। ਇਹ ਅੰਦਰੂਨੀ ਅਸੰਗਤਤਾਵਾਂ ਅਤੇ memory ਖਤਮ ਹੋਣ ਦੇ ਕੁਝ ਮਾਮਲਿਆਂ 'ਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ। ਸਾਰੇ error messages standard error stream ਵਿੱਚ ਲਿਖੇ ਜਾਂਦੇ ਹਨ, ਜਦਕਿ ਆਮ output standard output ਵਿੱਚ ਲਿਖੀ ਜਾਂਦੀ ਹੈ।

Primary ਜਾਂ secondary prompt 'ਤੇ interrupt character (ਆਮ ਤੌਰ 'ਤੇ Control-C ਜਾਂ Delete) ਦਬਾਉਣ ਨਾਲ input ਰੱਦ ਹੋ ਜਾਂਦੀ ਹੈ ਅਤੇ ਮੁੜ primary prompt 'ਤੇ ਵਾਪਸੀ ਹੋ ਜਾਂਦੀ ਹੈ। [1] ਜੇ ਕਮਾਂਡ ਚੱਲ ਰਹੀ ਹੋਵੇ ਅਤੇ interrupt ਦਿੱਤਾ ਜਾਵੇ, ਤਾਂ KeyboardInterrupt exception ਉਤਪੰਨ ਹੁੰਦੀ ਹੈ, ਜਿਸਨੂੰ try statement ਦੁਆਰਾ ਸੰਭਾਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।

16.1.2. ਚਲਾਉਣਯੋਗ Python ਸਕ੍ਰਿਪਟਾਂ

BSD-ਜਿਹੇ Unix ਸਿਸਟਮਾਂ 'ਤੇ Python ਸਕ੍ਰਿਪਟਾਂ ਨੂੰ shell scripts ਵਾਂਗ ਸਿੱਧਾ ਚਲਾਉਣਯੋਗ ਬਣਾਇਆ ਜਾ ਸਕਦਾ ਹੈ, ਇਸ ਲਈ ਹੇਠਾਂ ਦਿੱਤੀ ਲਾਈਨ ਜੋੜੋ:

#!/usr/bin/env python3

(ਇਹ ਮੰਨਦੇ ਹੋਏ ਕਿ interpreter ਵਰਤੋਂਕਾਰ ਦੇ PATH ਵਿੱਚ ਹੈ) ਇਸਨੂੰ ਸਕ੍ਰਿਪਟ ਦੀ ਸ਼ੁਰੂਆਤ ਵਿੱਚ ਰੱਖੋ ਅਤੇ ਫਾਈਲ ਨੂੰ executable mode ਦਿਓ। #! ਫਾਈਲ ਦੇ ਪਹਿਲੇ ਦੋ ਅੱਖਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ। ਕੁਝ ਪਲੇਟਫਾਰਮਾਂ 'ਤੇ ਇਹ ਪਹਿਲੀ ਲਾਈਨ Unix-style line ending ('\n') ਨਾਲ ਖਤਮ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, Windows ('\r\n') line ending ਨਾਲ ਨਹੀਂ। ਧਿਆਨ ਦਿਓ ਕਿ '#' ਚਿੰਨ੍ਹ Python ਵਿੱਚ comment ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।

ਸਕ੍ਰਿਪਟ ਨੂੰ executable mode ਜਾਂ ਅਨੁਮਤੀ chmod ਕਮਾਂਡ ਰਾਹੀਂ ਦਿੱਤੀ ਜਾ ਸਕਦੀ ਹੈ।

$ chmod +x myscript.py

Windows ਸਿਸਟਮਾਂ ਵਿੱਚ "executable mode" ਦੀ ਕੋਈ ਧਾਰਣਾ ਨਹੀਂ ਹੁੰਦੀ। Python installer ਆਪਣੇ ਆਪ .py ਫਾਈਲਾਂ ਨੂੰ python.exe ਨਾਲ ਜੋੜ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਜੋ Python ਫਾਈਲ 'ਤੇ ਡਬਲ-ਕਲਿੱਕ ਕਰਨ ਨਾਲ ਉਹ ਸਕ੍ਰਿਪਟ ਵਜੋਂ ਚੱਲ ਪਏ। Extension .pyw ਵੀ ਹੋ ਸਕਦੀ ਹੈ; ਉਸ ਸਥਿਤੀ ਵਿੱਚ ਆਮ ਤੌਰ 'ਤੇ ਦਿਖਾਈ ਦੇਣ ਵਾਲੀ console window ਨਹੀਂ ਦਿਖਾਈ ਜਾਂਦੀ।

16.1.3. ਇੰਟਰਐਕਟਿਵ ਸਟਾਰਟਅੱਪ ਫਾਈਲ

ਜਦੋਂ ਤੁਸੀਂ Python ਨੂੰ ਇੰਟਰਐਕਟਿਵ ਤਰੀਕੇ ਨਾਲ ਵਰਤਦੇ ਹੋ, ਤਾਂ ਅਕਸਰ ਇਹ ਲਾਭਦਾਇਕ ਹੁੰਦਾ ਹੈ ਕਿ interpreter ਸ਼ੁਰੂ ਹੋਣ ਹਰ ਵਾਰ ਕੁਝ ਮਿਆਰੀ ਕਮਾਂਡਾਂ ਆਪਣੇ ਆਪ ਚੱਲਣ। ਇਸ ਲਈ ਤੁਸੀਂ PYTHONSTARTUP environment variable ਨੂੰ ਉਸ ਫਾਈਲ ਦੇ ਨਾਮ 'ਤੇ ਸੈੱਟ ਕਰ ਸਕਦੇ ਹੋ ਜਿਸ ਵਿੱਚ ਤੁਹਾਡੀਆਂ startup commands ਹੋਣ। ਇਹ Unix shells ਦੀ .profile ਵਿਸ਼ੇਸ਼ਤਾ ਵਰਗਾ ਹੈ।

ਇਹ ਫਾਈਲ ਸਿਰਫ ਇੰਟਰਐਕਟਿਵ ਸੈਸ਼ਨਾਂ ਵਿੱਚ ਹੀ ਪੜ੍ਹੀ ਜਾਂਦੀ ਹੈ, ਨਾ ਕਿ ਜਦੋਂ ਪਾਈਥਨ ਸਕ੍ਰਿਪਟ ਤੋਂ ਕਮਾਂਡਾਂ ਪੜ੍ਹਦਾ ਹੈ, ਅਤੇ ਨਾ ਹੀ ਜਦੋਂ /dev/tty ਨੂੰ ਕਮਾਂਡਾਂ ਦਾ ਸਪਸ਼ਟ ਸਰੋਤ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ (ਜੋ ਕਿ ਹੋਰ ਤਰ੍ਹਾਂ ਇੰਟਰਐਕਟਿਵ ਸੈਸ਼ਨ ਵਾਂਗ ਹੀ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ). ਇਹ ਉਸੇ ਨੇਮਸਪੇਸ ਵਿੱਚ ਚਲਾਈ ਜਾਂਦੀ ਹੈ ਜਿੱਥੇ ਇੰਟਰਐਕਟਿਵ ਕਮਾਂਡਾਂ ਚਲਾਈਆਂ ਜਾਂਦੀਆਂ ਹਨ, ਤਾਂ ਜੋ ਇਹ ਜੋ ਆਬਜੈਕਟ ਪਰਿਭਾਸ਼ਿਤ ਜਾਂ ਇੰਪੋਰਟ ਕਰਦਾ ਹੈ, ਉਹਨਾਂ ਨੂੰ ਇੰਟਰਐਕਟਿਵ ਸੈਸ਼ਨ ਵਿੱਚ ਬਿਨਾਂ ਕਿਸੇ ਯੋਗਤਾ ਦੇ ਵਰਤਿਆ ਜਾ ਸਕੇ। ਤੁਸੀਂ ਇਸ ਫਾਈਲ ਵਿੱਚ sys.ps1 ਅਤੇ sys.ps2 ਪ੍ਰੋਂਪਟਸ ਵੀ ਬਦਲ ਸਕਦੇ ਹੋ।

ਜੇ ਤੁਸੀਂ ਮੌਜੂਦਾ ਡਾਇਰੈਕਟਰੀ ਤੋਂ ਕੋਈ ਵਾਧੂ startup file ਪੜ੍ਹਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ global startup file ਵਿੱਚ if os.path.isfile('.pythonrc.py'): exec(open('.pythonrc.py').read()) ਵਰਗਾ ਕੋਡ ਲਿਖ ਸਕਦੇ ਹੋ। ਜੇ startup file ਨੂੰ ਕਿਸੇ script ਵਿੱਚ ਵਰਤਣਾ ਹੋਵੇ, ਤਾਂ ਇਹ ਕੰਮ script ਵਿੱਚ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਕਰਨਾ ਪਵੇਗਾ:

import os
filename = os.environ.get('PYTHONSTARTUP')
if filename and os.path.isfile(filename):
    with open(filename) as fobj:
        startup_file = fobj.read()
    exec(startup_file)

16.1.4. ਅਨੁਕੂਲਨ ਮੋਡੀਊਲ

Python ਤੁਹਾਨੂੰ ਇਸਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਨ ਲਈ ਦੋ hooks ਦਿੰਦਾ ਹੈ: sitecustomize ਅਤੇ usercustomize। ਇਹ ਕਿਵੇਂ ਕੰਮ ਕਰਦੇ ਹਨ, ਇਹ ਵੇਖਣ ਲਈ ਪਹਿਲਾਂ ਆਪਣੀ user site-packages ਡਾਇਰੈਕਟਰੀ ਦਾ ਸਥਾਨ ਲੱਭੋ। Python ਸ਼ੁਰੂ ਕਰੋ ਅਤੇ ਇਹ ਕੋਡ ਚਲਾਓ:

>>> import site
>>> site.getusersitepackages()
'/home/user/.local/lib/python3.x/site-packages'

ਹੁਣ ਤੁਸੀਂ ਉਸ ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ usercustomize.py ਨਾਮ ਦੀ ਫਾਈਲ ਬਣਾ ਸਕਦੇ ਹੋ ਅਤੇ ਇਸ ਵਿੱਚ ਆਪਣੀ ਪਸੰਦ ਦੀ ਕੋਈ ਵੀ ਸਮੱਗਰੀ ਰੱਖ ਸਕਦੇ ਹੋ। ਇਹ Python ਦੇ ਹਰ ਚਲਾਉਣ 'ਤੇ ਪ੍ਰਭਾਵ ਪਾਏਗੀ, ਜਦ ਤੱਕ Python ਨੂੰ automatic import ਬੰਦ ਕਰਨ ਲਈ -s ਵਿਕਲਪ ਨਾਲ ਸ਼ੁਰੂ ਨਾ ਕੀਤਾ ਗਿਆ ਹੋਵੇ।

sitecustomize ਵੀ ਇਸੇ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ, ਪਰ ਆਮ ਤੌਰ 'ਤੇ ਇਸਨੂੰ ਕੰਪਿਊਟਰ ਦਾ ਪ੍ਰਸ਼ਾਸਕ global site-packages ਡਾਇਰੈਕਟਰੀ ਵਿੱਚ ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ usercustomize ਤੋਂ ਪਹਿਲਾਂ import ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਹੋਰ ਵੇਰਵਿਆਂ ਲਈ site ਮੋਡੀਊਲ ਦੀ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਵੇਖੋ।

ਫੁਟਨੋਟ