ਬਿਲਟ-ਇਨ ਫੰਕਸ਼ਨ¶
Python ਇੰਟਰਪ੍ਰੀਟਰ ਵਿੱਚ ਕਈ ਫੰਕਸ਼ਨ ਅਤੇ ਟਾਈਪ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਸ਼ਾਮਲ ਹਨ ਜੋ ਹਮੇਸ਼ਾਂ ਉਪਲਬਧ ਰਹਿੰਦੇ ਹਨ। ਇਨ੍ਹਾਂ ਨੂੰ ਇੱਥੇ ਵਰਣਮਾਲਾ ਅਨੁਸਾਰ ਸੂਚੀਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ।
ਬਿਲਟ-ਇਨ ਫੰਕਸ਼ਨ |
|||
|---|---|---|---|
- abs(number, /)¶
ਕਿਸੇ ਸੰਖਿਆ ਦਾ ਪਰਮ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਆਰਗੂਮੈਂਟ ਇੱਕ ਪੂਰਨ ਸੰਖਿਆ, ਫਲੋਟਿੰਗ-ਪੌਇੰਟ ਸੰਖਿਆ ਜਾਂ
__abs__()ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਾਲੀ ਵਸਤੂ ਹੋ ਸਕਦੀ ਹੈ। ਜੇ ਆਰਗੂਮੈਂਟ ਇੱਕ complex ਸੰਖਿਆ ਹੈ, ਤਾਂ ਇਸ ਦਾ ਪਰਿਮਾਣ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
- aiter(async_iterable, /)¶
ਇੱਕ asynchronous iterable ਲਈ asynchronous iterator ਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਹ
x.__aiter__()ਨੂੰ ਕਾਲ ਕਰਨ ਦੇ ਬਰਾਬਰ ਹੈ।ਨੋਟ:
iter()ਤੋਂ ਵੱਖਰਾ,aiter()ਦਾ 2-ਆਰਗੂਮੈਂਟ ਰੂਪ ਨਹੀਂ ਹੁੰਦਾ।Added in version 3.10.
- all(iterable, /)¶
ਜੇ iterable ਦੇ ਸਾਰੇ ਤੱਤ true ਹਨ (ਜਾਂ iterable ਖਾਲੀ ਹੈ), ਤਾਂ
Trueਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਹ ਇਸ ਦੇ ਬਰਾਬਰ ਹੈ:def all(iterable): for element in iterable: if not element: return False return True
- awaitable anext(async_iterator, /)¶
- awaitable anext(async_iterator, default, /)
ਉਡੀਕ ਕੀਤੇ ਜਾਣ 'ਤੇ, ਦਿੱਤੇ ਗਏ asynchronous iterator ਵਿੱਚੋਂ ਅਗਲੀ ਆਈਟਮ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਜਾਂ ਜੇ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ ਤਾਂ default ਵਾਪਸ ਕਰਦਾ ਹੈ ਅਤੇ ਜੇ ਇਟਰੇਟਰ exhausted ਹੋ ਗਿਆ ਹੋਵੇ।
ਇਹ
next()ਬਿਲਟ-ਇਨ ਦਾ asynchronous ਰੂਪ ਹੈ ਅਤੇ ਇਸੇ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ।ਇਹ async_iterator ਦੀ
__anext__()ਮੈਥਡ ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ ਅਤੇ ਇੱਕ awaitable ਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਸਨੂੰ await ਕਰਨ 'ਤੇ iterator ਦਾ ਅਗਲਾ ਮੁੱਲ ਪ੍ਰਾਪਤ ਹੁੰਦਾ ਹੈ। ਜੇ default ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ ਤਾਂ iterator ਦੇ ਸਮਾਪਤ ਹੋਣ ਤੇ ਉਹੀ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਨਹੀਂ ਤਾਂStopAsyncIterationexception ਉਠਾਈ ਜਾਂਦੀ ਹੈ।Added in version 3.10.
- any(iterable, /)¶
ਜੇ iterable ਦਾ ਕੋਈ ਵੀ ਤੱਤ true ਹੋਵੇ ਤਾਂ
Trueਵਾਪਸ ਕਰਦਾ ਹੈ। ਜੇ iterable ਖਾਲੀ ਹੋਵੇ ਤਾਂFalseਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਹ ਇਸ ਦੇ ਬਰਾਬਰ ਹੈ:def any(iterable): for element in iterable: if element: return True return False
- ascii(object, /)¶
repr()ਦੀ ਤਰ੍ਹਾਂ, ਕਿਸੇ ਵਸਤੂ ਦੀ ਪ੍ਰਿੰਟ ਕੀਤੀ ਜਾ ਸਕਣ ਵਾਲੀ ਨੁਮਾਇੰਦਗੀ ਵਾਲੀ ਸਟ੍ਰਿੰਗ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਪਰrepr()ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੀ ਗਈ ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਮੌਜੂਦ non-ASCII ਅੱਖਰਾਂ ਨੂੰ\x,\uਜਾਂ\Uescape sequence ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦਰਸਾਉਂਦਾ ਹੈ। ਇਸ ਨਾਲ Python 2 ਦੇrepr()ਵਰਗੀ ਸਟ੍ਰਿੰਗ ਬਣਦੀ ਹੈ।
- bin(integer, /)¶
ਇੱਕ ਪੂਰਨ ਸੰਖਿਆ ਨੂੰ "0b" ਪ੍ਰੀਫਿਕਸ ਵਾਲੀ binary ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। ਨਤੀਜਾ ਇੱਕ ਵੈਧ Python expression ਹੁੰਦਾ ਹੈ। ਜੇ integer Python
intਵਸਤੂ ਨਹੀਂ ਹੈ, ਤਾਂ ਉਸ ਵਿੱਚ__index__()ਮੈਥਡ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਇੱਕ ਪੂਰਨ ਸੰਖਿਆ ਵਾਪਸ ਕਰੇ। ਕੁਝ ਉਦਾਹਰਨਾਂ:>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
ਜੇ "0b" ਪ੍ਰੀਫਿਕਸ ਚਾਹੀਦਾ ਹੋਵੇ ਜਾਂ ਨਾ ਚਾਹੀਦਾ ਹੋਵੇ, ਤਾਂ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕਿਸੇ ਵੀ ਤਰੀਕੇ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')
ਨਕਾਰਾਤਮਕ ਮੁੱਲਾਂ ਨੂੰ two's complement ਰੂਪ ਵਿੱਚ ਦਰਸਾਉਣ ਲਈ
enum.bin()ਵੀ ਦੇਖੋ।ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ
format()ਵੀ ਵੇਖੋ।
- class bool(object=False, /)¶
ਇੱਕ Boolean ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ, ਅਰਥਾਤ
TrueਜਾਂFalseਵਿੱਚੋਂ ਇੱਕ। ਆਰਗੂਮੈਂਟ ਨੂੰ ਮਿਆਰੀ truth testing procedure ਅਨੁਸਾਰ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ। ਜੇ ਆਰਗੂਮੈਂਟ false ਹੋਵੇ ਜਾਂ ਦਿੱਤਾ ਨਾ ਗਿਆ ਹੋਵੇ, ਤਾਂFalseਵਾਪਸ ਹੁੰਦਾ ਹੈ; ਨਹੀਂ ਤਾਂTrueਵਾਪਸ ਹੁੰਦਾ ਹੈ।boolਕਲਾਸintਦੀ ਉਪ-ਕਲਾਸ ਹੈ (ਵੇਖੋ Numeric Types --- int, float, complex)। ਇਸ ਦੀ ਹੋਰ ਉਪ-ਕਲਾਸ ਨਹੀਂ ਬਣਾਈ ਜਾ ਸਕਦੀ। ਇਸ ਦੇ ਕੇਵਲ ਦੋ ਹੀ ਇੰਸਟੈਂਸ ਹਨ:FalseਅਤੇTrue(ਵੇਖੋ Boolean Type - bool)।Changed in version 3.7: ਹੁਣ ਇਹ ਪੈਰਾਮੀਟਰ ਕੇਵਲ positional ਰੂਪ ਵਿੱਚ ਹੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।
- breakpoint(*args, **kws)¶
ਇਹ ਫੰਕਸ਼ਨ ਤੁਹਾਨੂੰ ਉਸ ਥਾਂ debugger ਵਿੱਚ ਲੈ ਜਾਂਦਾ ਹੈ ਜਿੱਥੇ ਇਸਨੂੰ ਕਾਲ ਕੀਤਾ ਗਿਆ ਹੋਵੇ। ਖਾਸ ਤੌਰ 'ਤੇ, ਇਹ
argsਅਤੇkwsਨੂੰ ਸਿੱਧਾsys.breakpointhook()ਨੂੰ ਭੇਜਦਾ ਹੈ। ਮੂਲ ਰੂਪ ਵਿੱਚsys.breakpointhook()ਬਿਨਾਂ ਕਿਸੇ ਆਰਗੂਮੈਂਟ ਦੇpdb.set_trace()ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ। ਇਸ ਕਰਕੇ ਤੁਹਾਨੂੰpdbਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ import ਕਰਨ ਜਾਂ debugger ਵਿੱਚ ਜਾਣ ਲਈ ਵਾਧੂ ਕੋਡ ਲਿਖਣ ਦੀ ਲੋੜ ਨਹੀਂ ਪੈਂਦੀ। ਹਾਲਾਂਕਿ,sys.breakpointhook()ਨੂੰ ਕਿਸੇ ਹੋਰ ਫੰਕਸ਼ਨ ਨਾਲ ਵੀ ਸੈੱਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਅਤੇbreakpoint()ਆਪਣੇ ਆਪ ਉਸਨੂੰ ਕਾਲ ਕਰੇਗਾ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਆਪਣੀ ਪਸੰਦ ਦੇ debugger ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ। ਜੇsys.breakpointhook()ਉਪਲਬਧ ਨਾ ਹੋਵੇ, ਤਾਂ ਇਹ ਫੰਕਸ਼ਨRuntimeErrorਉਠਾਏਗਾ।ਮੂਲ ਰੂਪ ਵਿੱਚ
breakpoint()ਦਾ ਵਿਹਾਰPYTHONBREAKPOINTenvironment variable ਰਾਹੀਂ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਵਰਤੋਂ ਸੰਬੰਧੀ ਵੇਰਵਿਆਂ ਲਈsys.breakpointhook()ਵੇਖੋ।ਧਿਆਨ ਰਹੇ ਕਿ ਜੇ
sys.breakpointhook()ਨੂੰ ਬਦਲ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ ਤਾਂ ਇਸ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਹੈ।breakpointhookਆਰਗੂਮੈਂਟ ਨਾਲ ਇੱਕ auditing eventbuiltins.breakpointਉਠਾਇਆ ਜਾਂਦਾ ਹੈ।Added in version 3.7.
- class bytearray(source=b'')
- class bytearray(source, encoding, errors='strict')
ਬਾਈਟਾਂ ਦਾ ਇੱਕ ਨਵਾਂ array ਵਾਪਸ ਕਰਦਾ ਹੈ।
bytearrayclass 0 <= x < 256 ਦੀ ਸੀਮਾ ਵਿੱਚ integers ਦੀ ਇੱਕ mutable sequence ਹੈ। ਇਸ ਵਿੱਚ mutable sequences ਦੇ ਜ਼ਿਆਦਾਤਰ ਆਮ methods ਹਨ, ਜਿਨ੍ਹਾਂ ਦਾ ਵੇਰਵਾ Mutable Sequence Types ਵਿੱਚ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਅਤੇ ਨਾਲ ਹੀbytestype ਦੇ ਬਹੁਤ ਸਾਰੇ methods ਵੀ ਹਨ, ਵੇਖੇ Bytes and Bytearray Operations।ਵਿਕਲਪਿਕ source ਪੈਰਾਮੀਟਰ ਦੀ ਵਰਤੋਂ ਐਰੇ ਨੂੰ ਕਈ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਸ਼ੁਰੂਆਤੀ ਮੁੱਲ ਦੇਣ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ:
ਜੇ ਇਹ ਇੱਕ string ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ encoding (ਅਤੇ ਵਿਕਲਪਿਕ ਤੌਰ 'ਤੇ errors) ਪੈਰਾਮੀਟਰ ਵੀ ਦੇਣੇ ਪੈਣਗੇ; ਫਿਰ
bytearray()str.encode()ਦੀ ਵਰਤੋਂ ਕਰਕੇ string ਨੂੰ bytes ਵਿੱਚ ਬਦਲਦਾ ਹੈ।ਜੇ ਇਹ ਇੱਕ integer ਹੈ, ਤਾਂ ਐਰੇ ਦਾ ਆਕਾਰ ਉਸਦੇ ਬਰਾਬਰ ਹੋਵੇਗਾ ਅਤੇ ਇਸ ਨੂੰ null bytes ਨਾਲ ਸ਼ੁਰੂ ਕੀਤਾ ਜਾਵੇਗਾ।
ਜੇ ਇਹ buffer interface ਦੇ ਅਨੁਕੂਲ ਕੋਈ ਆਬਜੈਕਟ ਹੈ, ਤਾਂ ਉਸ ਆਬਜੈਕਟ ਦਾ read-only buffer bytes ਐਰੇ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਵੇਗਾ।
ਜੇ ਇਹ ਇੱਕ iterable ਹੈ, ਤਾਂ ਇਹ
0 <= x < 256ਦੀ ਸੀਮਾ ਵਾਲੇ ਪੂਰਨ ਅੰਕਾਂ ਦੀ iterable ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, ਜੋ ਐਰੇ ਦੀ ਸ਼ੁਰੂਆਤੀ ਸਮੱਗਰੀ ਵਜੋਂ ਵਰਤੇ ਜਾਂਦੇ ਹਨ।
ਬਿਨਾਂ ਕਿਸੇ ਆਰਗੂਮੈਂਟ ਦੇ, ਆਕਾਰ 0 ਵਾਲਾ ਐਰੇ ਬਣਾਇਆ ਜਾਂਦਾ ਹੈ।
ਇਹ ਵੀ ਵੇਖੋ Binary Sequence Types --- bytes, bytearray, memoryview ਅਤੇ Bytearray Objects।
- class bytes(source=b'')
- class bytes(source, encoding, errors='strict')
ਇੱਕ ਨਵਾਂ "bytes" ਆਬਜੈਕਟ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ
0 <= x < 256ਸੀਮਾ ਦੇ ਪੂਰਨ ਅੰਕਾਂ ਦੀ ਇੱਕ ਅਪਰਿਵਰਤਨਸ਼ੀਲ ਲੜੀ ਹੈ।bytes,bytearrayਦਾ ਅਪਰਿਵਰਤਨਸ਼ੀਲ ਰੂਪ ਹੈ — ਇਸ ਵਿੱਚ ਉਹੀ non-mutating ਮੈਥਡ ਅਤੇ ਉਹੀ indexing ਅਤੇ slicing ਵਿਹਾਰ ਹੁੰਦਾ ਹੈ।ਇਸ ਲਈ constructor arguments ਨੂੰ
bytearray()ਵਾਂਗ ਹੀ ਸਮਝਿਆ ਜਾਂਦਾ ਹੈ।Bytes ਆਬਜੈਕਟ literals ਦੀ ਵਰਤੋਂ ਨਾਲ ਵੀ ਬਣਾਏ ਜਾ ਸਕਦੇ ਹਨ, ਵੇਖੋ String and Bytes literals।
ਇਸ ਨਾਲ ਸੰਬੰਧਿਤ Binary Sequence Types --- bytes, bytearray, memoryview, Bytes Objects ਅਤੇ Bytes and Bytearray Operations ਵੀ ਵੇਖੋ।
- callable(object, /)¶
ਜੇ object argument callable ਲੱਗਦਾ ਹੋਵੇ ਤਾਂ
Trueਵਾਪਸ ਕਰਦਾ ਹੈ, ਨਹੀਂ ਤਾਂFalse। ਜੇ ਇਹTrueਵਾਪਸ ਕਰੇ, ਤਾਂ ਵੀ ਸੰਭਵ ਹੈ ਕਿ ਕਾਲ ਅਸਫਲ ਹੋ ਜਾਵੇ, ਪਰ ਜੇFalseਹੋਵੇ ਤਾਂ object ਨੂੰ ਕਾਲ ਕਰਨਾ ਕਦੇ ਵੀ ਸਫਲ ਨਹੀਂ ਹੋਵੇਗਾ। ਧਿਆਨ ਰਹੇ ਕਿ classes callable ਹੁੰਦੀਆਂ ਹਨ (class ਨੂੰ ਕਾਲ ਕਰਨ ਨਾਲ ਨਵਾਂ instance ਬਣਦਾ ਹੈ); instances callable ਤਦ ਹੁੰਦੇ ਹਨ ਜਦੋਂ ਉਨ੍ਹਾਂ ਦੀ class ਵਿੱਚ__call__()ਮੈਥਡ ਹੋਵੇ।Added in version 3.2: ਇਹ ਫੰਕਸ਼ਨ ਪਹਿਲਾਂ Python 3.0 ਵਿੱਚ ਹਟਾਇਆ ਗਿਆ ਸੀ ਅਤੇ ਬਾਅਦ ਵਿੱਚ Python 3.2 ਵਿੱਚ ਮੁੜ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ।
- chr(codepoint, /)¶
ਨਿਰਧਾਰਤ Unicode code point ਵਾਲੇ ਅੱਖਰ ਨੂੰ ਦਰਸਾਉਂਦੀ string ਵਾਪਸ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ,
chr(97)string'a'ਵਾਪਸ ਕਰਦਾ ਹੈ, ਜਦਕਿchr(8364)string'€'ਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਹord()ਦਾ ਉਲਟ ਹੈ।ਅਰਗੂਮੈਂਟ ਲਈ ਵੈਧ ਸੀਮਾ 0 ਤੋਂ 1,114,111 (ਹੈਕਸਾਡੇਸਿਮਲ-16 ਵਿੱਚ 0x10FFFF) ਤੱਕ ਹੈ। ਜੇ ਇਹ ਸੀਮਾ ਤੋਂ ਬਾਹਰ ਹੋਵੇ ਤਾਂ
ValueErrorਉਠਾਇਆ ਜਾਵੇਗਾ।
- @classmethod¶
ਇੱਕ ਮੈਥਡ ਨੂੰ class method ਵਿੱਚ ਬਦਲੋ।
ਇੱਕ class method ਨੂੰ class ਪਹਿਲੇ ਅਪਰੋਕਸ਼ argument ਵਜੋਂ ਮਿਲਦੀ ਹੈ, ਬਿਲਕੁਲ ਉਸੇ ਤਰ੍ਹਾਂ ਜਿਵੇਂ instance method ਨੂੰ instance ਮਿਲਦਾ ਹੈ। class method ਘੋਸ਼ਿਤ ਕਰਨ ਲਈ ਇਹ ਤਰੀਕਾ ਵਰਤੋ:
class C: @classmethod def f(cls, arg1, arg2): ...
@classmethodਰੂਪ ਇੱਕ decorator ਫੰਕਸ਼ਨ ਹੈ — ਵੇਰਵਿਆਂ ਲਈ Function definitions ਵੇਖੋ।Class method ਨੂੰ class (ਜਿਵੇਂ
C.f()) ਜਾਂ instance (ਜਿਵੇਂC().f()) ਦੋਹਾਂ ਉੱਤੇ ਕਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। instance ਨੂੰ ਉਸਦੀ class ਤੋਂ ਇਲਾਵਾ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜੇ derived class ਲਈ class method ਕਾਲ ਕੀਤਾ ਜਾਵੇ, ਤਾਂ derived class ਆਬਜੈਕਟ ਪਹਿਲੇ ਅਪਰੋਕਸ਼ argument ਵਜੋਂ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।Class methods, C++ ਜਾਂ Java ਦੇ static methods ਤੋਂ ਵੱਖ ਹਨ। ਜੇ ਤੁਹਾਨੂੰ ਉਹ ਚਾਹੀਦੇ ਹਨ ਤਾਂ ਇਸ ਭਾਗ ਵਿੱਚ
staticmethod()ਵੇਖੋ। Class methods ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ The standard type hierarchy ਵੇਖੋ।Changed in version 3.9: ਹੁਣ class methods ਹੋਰ descriptors ਜਿਵੇਂ
property()ਨੂੰ wrap ਕਰ ਸਕਦੇ ਹਨ।Changed in version 3.10: ਹੁਣ class methods ਮੈਥਡ attributes (
__module__,__name__,__qualname__,__doc__ਅਤੇ__annotations__) ਨੂੰ inherit ਕਰਦੇ ਹਨ ਅਤੇ ਇੱਕ ਨਵਾਂ__wrapped__attribute ਵੀ ਰੱਖਦੇ ਹਨ।Deprecated since version 3.11, removed in version 3.13: ਹੁਣ class methods ਹੋਰ descriptors ਜਿਵੇਂ
property()ਨੂੰ wrap ਨਹੀਂ ਕਰ ਸਕਦੇ।
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1, *, module=None)¶
source ਨੂੰ ਕੋਡ ਜਾਂ AST ਆਬਜੈਕਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕਰੋ। ਕੋਡ ਆਬਜੈਕਟਾਂ ਨੂੰ
exec()ਜਾਂeval()ਰਾਹੀਂ ਚਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। source ਇੱਕ ਸਧਾਰਣ ਸਟਰਿੰਗ, ਬਾਈਟ ਸਟ੍ਰਿੰਗ ਜਾਂ AST ਆਬਜੈਕਟ ਹੋ ਸਕਦਾ ਹੈ। AST ਆਬਜੈਕਟਾਂ ਨਾਲ ਕੰਮ ਕਰਨ ਬਾਰੇ ਜਾਣਕਾਰੀ ਲਈastਮੋਡੀਊਲ ਦਾ ਦਸਤਾਵੇਜ਼ ਵੇਖੋ।filename ਆਰਗੂਮੈਂਟ ਉਸ ਫਾਈਲ ਦਾ ਨਾਮ ਦਿੰਦਾ ਹੈ ਜਿਸ ਤੋਂ ਕੋਡ ਪੜ੍ਹਿਆ ਗਿਆ ਸੀ; ਜੇ ਕੋਡ ਫਾਈਲ ਤੋਂ ਨਹੀਂ ਪੜ੍ਹਿਆ ਗਿਆ ਤਾਂ ਕੋਈ ਪਛਾਣਯੋਗ ਮੁੱਲ ਦਿਓ (ਆਮ ਤੌਰ 'ਤੇ
'<string>'ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ)।mode ਦਲੀਲ ਇਹ ਨਿਰਧਾਰਤ ਕਰਦੀ ਹੈ ਕਿ ਕਿਸ ਤਰ੍ਹਾਂ ਦਾ ਕੋਡ ਕੰਪਾਇਲ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ; ਇਹ
'exec'ਹੋ ਸਕਦੀ ਹੈ ਜੇ source ਬਿਆਨਾਂ ਦੀ ਇੱਕ ਲੜੀ ਹੋਵੇ,'eval'ਜੇ ਇਹ ਇੱਕ ਇਕੱਲਾ ਐਕਸਪ੍ਰੈਸ਼ਨ ਹੋਵੇ, ਜਾਂ'single'ਜੇ ਇਹ ਇੱਕ ਇਕੱਲਾ ਇੰਟਰਐਕਟਿਵ ਬਿਆਨ ਹੋਵੇ (ਇਸ ਮਾਮਲੇ ਵਿੱਚ, ਉਹ ਐਕਸਪ੍ਰੈਸ਼ਨ ਬਿਆਨ ਜੋNoneਤੋਂ ਇਲਾਵਾ ਕਿਸੇ ਹੋਰ ਮੁੱਲ ਨੂੰ ਮੁਲਾਂਕਣ ਕਰਦੇ ਹਨ, ਛਾਪੇ ਜਾਣਗੇ)।ਵਿਕਲਪਿਕ arguments flags ਅਤੇ dont_inherit ਇਹ ਨਿਯੰਤਰਿਤ ਕਰਦੇ ਹਨ ਕਿ ਕਿਹੜੇ compiler options ਚਾਲੂ ਕੀਤੇ ਜਾਣ ਅਤੇ ਕਿਹੜੀਆਂ future features ਦੀ ਆਗਿਆ ਦਿੱਤੀ ਜਾਵੇ। ਜੇ ਦੋਵੇਂ ਮੌਜੂਦ ਨਾ ਹੋਣ (ਜਾਂ ਦੋਵੇਂ ਸਿਫ਼ਰ ਹੋਣ), ਤਾਂ ਕੋਡ ਉਹਨਾਂ ਹੀ flags ਨਾਲ compile ਹੁੰਦਾ ਹੈ ਜੋ
compile()ਨੂੰ ਕਾਲ ਕਰਨ ਵਾਲੇ ਕੋਡ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕਰਦੇ ਹਨ। ਜੇ flags argument ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ ਅਤੇ dont_inherit ਨਾ ਹੋਵੇ (ਜਾਂ ਸਿਫ਼ਰ ਹੋਵੇ), ਤਾਂ flags argument ਦੁਆਰਾ ਨਿਰਧਾਰਤ compiler options ਅਤੇ future statements ਉਹਨਾਂ ਦੇ ਨਾਲ-ਨਾਲ ਵਰਤੇ ਜਾਂਦੇ ਹਨ ਜੋ ਕਿਸੇ ਵੀ ਹਾਲਤ ਵਿੱਚ ਵਰਤੇ ਜਾਣਗੇ। ਜੇ dont_inherit ਇੱਕ ਗੈਰ-ਸਿਫ਼ਰ integer ਹੋਵੇ, ਤਾਂ flags argument ਹੀ ਸਭ ਕੁਝ ਹੈ — ਆਲੇ-ਦੁਆਲੇ ਦੇ ਕੋਡ ਵਿੱਚਲੇ flags (future features ਅਤੇ compiler options) ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।ਕੰਪਾਈਲਰ ਵਿਕਲਪ ਅਤੇ future ਸਟੇਟਮੈਂਟ ਬਿੱਟਾਂ ਰਾਹੀਂ ਦਰਸਾਏ ਜਾਂਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ bitwise OR ਨਾਲ ਜੋੜ ਕੇ ਕਈ ਵਿਕਲਪ ਚੁਣੇ ਜਾ ਸਕਦੇ ਹਨ। ਕਿਸੇ future feature ਲਈ ਲੋੜੀਂਦਾ bitfield
__future__ਮੋਡੀਊਲ ਵਿੱਚ ਮੌਜੂਦ_Featureਦੇcompiler_flagਐਟ੍ਰਿਬਿਊਟ ਵਿੱਚ ਮਿਲਦਾ ਹੈ। Compiler flagsastਮੋਡੀਊਲ ਵਿੱਚPyCF_ਪ੍ਰੀਫਿਕਸ ਨਾਲ ਉਪਲਬਧ ਹਨ।optimize ਆਰਗੂਮੈਂਟ ਕੰਪਾਈਲਰ ਦਾ optimization ਪੱਧਰ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ; ਡਿਫਾਲਟ ਮੁੱਲ
-1ਇੰਟਰਪ੍ਰੀਟਰ ਦੇ-Oਵਿਕਲਪ ਅਨੁਸਾਰ ਪੱਧਰ ਚੁਣਦਾ ਹੈ। ਸਪਸ਼ਟ ਪੱਧਰ ਹਨ:0(ਕੋਈ optimization ਨਹੀਂ;__debug__ਸਹੀ ਹੈ),1(assert ਹਟਾਏ ਜਾਂਦੇ ਹਨ;__debug__ਗਲਤ ਹੈ), ਜਾਂ2(docstring ਵੀ ਹਟਾਏ ਜਾਂਦੇ ਹਨ)।ਵਿਕਲਪਿਕ ਆਰਗੂਮੈਂਟ module ਮੋਡੀਊਲ ਦਾ ਨਾਮ ਦਰਸਾਉਂਦਾ ਹੈ। ਇਹ ਮੋਡੀਊਲ ਨਾਮ ਦੇ ਆਧਾਰ 'ਤੇ filter syntax warnings ਨੂੰ ਸਪਸ਼ਟ ਕਰਨ ਲਈ ਲੋੜੀਂਦਾ ਹੈ।
ਇਹ ਫੰਕਸ਼ਨ
SyntaxErrorਉਠਾਉਂਦਾ ਹੈ ਜੇ compile ਕੀਤਾ ਜਾ ਰਿਹਾ source ਵੈਧ ਨਾ ਹੋਵੇ, ਜਿਸ ਵਿੱਚ ਉਹ source ਵੀ ਸ਼ਾਮਲ ਹੈ ਜਿਸ ਵਿੱਚ null character ਹੋਵੇ ਜਾਂ ਜਿਸਨੂੰ decode ਨਾ ਕੀਤਾ ਜਾ ਸਕੇ;ValueErrorਜੇ mode ਜਾਂ flags ਵੈਧ ਨਾ ਹੋਣ, ਜਾਂ ਜੇ string source ਵਿੱਚ surrogate characters ਹੋਣ;MemoryErrorਜਾਂRecursionErrorਜੇ source parse ਜਾਂ compile ਕਰਨ ਲਈ ਬਹੁਤ ਗੁੰਝਲਦਾਰ ਹੋਵੇ, ਉਦਾਹਰਨ ਲਈ ਕਈ ਹਜ਼ਾਰ nested operators ਵਾਲਾ expression; ਅਤੇOverflowErrorਜੇ source ਬਹੁਤ ਵੱਡਾ ਹੋਵੇ।ਜੇ ਤੁਸੀਂ Python ਕੋਡ ਨੂੰ AST ਰੂਪ ਵਿੱਚ ਪਾਰਸ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ
ast.parse()ਵੇਖੋ।sourceਅਤੇfilenameਆਰਗੂਮੈਂਟਾਂ ਨਾਲ ਇੱਕ auditing eventcompileਉਠਾਇਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਇਵੈਂਟ ਅਪਰੋਖ ਕੰਪਾਇਲੇਸ਼ਨ ਦੌਰਾਨ ਵੀ ਉਠ ਸਕਦਾ ਹੈ।Note
ਜਦੋਂ
'single'ਜਾਂ'eval'ਮੋਡ ਵਿੱਚ ਬਹੁ-ਲਾਈਨ ਕੋਡ ਵਾਲੀ ਸਟਰਿੰਗ ਕੰਪਾਇਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਇਨਪੁੱਟ ਦਾ ਅੰਤ ਘੱਟੋ-ਘੱਟ ਇੱਕ newline ਅੱਖਰ ਨਾਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਹcodeਮੋਡੀਊਲ ਵਿੱਚ ਅਧੂਰੇ ਅਤੇ ਪੂਰੇ ਸਟੇਟਮੈਂਟਾਂ ਦੀ ਪਛਾਣ ਆਸਾਨ ਬਣਾਉਂਦਾ ਹੈ।Warning
Python ਦੇ AST ਕੰਪਾਈਲਰ ਦੀ stack depth ਸੀਮਾ ਕਾਰਨ, ਬਹੁਤ ਵੱਡੀ ਜਾਂ ਜਟਿਲ ਸਟਰਿੰਗ ਨੂੰ AST ਆਬਜੈਕਟ ਵਿੱਚ ਕੰਪਾਇਲ ਕਰਦੇ ਸਮੇਂ Python interpreter ਕਰੈਸ਼ ਹੋ ਸਕਦਾ ਹੈ।
Changed in version 3.2: Windows ਅਤੇ Mac newline ਦੀ ਵਰਤੋਂ ਦੀ ਆਗਿਆ ਦਿੱਤੀ ਗਈ। ਨਾਲ ਹੀ,
'exec'ਮੋਡ ਵਿੱਚ ਇਨਪੁੱਟ ਦਾ newline ਨਾਲ ਖਤਮ ਹੋਣਾ ਹੁਣ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ। optimize ਪੈਰਾਮੀਟਰ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ।Changed in version 3.5: ਪਹਿਲਾਂ, ਜਦੋਂ source ਵਿੱਚ null bytes ਮਿਲਦੇ ਸਨ ਤਾਂ
TypeErrorਉਠਾਇਆ ਜਾਂਦਾ ਸੀ।Changed in version 3.8: ਹੁਣ flags ਵਿੱਚ
ast.PyCF_ALLOW_TOP_LEVEL_AWAITਦੇ ਕੇ top-levelawait,async forਅਤੇasync withਲਈ ਸਮਰਥਨ ਯੋਗ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।Changed in version 3.12: ਜਦੋਂ source ਵਿੱਚ null bytes ਮਿਲਦੇ ਹਨ, ਤਾਂ
ValueErrorਦੀ ਬਜਾਏSyntaxErrorਉਠਾਇਆ ਜਾਂਦਾ ਹੈ।Changed in version 3.15: module ਪੈਰਾਮੀਟਰ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ।
- class complex(number=0, /)¶
- class complex(string, /)
- class complex(real=0, imag=0)
ਇੱਕ ਸਟਰਿੰਗ ਜਾਂ ਸੰਖਿਆ ਨੂੰ complex ਸੰਖਿਆ ਵਿੱਚ ਬਦਲੋ, ਜਾਂ real ਅਤੇ imaginary ਭਾਗਾਂ ਤੋਂ complex ਸੰਖਿਆ ਬਣਾਓ।
ਉਦਾਹਰਨਾਂ:
>>> complex('+1.23') (1.23+0j) >>> complex('-4.5j') -4.5j >>> complex('-1.23+4.5j') (-1.23+4.5j) >>> complex('\t( -1.23+4.5J )\n') (-1.23+4.5j) >>> complex('-Infinity+NaNj') (-inf+nanj) >>> complex(1.23) (1.23+0j) >>> complex(imag=-4.5) -4.5j >>> complex(-1.23, 4.5) (-1.23+4.5j)
ਜੇ ਦਲੀਲ ਇੱਕ ਸਟ੍ਰਿੰਗ ਹੈ, ਤਾਂ ਇਸ ਵਿੱਚ ਜਾਂ ਤਾਂ ਇੱਕ real ਹਿੱਸਾ (
float()ਲਈ ਵਰਤੇ ਗਏ ਫਾਰਮੈਟ ਵਿੱਚ) ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਜਾਂ ਇੱਕ imaginary ਹਿੱਸਾ (ਉਸੇ ਫਾਰਮੈਟ ਵਿੱਚ ਪਰ'j'ਜਾਂ'J'suffix ਨਾਲ), ਜਾਂ ਦੋਵੇਂ real ਅਤੇ imaginary ਹਿੱਸੇ (ਇਸ ਸਥਿਤੀ ਵਿੱਚ imaginary ਹਿੱਸੇ ਦਾ ਚਿੰਨ੍ਹ ਲਾਜ਼ਮੀ ਹੈ)। ਸਟ੍ਰਿੰਗ ਵਿਕਲਪਿਕ ਤੌਰ 'ਤੇ ਖਾਲੀ ਥਾਂਵਾਂ ਅਤੇ ਗੋਲ ਬ੍ਰੈਕਟਾਂ'('ਅਤੇ')'ਨਾਲ ਘਿਰੀ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਨ੍ਹਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਸਟ੍ਰਿੰਗ ਵਿੱਚ'+','-','j'ਜਾਂ'J'suffix ਅਤੇ ਦਸ਼ਮਲਵ ਅੰਕ ਦੇ ਵਿਚਕਾਰ whitespace ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ। ਉਦਾਹਰਨ ਵਜੋਂ,complex('1+2j')ਠੀਕ ਹੈ, ਪਰcomplex('1 + 2j')ValueErrorexception ਉਠਾਉਂਦਾ ਹੈ। ਹੋਰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ, ਬ੍ਰੈਕਟਾਂ ਅਤੇ ਸ਼ੁਰੂਆਤੀ/ਅੰਤਲੀ whitespace ਹਟਾਉਣ ਤੋਂ ਬਾਅਦ, input ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ grammar ਵਿੱਚcomplexvalueਉਤਪਾਦਨ ਨਿਯਮ ਦੇ ਅਨੁਕੂਲ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ:complexvalue:
floatvalue|floatvalue("j" | "J") |floatvaluesignabsfloatvalue("j" | "J")ਜੇ ਦਲੀਲ ਇੱਕ ਨੰਬਰ ਹੋਵੇ, ਤਾਂ ਕੰਸਟ੍ਰਕਟਰ
intਅਤੇfloatਵਾਂਗ ਸੰਖਿਆਕ ਰੂਪਾਂਤਰਣ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ। ਇੱਕ ਆਮ Python ਆਬਜੈਕਟxਲਈ,complex(x)x.__complex__()ਵੱਲ ਡੈਲੀਗੇਟ ਕਰਦਾ ਹੈ। ਜੇ__complex__()ਪਰਿਭਾਸ਼ਿਤ ਨਾ ਹੋਵੇ ਤਾਂ ਇਹ__float__()'ਤੇ ਵਾਪਸ ਆ ਜਾਂਦਾ ਹੈ। ਜੇ__float__()ਪਰਿਭਾਸ਼ਿਤ ਨਾ ਹੋਵੇ ਤਾਂ ਇਹ__index__()'ਤੇ ਵਾਪਸ ਆ ਜਾਂਦਾ ਹੈ।ਜੇ ਦੋ ਆਰਗੂਮੈਂਟ ਦਿੱਤੇ ਜਾਣ ਜਾਂ keyword arguments ਵਰਤੇ ਜਾਣ, ਤਾਂ ਹਰ ਆਰਗੂਮੈਂਟ ਕਿਸੇ ਵੀ ਸੰਖਿਆਤਮਕ ਕਿਸਮ ਦਾ ਹੋ ਸਕਦਾ ਹੈ (complex ਸਮੇਤ)। ਜੇ ਦੋਵੇਂ ਆਰਗੂਮੈਂਟ real ਸੰਖਿਆਵਾਂ ਹਨ, ਤਾਂ real ਭਾਗ real ਅਤੇ imaginary ਭਾਗ imag ਵਾਲੀ complex ਸੰਖਿਆ ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਦੋਵੇਂ complex ਸੰਖਿਆਵਾਂ ਹਨ, ਤਾਂ real ਭਾਗ
real.real-imag.imagਅਤੇ imaginary ਭਾਗreal.imag+imag.realਵਾਲੀ complex ਸੰਖਿਆ ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਕਿਸੇ ਇੱਕ ਆਰਗੂਮੈਂਟ ਵਿੱਚ real ਸੰਖਿਆ ਹੋਵੇ, ਤਾਂ ਉਪਰੋਕਤ ਗਣਨਾਵਾਂ ਵਿੱਚ ਸਿਰਫ਼ ਉਸਦਾ real ਭਾਗ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।complex.from_number()ਵੀ ਵੇਖੋ, ਜੋ ਸਿਰਫ਼ ਇੱਕ ਸੰਖਿਆਤਮਕ ਆਰਗੂਮੈਂਟ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ।ਜੇ ਸਾਰੇ ਆਰਗੂਮੈਂਟ ਛੱਡ ਦਿੱਤੇ ਜਾਣ, ਤਾਂ
0jਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।complex ਕਿਸਮ ਦਾ ਵੇਰਵਾ Numeric Types --- int, float, complex ਵਿੱਚ ਦਿੱਤਾ ਗਿਆ ਹੈ।
Changed in version 3.6: ਕੋਡ ਲਿਟਰਲਾਂ ਵਾਂਗ ਅੰਕਾਂ ਨੂੰ underscores ਨਾਲ ਸਮੂਹਬੱਧ ਕਰਨਾ ਮਨਜ਼ੂਰ ਹੈ।
Changed in version 3.8: ਜੇ
__complex__()ਅਤੇ__float__()ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹਨ, ਤਾਂ ਇਹ__index__()ਵੱਲ ਮੁੜਦਾ ਹੈ।Deprecated since version 3.14: real ਜਾਂ imag ਆਰਗੂਮੈਂਟ ਵਜੋਂ complex ਸੰਖਿਆ ਦੇਣਾ ਹੁਣ deprecated ਹੈ; ਇਸਨੂੰ ਸਿਰਫ਼ ਇੱਕ positional argument ਵਜੋਂ ਹੀ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।
- delattr(object, name, /)¶
ਇਹ
setattr()ਨਾਲ ਸੰਬੰਧਿਤ ਫੰਕਸ਼ਨ ਹੈ। ਆਰਗੂਮੈਂਟ ਇੱਕ ਆਬਜੈਕਟ ਅਤੇ ਇੱਕ ਸਟ੍ਰਿੰਗ ਹਨ। ਸਟਰਿੰਗ ਆਬਜੈਕਟ ਦੇ ਕਿਸੇ ਐਟ੍ਰਿਬਿਊਟ ਦਾ ਨਾਮ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਆਬਜੈਕਟ ਆਗਿਆ ਦੇਵੇ, ਤਾਂ ਇਹ ਫੰਕਸ਼ਨ ਉਸ ਐਟ੍ਰਿਬਿਊਟ ਨੂੰ ਮਿਟਾ ਦਿੰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ,delattr(x, 'foobar')del x.foobarਦੇ ਬਰਾਬਰ ਹੈ। name ਦਾ Python identifier ਹੋਣਾ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ (setattr()ਵੇਖੋ)।
- class dict(**kwargs)
- class dict(mapping, /, **kwargs)
- class dict(iterable, /, **kwargs)
ਇੱਕ ਨਵੀਂ dictionary ਬਣਾਓ।
dictobject dictionary class ਹੈ। ਇਸ class ਬਾਰੇ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਲਈ Mapping types --- dict, frozendict ਵੀ ਵੇਖੋ।ਹੋਰ ਕੰਟੇਨਰਾਂ ਲਈ built-in
frozendict,list,set, ਅਤੇtupleਕਲਾਸਾਂ ਦੇ ਨਾਲcollectionsਮੋਡੀਊਲ ਵੀ ਵੇਖੋ।
- dir()¶
- dir(object, /)
ਬਿਨਾਂ ਆਰਗੂਮੈਂਟਾਂ ਦੇ, ਮੌਜੂਦਾ ਲੋਕਲ ਸਕੋਪ ਵਿੱਚ ਮੌਜੂਦ ਨਾਂਵਾਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰੋ। ਜੇ ਇੱਕ ਆਰਗੂਮੈਂਟ ਦਿੱਤਾ ਜਾਵੇ, ਤਾਂ ਉਸ ਆਬਜੈਕਟ ਲਈ ਵੈਧ ਗੁਣਾਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
ਜੇ ਆਬਜੈਕਟ ਵਿੱਚ
__dir__()ਨਾਮ ਦੀ ਮੈਥਡ ਹੋਵੇ, ਤਾਂ ਇਸਨੂੰ ਕਾਲ ਕੀਤਾ ਜਾਵੇਗਾ ਅਤੇ ਇਸਨੂੰ ਗੁਣਾਂ ਦੀ ਸੂਚੀ ਵਾਪਸ ਕਰਨੀ ਲਾਜ਼ਮੀ ਹੈ। ਇਸ ਨਾਲ ਉਹ ਆਬਜੈਕਟ ਜੋ ਕਸਟਮ__getattr__()ਜਾਂ__getattribute__()ਫੰਕਸ਼ਨ ਲਾਗੂ ਕਰਦੇ ਹਨ,dir()ਦੁਆਰਾ ਆਪਣੇ ਗੁਣਾਂ ਦੀ ਰਿਪੋਰਟ ਕਰਨ ਦੇ ਤਰੀਕੇ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰ ਸਕਦੇ ਹਨ।ਜੇ ਆਬਜੈਕਟ
__dir__()ਪ੍ਰਦਾਨ ਨਹੀਂ ਕਰਦਾ, ਤਾਂ ਇਹ ਫੰਕਸ਼ਨ ਆਬਜੈਕਟ ਦੇ__dict__ਗੁਣ ਜੇ ਪਰਿਭਾਸ਼ਿਤ ਹੋਵੇ ਅਤੇ ਇਸਦੇ ਟਾਈਪ ਆਬਜੈਕਟ ਤੋਂ ਜਾਣਕਾਰੀ ਇਕੱਠੀ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ। ਨਤੀਜੇ ਵਜੋਂ ਮਿਲੀ ਸੂਚੀ ਲਾਜ਼ਮੀ ਤੌਰ 'ਤੇ ਪੂਰੀ ਨਹੀਂ ਹੁੰਦੀ ਅਤੇ ਜੇ ਆਬਜੈਕਟ ਵਿੱਚ ਕਸਟਮ__getattr__()ਹੋਵੇ ਤਾਂ ਇਹ ਗਲਤ ਵੀ ਹੋ ਸਕਦੀ ਹੈ।ਮੂਲ
dir()ਮਕੈਨਿਜ਼ਮ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਦੇ ਆਬਜੈਕਟਾਂ ਨਾਲ ਵੱਖਰੇ ਢੰਗ ਨਾਲ ਵਰਤਾਓ ਕਰਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਪੂਰੀ ਜਾਣਕਾਰੀ ਦੀ ਬਜਾਏ ਸਭ ਤੋਂ ਵੱਧ ਸੰਬੰਧਿਤ ਜਾਣਕਾਰੀ ਦੇਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ:ਜੇ ਆਬਜੈਕਟ ਇੱਕ ਮੋਡੀਊਲ ਆਬਜੈਕਟ ਹੈ, ਤਾਂ ਸੂਚੀ ਵਿੱਚ ਮੋਡੀਊਲ ਦੇ ਗੁਣਾਂ ਦੇ ਨਾਮ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ।
ਜੇ ਆਬਜੈਕਟ ਇੱਕ ਟਾਈਪ ਜਾਂ ਕਲਾਸ ਆਬਜੈਕਟ ਹੈ, ਤਾਂ ਸੂਚੀ ਵਿੱਚ ਇਸਦੇ ਗੁਣਾਂ ਦੇ ਨਾਮ ਅਤੇ ਇਸ ਦੀਆਂ ਬੇਸ ਕਲਾਸਾਂ ਦੇ ਗੁਣਾਂ ਦੇ ਨਾਮ ਵੀ ਰਿਕਰਸਿਵ ਤਰੀਕੇ ਨਾਲ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ।
ਨਹੀਂ ਤਾਂ, ਸੂਚੀ ਵਿੱਚ ਆਬਜੈਕਟ ਦੇ ਗੁਣਾਂ ਦੇ ਨਾਮ, ਇਸਦੀ ਕਲਾਸ ਦੇ ਗੁਣਾਂ ਦੇ ਨਾਮ ਅਤੇ ਇਸ ਦੀਆਂ ਬੇਸ ਕਲਾਸਾਂ ਦੇ ਗੁਣਾਂ ਦੇ ਨਾਮ ਰਿਕਰਸਿਵ ਤਰੀਕੇ ਨਾਲ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ।
ਨਤੀਜੇ ਵਜੋਂ ਮਿਲੀ ਸੂਚੀ ਵਰਣਮਾਲਾ ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ ਹੁੰਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ:
>>> import struct >>> dir() # show the names in the module namespace ['__builtins__', '__name__', 'struct'] >>> dir(struct) # show the names in the struct module ['Struct', '__all__', '__builtins__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape: ... def __dir__(self): ... return ['area', 'perimeter', 'location'] ... >>> s = Shape() >>> dir(s) ['area', 'location', 'perimeter']
Note
ਕਿਉਂਕਿ
dir()ਮੁੱਖ ਤੌਰ 'ਤੇ ਇੰਟਰਐਕਟਿਵ ਪ੍ਰਾਂਪਟ 'ਤੇ ਸੁਵਿਧਾ ਲਈ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਇਸ ਲਈ ਇਹ ਸਖ਼ਤੀ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ ਨਾਂਵਾਂ ਦੀ ਸੂਚੀ ਦੇਣ ਦੀ ਬਜਾਏ ਦਿਲਚਸਪ ਨਾਂਵਾਂ ਦਾ ਸੈੱਟ ਮੁਹੱਈਆ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ। ਇਸਦਾ ਵਿਸਤ੍ਰਿਤ ਵਰਤਾਓ ਵੱਖ-ਵੱਖ ਰਿਲੀਜ਼ਾਂ ਵਿੱਚ ਬਦਲ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ, ਜਦੋਂ ਆਰਗੂਮੈਂਟ ਇੱਕ ਕਲਾਸ ਹੋਵੇ ਤਾਂ ਮੈਟਾਕਲਾਸ ਦੇ ਗੁਣ ਨਤੀਜੇ ਵਾਲੀ ਸੂਚੀ ਵਿੱਚ ਨਹੀਂ ਹੁੰਦੇ।
- divmod(a, b, /)¶
ਦੋ (ਗੈਰ-ਕੰਪਲੈਕਸ) ਅੰਕਾਂ ਨੂੰ ਦਲੀਲਾਂ ਵਜੋਂ ਲਓ ਅਤੇ ਪੂਰਨ-ਭਾਗ-ਵੰਡ ਵਰਤ ਕੇ ਉਨ੍ਹਾਂ ਦੇ ਭਾਗਫਲ ਅਤੇ ਬਚਤ ਵਾਲੇ ਅੰਕਾਂ ਦੀ ਜੋੜੀ ਵਾਪਸ ਕਰੋ। ਮਿਲੇ-ਜੁਲੇ ਓਪਰੇਂਡ ਕਿਸਮਾਂ ਨਾਲ, ਬਾਈਨਰੀ ਗਣਿਤਿਕ ਓਪਰੇਟਰਾਂ ਦੇ ਨਿਯਮ ਲਾਗੂ ਹੁੰਦੇ ਹਨ। ਇੰਟਿਜਰਾਂ ਲਈ ਨਤੀਜਾ
(a // b, a % b)ਦੇ ਬਰਾਬਰ ਹੁੰਦਾ ਹੈ। ਫਲੋਟਿੰਗ-ਪੁਆਇੰਟ ਨੰਬਰਾਂ ਲਈ ਨਤੀਜਾ(q, a % b)ਹੁੰਦਾ ਹੈ, ਜਿੱਥੇ q ਆਮ ਤੌਰ 'ਤੇmath.floor(a / b)ਹੁੰਦਾ ਹੈ ਪਰ ਇਹ ਉਸ ਤੋਂ 1 ਘੱਟ ਵੀ ਹੋ ਸਕਦਾ ਹੈ। ਕਿਸੇ ਵੀ ਹਾਲਤ ਵਿੱਚq * b + a % ba ਦੇ ਬਹੁਤ ਨੇੜੇ ਹੁੰਦਾ ਹੈ, ਜੇa % bਗੈਰ-ਸ਼ੂਨ ਹੋਵੇ ਤਾਂ ਇਸਦਾ ਚਿੰਨ੍ਹ b ਦੇ ਚਿੰਨ੍ਹ ਦੇ ਬਰਾਬਰ ਹੁੰਦਾ ਹੈ, ਅਤੇ0 <= abs(a % b) < abs(b)।
- enumerate(iterable, start=0)¶
ਇੱਕ enumerate ਆਬਜੈਕਟ ਵਾਪਸ ਕਰੋ। iterable ਇੱਕ ਸੀਕਵੈਂਸ, iterator, ਜਾਂ ਹੋਰ ਕੋਈ ਐਸਾ ਆਬਜੈਕਟ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ iteration ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੋਵੇ।
enumerate()ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੇ iterator ਦੀ__next__()ਮੈਥਡ ਇੱਕ tuple ਵਾਪਸ ਕਰਦੀ ਹੈ ਜਿਸ ਵਿੱਚ ਗਿਣਤੀ (start ਤੋਂ, ਜਿਸਦਾ ਮੂਲ ਮੁੱਲ 0 ਹੈ) ਅਤੇ iterable 'ਤੇ iteration ਕਰਨ ਨਾਲ ਮਿਲੇ ਮੁੱਲ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ।>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
ਇਸਦੇ ਸਮਾਨ:
def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem n += 1
- eval(source, /, globals=None, locals=None)¶
- ਪੈਰਾਮੀਟਰ:
source (
str| code object) -- ਇੱਕ Python ਅਭਿਵਿਅੰਜਨਾ।globals (
dict|frozendict|None) -- ਗਲੋਬਲ ਨੇਮਸਪੇਸ (ਮੂਲ:None)।locals (mapping |
None) -- ਲੋਕਲ ਨੇਮਸਪੇਸ (ਮੂਲ:None)।
- ਵਾਪਸੀ:
ਮੁਲਾਂਕਣ ਕੀਤੀ ਅਭਿਵਿਅੰਜਨਾ ਦਾ ਨਤੀਜਾ।
- ਉਠਾਉਂਦਾ ਹੈ:
ਸਿੰਟੈਕਸ ਗਲਤੀਆਂ ਨੂੰ exceptions ਵਜੋਂ ਦਰਸਾਇਆ ਜਾਂਦਾ ਹੈ।
Warning
ਇਹ ਫੰਕਸ਼ਨ ਮਨਮਾਨਾ ਕੋਡ ਚਲਾਉਂਦਾ ਹੈ। ਇਸਨੂੰ ਅਣਵਿਸ਼ਵਾਸਯੋਗ ਵਰਤੋਂਕਾਰ-ਪ੍ਰਦਾਨ ਕੀਤੇ ਇਨਪੁੱਟ ਨਾਲ ਕਾਲ ਕਰਨ ਨਾਲ ਸੁਰੱਖਿਆ ਸੰਬੰਧੀ ਕਮਜ਼ੋਰੀਆਂ ਪੈਦਾ ਹੋ ਸਕਦੀਆਂ ਹਨ।
ਸੋਰਸ ਆਰਗੂਮੈਂਟ ਨੂੰ globals ਅਤੇ locals ਮੈਪਿੰਗਾਂ ਨੂੰ ਗਲੋਬਲ ਅਤੇ ਲੋਕਲ ਨੈਮਸਪੇਸ ਵਜੋਂ ਵਰਤ ਕੇ ਇੱਕ ਪਾਈਥਨ ਐਕਸਪ੍ਰੈਸ਼ਨ (ਤਕਨੀਕੀ ਤੌਰ 'ਤੇ, ਇੱਕ expression list) ਵਜੋਂ ਪਾਰਸ ਅਤੇ ਮੁਲਾਂਕਣ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜੇ globals ਡਿਕਸ਼ਨਰੀ ਮੌਜੂਦ ਹੈ ਅਤੇ ਉਸ ਵਿੱਚ
__builtins__ਕੁੰਜੀ ਲਈ ਕੋਈ ਮੁੱਲ ਨਹੀਂ ਹੈ, ਤਾਂ source ਨੂੰ ਪਾਰਸ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਸ ਕੁੰਜੀ ਹੇਠ ਬਿਲਟ-ਇਨ ਮਾਡਿਊਲbuiltinsਦੀ ਡਿਕਸ਼ਨਰੀ ਦਾ ਇੱਕ ਰੈਫਰੈਂਸ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।__builtins__ਨੂੰ ਓਵਰਰਾਈਡ ਕਰਨਾ ਉਪਲਬਧ ਨਾਵਾਂ ਨੂੰ ਸੀਮਤ ਕਰਨ ਜਾਂ ਬਦਲਣ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਕੋਈ ਸੁਰੱਖਿਆ ਵਿਧੀ ਨਹੀਂ ਹੈ: ਚਲਾਇਆ ਗਿਆ ਕੋਡ ਫਿਰ ਵੀ ਸਾਰੇ ਬਿਲਟਇਨਜ਼ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦਾ ਹੈ। ਜੇ locals ਮੈਪਿੰਗ ਨੂੰ ਛੱਡ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ ਤਾਂ ਇਹ ਆਪਣੇ ਆਪ globals ਡਿਕਸ਼ਨਰੀ 'ਤੇ ਵਾਪਸ ਆ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ ਦੋਵੇਂ ਮੈਪਿੰਗਾਂ ਨੂੰ ਛੱਡ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਸਰੋਤ ਉਸ ਵਾਤਾਵਰਣ ਵਿੱਚ globals ਅਤੇ locals ਨਾਲ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ ਜਿੱਥੇeval()ਨੂੰ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਨੋਟ, eval() ਨੂੰ ਘੇਰਨ ਵਾਲੇ ਵਾਤਾਵਰਣ ਵਿੱਚ nested scopes (ਗੈਰ-ਲੋਕਲ) ਤੱਕ ਸਿਰਫ਼ ਉਦੋਂ ਹੀ ਪਹੁੰਚ ਮਿਲੇਗੀ ਜੇਕਰ ਉਹ ਪਹਿਲਾਂ ਹੀ ਉਸ ਸਕੋਪ ਵਿੱਚ ਹਵਾਲਾ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ ਜੋeval()ਨੂੰ ਕਾਲ ਕਰ ਰਿਹਾ ਹੈ (ਜਿਵੇਂ ਕਿ ਇੱਕnonlocalਬਿਆਨ ਰਾਹੀਂ)।ਉਦਾਹਰਨ:
>>> x = 1 >>> eval('x+1') 2
>>> eval("1, 2") (1, 2)
ਇਹ ਫੰਕਸ਼ਨ ਮਨਮਾਨੇ ਕੋਡ ਆਬਜੈਕਟਾਂ (ਜਿਵੇਂ ਕਿ
compile()ਦੁਆਰਾ ਬਣਾਏ ਗਏ) ਨੂੰ ਚਲਾਉਣ ਲਈ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਸਟ੍ਰਿੰਗ ਦੀ ਬਜਾਏ ਇੱਕ ਕੋਡ ਆਬਜੈਕਟ ਦਿਓ। ਜੇ ਕੋਡ ਆਬਜੈਕਟ ਨੂੰ mode ਆਰਗੂਮੈਂਟ ਵਜੋਂ'exec'ਨਾਲ ਕੰਪਾਇਲ ਕੀਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂeval()ਦਾ ਵਾਪਸੀ ਮੁੱਲNoneਹੋਵੇਗਾ।ਸੰਕੇਤ: statements ਦੇ ਡਾਇਨਾਮਿਕ ਚਲਾਓ ਨੂੰ
exec()ਫੰਕਸ਼ਨ ਸਮਰਥਨ ਦਿੰਦਾ ਹੈ।globals()ਅਤੇlocals()ਫੰਕਸ਼ਨ ਕ੍ਰਮਵਾਰ ਮੌਜੂਦਾ ਗਲੋਬਲ ਅਤੇ ਲੋਕਲ ਡਿਕਸ਼ਨਰੀ ਵਾਪਸ ਕਰਦੇ ਹਨ, ਜੋeval()ਜਾਂexec()ਨਾਲ ਵਰਤੋਂ ਲਈ ਉਪਯੋਗੀ ਹੋ ਸਕਦੀਆਂ ਹਨ।ਜੇ ਦਿੱਤਾ ਗਿਆ source ਇੱਕ ਸਟ੍ਰਿੰਗ ਹੈ, ਤਾਂ ਇਸਦੇ ਸ਼ੁਰੂ ਅਤੇ ਅੰਤ ਵਾਲੇ ਖਾਲੀ ਸਥਾਨ ਅਤੇ ਟੈਬ ਹਟਾ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ।
ਕੇਵਲ literal ਮੁੱਲਾਂ ਵਾਲੀਆਂ ਅਭਿਵਿਅੰਜਨਾਵਾਂ ਦੀਆਂ ਸਟ੍ਰਿੰਗਾਂ ਦਾ ਮੁਲਾਂਕਣ ਕਰਨ ਲਈ
ast.literal_eval()ਵੇਖੋ।ਕੋਡ ਆਬਜੈਕਟ ਨੂੰ ਆਰਗੂਮੈਂਟ ਵਜੋਂ ਵਰਤਦੇ ਹੋਏ auditing event
execਉਠਾਇਆ ਜਾਂਦਾ ਹੈ। ਕੋਡ ਕੰਪਾਇਲੇਸ਼ਨ ਇਵੈਂਟ ਵੀ ਉਠਾਏ ਜਾ ਸਕਦੇ ਹਨ।Changed in version 3.13: globals ਅਤੇ locals ਆਰਗੂਮੈਂਟ ਹੁਣ keyword arguments ਵਜੋਂ ਵੀ ਦਿੱਤੇ ਜਾ ਸਕਦੇ ਹਨ।
Changed in version 3.13: ਮੂਲ locals ਨੇਮਸਪੇਸ ਦੇ ਅਰਥਾਂ ਨੂੰ
locals()builtin ਲਈ ਵਰਣਿਤ ਤਰੀਕੇ ਅਨੁਸਾਰ ਅਨੁਕੂਲਿਤ ਕੀਤਾ ਗਿਆ ਹੈ।Changed in version 3.15: globals ਹੁਣ ਇੱਕ
frozendictਵੀ ਹੋ ਸਕਦਾ ਹੈ।
- exec(source, /, globals=None, locals=None, *, closure=None)¶
Warning
ਇਹ ਫੰਕਸ਼ਨ ਮਨਮਾਨਾ ਕੋਡ ਚਲਾਉਂਦਾ ਹੈ। ਇਸਨੂੰ ਅਣਵਿਸ਼ਵਾਸਯੋਗ ਵਰਤੋਂਕਾਰ-ਪ੍ਰਦਾਨ ਕੀਤੇ ਇਨਪੁੱਟ ਨਾਲ ਕਾਲ ਕਰਨ ਨਾਲ ਸੁਰੱਖਿਆ ਸੰਬੰਧੀ ਕਮਜ਼ੋਰੀਆਂ ਪੈਦਾ ਹੋ ਸਕਦੀਆਂ ਹਨ।
ਇਹ ਫੰਕਸ਼ਨ ਪਾਈਥਨ ਕੋਡ ਦੀ ਡਾਇਨਾਮਿਕ ਚਲਾਉਣ ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੈ। source ਜਾਂ ਤਾਂ ਇੱਕ ਸਟਰਿੰਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਾਂ ਇੱਕ ਕੋਡ ਆਬਜੈਕਟ। ਜੇ ਇਹ ਸਟਰਿੰਗ ਹੈ, ਤਾਂ ਇਸਨੂੰ ਪਾਈਥਨ ਬਿਆਨਾਂ ਦੇ ਇੱਕ ਸੂਟ ਵਜੋਂ ਪਾਰਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਫਿਰ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ (ਜਦ ਤੱਕ ਕਿ ਕੋਈ ਸਿੰਟੈਕਸ ਗਲਤੀ ਨਾ ਹੋਵੇ)। [1] ਜੇ ਇਹ ਕੋਡ ਆਬਜੈਕਟ ਹੈ, ਤਾਂ ਇਹ ਸਿੱਧਾ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਸਾਰੇ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਚਲਾਇਆ ਗਿਆ ਕੋਡ ਫਾਈਲ ਇਨਪੁੱਟ ਵਜੋਂ ਵੈਧ ਹੋਣ ਦੀ ਉਮੀਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ (ਹਵਾਲਾ ਮੈਨੂਅਲ ਵਿੱਚ " File input " ਸੈਕਸ਼ਨ ਵੇਖੋ)। ਧਿਆਨ ਰੱਖੋ ਕਿ
nonlocal,yieldਅਤੇreturnਸਟੇਟਮੈਂਟਾਂ ਨੂੰ ਫੰਕਸ਼ਨ ਡੈਫੀਨੇਸ਼ਨਾਂ ਤੋਂ ਬਾਹਰ, ਇੱਥੋਂ ਤੱਕ ਕਿexec()ਫੰਕਸ਼ਨ ਨੂੰ ਦਿੱਤੇ ਗਏ ਕੋਡ ਦੇ ਸੰਦਰਭ ਵਿੱਚ ਵੀ, ਵਰਤਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਵਾਪਸੀ ਮੁੱਲNoneਹੈ।ਸਾਰੇ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਜੇ ਵਿਕਲਪਿਕ ਹਿੱਸੇ ਛੱਡ ਦਿੱਤੇ ਜਾਣ, ਤਾਂ ਕੋਡ ਮੌਜੂਦਾ ਸਕੋਪ ਵਿੱਚ ਚਲਾਇਆ ਜਾਂਦਾ ਹੈ। ਜੇ ਸਿਰਫ globals ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਇਹ ਇੱਕ ਡਿਕਸ਼ਨਰੀ (ਡਿਕਸ਼ਨਰੀ ਦੀ ਸਬਕਲਾਸ ਨਹੀਂ) ਹੋਣੀ ਚਾਹੀਦੀ, ਜੋ ਗਲੋਬਲ ਅਤੇ ਲੋਕਲ ਦੋਹਾਂ ਵੇਰੀਏਬਲਾਂ ਲਈ ਵਰਤੀ ਜਾਵੇਗੀ। ਜੇ globals ਅਤੇ locals ਦੋਵੇਂ ਦਿੱਤੇ ਗਏ ਹਨ, ਤਾਂ ਉਹ ਕ੍ਰਮਵਾਰ ਗਲੋਬਲ ਅਤੇ ਲੋਕਲ ਵੇਰੀਏਬਲਾਂ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਜੇ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ locals ਕੋਈ ਵੀ ਮੈਪਿੰਗ ਆਬਜੈਕਟ ਹੋ ਸਕਦਾ ਹੈ। ਯਾਦ ਰੱਖੋ ਕਿ ਮੋਡਿਊਲ ਪੱਧਰ 'ਤੇ, ਗਲੋਬਲ ਅਤੇ ਲੋਕਲ ਇੱਕੋ ਡਿਕਸ਼ਨਰੀ ਹੁੰਦੇ ਹਨ।
Note
ਜਦੋਂ
execਨੂੰ ਦੋ ਵੱਖ-ਵੱਖ ਵਸਤੂਆਂ globals ਅਤੇ locals ਵਜੋਂ ਮਿਲਦੀਆਂ ਹਨ, ਤਾਂ ਕੋਡ ਇਸ ਤਰ੍ਹਾਂ ਚਲਾਇਆ ਜਾਵੇਗਾ ਜਿਵੇਂ ਇਹ ਕਿਸੇ ਕਲਾਸ ਪਰਿਭਾਸ਼ਾ ਵਿੱਚ ਸ਼ਾਮਿਲ ਹੋਵੇ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਚਲਾਏ ਗਏ ਕੋਡ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਫੰਕਸ਼ਨਾਂ ਅਤੇ ਕਲਾਸਾਂ ਨੂੰ ਸਿਖਰਲੇ ਪੱਧਰ 'ਤੇ ਨਿਰਧਾਰਤ ਵੇਰੀਏਬਲਜ਼ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਮਿਲੇਗੀ (ਕਿਉਂਕਿ "ਸਿਖਰਲੇ ਪੱਧਰ" ਵੇਰੀਏਬਲਜ਼ ਨੂੰ ਕਲਾਸ ਪਰਿਭਾਸ਼ਾ ਵਿੱਚ ਕਲਾਸ ਵੇਰੀਏਬਲਜ਼ ਵਜੋਂ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ)।ਜੇ globals ਡਿਕਸ਼ਨਰੀ ਵਿੱਚ
__builtins__ਕੁੰਜੀ ਲਈ ਕੋਈ ਮੁੱਲ ਨਹੀਂ ਹੈ, ਤਾਂbuiltinsਮੋਡੀਊਲ ਦੀ ਡਿਕਸ਼ਨਰੀ ਦਾ ਹਵਾਲਾ ਉਸ ਕੁੰਜੀ ਹੇਠ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ।__builtins__ਨੂੰ ਓਵਰਰਾਈਡ ਕਰਕੇ ਉਪਲਬਧ ਨਾਂਵਾਂ ਨੂੰ ਸੀਮਿਤ ਜਾਂ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਪਰ ਇਹ ਸੁਰੱਖਿਆ ਮਕੈਨਿਜ਼ਮ ਨਹੀਂ ਹੈ; ਚਲਾਇਆ ਗਿਆ ਕੋਡ ਫਿਰ ਵੀ ਸਾਰੇ builtins ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦਾ ਹੈ।closure ਆਰਗੂਮੈਂਟ ਇੱਕ closure ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ — cellvars ਦਾ ਇੱਕ tuple। ਇਹ ਕੇਵਲ ਤਦ ਹੀ ਵੈਧ ਹੈ ਜਦੋਂ object ਇੱਕ ਐਸਾ code object ਹੋਵੇ ਜਿਸ ਵਿੱਚ free (closure) variables ਮੌਜੂਦ ਹੋਣ। tuple ਦੀ ਲੰਬਾਈ code object ਦੇ
co_freevarsਦੀ ਲੰਬਾਈ ਦੇ ਬਰਾਬਰ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।ਕੋਡ ਆਬਜੈਕਟ ਨੂੰ ਆਰਗੂਮੈਂਟ ਵਜੋਂ ਵਰਤਦੇ ਹੋਏ auditing event
execਉਠਾਇਆ ਜਾਂਦਾ ਹੈ। ਕੋਡ ਕੰਪਾਇਲੇਸ਼ਨ ਇਵੈਂਟ ਵੀ ਉਠਾਏ ਜਾ ਸਕਦੇ ਹਨ।Note
ਬਿਲਟ-ਇਨ ਫੰਕਸ਼ਨ
globals()ਅਤੇlocals()ਕ੍ਰਮਵਾਰ ਮੌਜੂਦਾ ਗਲੋਬਲ ਅਤੇ ਲੋਕਲ ਨੇਮਸਪੇਸ ਵਾਪਸ ਕਰਦੇ ਹਨ, ਜੋexec()ਦੇ ਦੂਜੇ ਅਤੇ ਤੀਜੇ ਆਰਗੂਮੈਂਟ ਵਜੋਂ ਵਰਤਣ ਲਈ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦੇ ਹਨ।Note
ਮੂਲ locals ਉਸੇ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਦਾ ਹੈ ਜਿਵੇਂ ਹੇਠਾਂ
locals()ਲਈ ਵਰਣਨ ਕੀਤਾ ਗਿਆ ਹੈ। ਜੇ ਤੁਸੀਂexec()ਦੇ ਵਾਪਸ ਆਉਣ ਤੋਂ ਬਾਅਦ locals ਉੱਤੇ ਕੋਡ ਦੇ ਪ੍ਰਭਾਵ ਦੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਇੱਕ ਸਪਸ਼ਟ locals ਡਿਕਸ਼ਨਰੀ ਦਿਓ।Changed in version 3.11: closure ਪੈਰਾਮੀਟਰ ਜੋੜਿਆ ਗਿਆ।
Changed in version 3.13: globals ਅਤੇ locals ਆਰਗੂਮੈਂਟ ਹੁਣ keyword arguments ਵਜੋਂ ਵੀ ਦਿੱਤੇ ਜਾ ਸਕਦੇ ਹਨ।
Changed in version 3.13: ਮੂਲ locals ਨੇਮਸਪੇਸ ਦੇ ਅਰਥਾਂ ਨੂੰ
locals()builtin ਲਈ ਵਰਣਿਤ ਤਰੀਕੇ ਅਨੁਸਾਰ ਅਨੁਕੂਲਿਤ ਕੀਤਾ ਗਿਆ ਹੈ।Changed in version 3.15: globals ਹੁਣ ਇੱਕ
frozendictਵੀ ਹੋ ਸਕਦਾ ਹੈ।
- filter(function, iterable, /)¶
ਉਹਨਾਂ ਤੱਤਾਂ ਤੋਂ ਇੱਕ ਇਟਰੇਟਰ ਬਣਾਓ ਜੋ iterable ਦੇ ਉਹਨਾਂ ਤੱਤਾਂ ਲਈ function ਸਹੀ ਹੈ। iterable ਕਿਸੇ ਵੀ ਕ੍ਰਮ, ਇਟਰੇਸ਼ਨ ਸਹਿਯੋਗੀ ਕੰਟੇਨਰ, ਜਾਂ ਇਟਰੇਟਰ ਹੋ ਸਕਦਾ ਹੈ। ਜੇ function
Noneਹੈ, ਤਾਂ ਪਛਾਣ ਫੰਕਸ਼ਨ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ, ਅਰਥਾਤ iterable ਦੇ ਉਹ ਸਾਰੇ ਤੱਤ ਜੋ false ਹਨ, ਹਟਾ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ।ਧਿਆਨ ਦਿਓ ਕਿ
filter(function, iterable)generator expression(item for item in iterable if function(item))ਦੇ ਬਰਾਬਰ ਹੈ ਜੇ functionNoneਨਾ ਹੋਵੇ, ਅਤੇ(item for item in iterable if item)ਦੇ ਬਰਾਬਰ ਹੈ ਜੇ functionNoneਹੋਵੇ।ਉਸ ਪੂਰਕ ਫੰਕਸ਼ਨ ਲਈ
itertools.filterfalse()ਵੇਖੋ ਜੋ iterable ਦੇ ਉਹ ਤੱਤ ਵਾਪਸ ਕਰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਲਈ function false ਹੁੰਦਾ ਹੈ।
- class float(number=0.0, /)¶
- class float(string, /)
ਕਿਸੇ ਸੰਖਿਆ ਜਾਂ ਸਟ੍ਰਿੰਗ ਤੋਂ ਬਣਾਈ ਗਈ floating-point ਸੰਖਿਆ ਵਾਪਸ ਕਰੋ।
ਉਦਾਹਰਨਾਂ:
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
ਜੇ ਆਰਗੂਮੈਂਟ ਇੱਕ ਸਟ੍ਰਿੰਗ ਹੈ, ਤਾਂ ਇਸ ਵਿੱਚ ਇੱਕ ਦਸ਼ਮਲਵ ਸੰਖਿਆ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ, ਜਿਸ ਤੋਂ ਪਹਿਲਾਂ ਚਿੰਨ੍ਹ ਹੋ ਸਕਦਾ ਹੈ ਅਤੇ ਜਿਸ ਵਿੱਚ ਖਾਲੀ ਥਾਂਵਾਂ ਵੀ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਵਿਕਲਪਿਕ ਚਿੰਨ੍ਹ
'+'ਜਾਂ'-'ਹੋ ਸਕਦਾ ਹੈ;'+'ਚਿੰਨ੍ਹ ਨਤੀਜੇ ਦੇ ਮੁੱਲ ਉੱਤੇ ਕੋਈ ਅਸਰ ਨਹੀਂ ਪਾਂਦਾ। ਆਰਗੂਮੈਂਟ ਇੱਕ NaN (ਸੰਖਿਆ ਨਹੀਂ) ਜਾਂ ਧਨਾਤਮਕ/ਰਿਣਾਤਮਕ ਅਨੰਤਤਾ ਦਰਸਾਉਣ ਵਾਲੀ ਸਟ੍ਰਿੰਗ ਵੀ ਹੋ ਸਕਦੀ ਹੈ। ਹੋਰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ, ਅੱਗੇ ਅਤੇ ਪਿੱਛੇ ਦੀਆਂ ਖਾਲੀ ਥਾਂਵਾਂ ਹਟਾਉਣ ਤੋਂ ਬਾਅਦ ਇਨਪੁੱਟ ਨੂੰ ਹੇਠਾਂ ਦਿੱਤੇ ਵਿਆਕਰਣ ਦੇfloatvalueਨਿਯਮ ਦਾ ਪਾਲਣ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ:sign: "+" | "-" infinity: "Infinity" | "inf" nan: "nan" digit: <a Unicode decimal digit, i.e. characters in Unicode general category Nd> digitpart:
digit(["_"]digit)* number: [digitpart] "."digitpart|digitpart["."] exponent: ("e" | "E") [sign]digitpartfloatnumber:number[exponent] absfloatvalue:floatnumber|infinity|nanfloatvalue: [sign]absfloatvalueਅੱਖਰਾਂ ਦਾ ਵੱਡਾ ਜਾਂ ਛੋਟਾ ਹੋਣਾ ਮਹੱਤਵਪੂਰਨ ਨਹੀਂ ਹੈ, ਇਸ ਲਈ ਉਦਾਹਰਨ ਵਜੋਂ "inf", "Inf", "INFINITY" ਅਤੇ "iNfINity" ਸਭ positive infinity ਲਈ ਸਵੀਕਾਰਯੋਗ ਹਨ।
ਨਹੀਂ ਤਾਂ, ਜੇ ਆਰਗੂਮੈਂਟ ਇੱਕ ਪੂਰਨ ਅੰਕ ਜਾਂ floating-point ਸੰਖਿਆ ਹੈ, ਤਾਂ ਉਸੇ ਮੁੱਲ ਵਾਲੀ floating-point ਸੰਖਿਆ (Python ਦੀ floating-point ਸ਼ੁੱਧਤਾ ਦੇ ਅੰਦਰ) ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਆਰਗੂਮੈਂਟ Python float ਦੀ ਸੀਮਾ ਤੋਂ ਬਾਹਰ ਹੋਵੇ, ਤਾਂ
OverflowErrorਉਠਾਈ ਜਾਵੇਗੀ।ਆਮ Python ਆਬਜੈਕਟ
xਲਈ,float(x)x.__float__()ਨੂੰ ਸੌਂਪਿਆ ਜਾਂਦਾ ਹੈ। ਜੇ__float__()ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹੈ, ਤਾਂ ਇਹ__index__()ਉੱਤੇ ਵਾਪਸ ਜਾਂਦਾ ਹੈ।float.from_number()ਵੀ ਵੇਖੋ, ਜੋ ਕੇਵਲ ਇੱਕ ਸੰਖਿਆਤਮਕ ਆਰਗੂਮੈਂਟ ਸਵੀਕਾਰ ਕਰਦਾ ਹੈ।ਜੇ ਕੋਈ ਆਰਗੂਮੈਂਟ ਨਾ ਦਿੱਤਾ ਜਾਵੇ, ਤਾਂ
0.0ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।float ਕਿਸਮ ਦਾ ਵੇਰਵਾ Numeric Types --- int, float, complex ਵਿੱਚ ਦਿੱਤਾ ਗਿਆ ਹੈ।
Changed in version 3.6: ਕੋਡ ਲਿਟਰਲਾਂ ਵਾਂਗ ਅੰਕਾਂ ਨੂੰ underscores ਨਾਲ ਸਮੂਹਬੱਧ ਕਰਨਾ ਮਨਜ਼ੂਰ ਹੈ।
Changed in version 3.7: ਹੁਣ ਇਹ ਪੈਰਾਮੀਟਰ ਕੇਵਲ positional ਰੂਪ ਵਿੱਚ ਹੀ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।
Changed in version 3.8: ਜੇ
__float__()ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹੈ, ਤਾਂ__index__()ਉੱਤੇ ਵਾਪਸ ਜਾਂਦਾ ਹੈ।
- format(value, format_spec='', /)¶
value ਨੂੰ format_spec ਦੁਆਰਾ ਨਿਯੰਤਰਿਤ ਇੱਕ "ਫਾਰਮੈਟ ਕੀਤੀ" ਪੇਸ਼ਕਾਰੀ ਵਿੱਚ ਬਦਲੋ। format_spec ਦੀ ਵਿਆਖਿਆ value ਦੇ ਪ੍ਰਕਾਰ ਉੱਤੇ ਨਿਰਭਰ ਕਰੇਗੀ; ਹਾਲਾਂਕਿ, ਇੱਕ ਮਿਆਰੀ ਫਾਰਮੈਟਿੰਗ ਸੰਟੈਕਸ ਹੈ ਜੋ ਜ਼ਿਆਦਾਤਰ ਬਿਲਟ-ਇਨ ਕਿਸਮਾਂ ਵੱਲੋਂ ਵਰਤੀ ਜਾਂਦੀ ਹੈ: Format specification mini-language।
ਮੂਲ format_spec ਇੱਕ ਖਾਲੀ ਸਟ੍ਰਿੰਗ ਹੈ ਜੋ ਆਮ ਤੌਰ 'ਤੇ
str(value)ਨੂੰ ਕਾਲ ਕਰਨ ਦੇ ਬਰਾਬਰ ਨਤੀਜਾ ਦਿੰਦੀ ਹੈ।format(value, format_spec)ਕਾਲ ਨੂੰtype(value).__format__(value, format_spec)ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ, ਜੋ ਮੁੱਲ ਦੀ__format__()ਵਿਧੀ ਦੀ ਖੋਜ ਕਰਦੇ ਸਮੇਂ instance dictionary ਨੂੰ ਬਾਈਪਾਸ ਕਰਦਾ ਹੈ। ਜੇ ਵਿਧੀ ਖੋਜobjectਤੱਕ ਪਹੁੰਚ ਜਾਵੇ ਅਤੇ format_spec ਖਾਲੀ ਨਾ ਹੋਵੇ, ਜਾਂ format_spec ਜਾਂ ਵਾਪਸੀ ਮੁੱਲ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਸਟ੍ਰਿੰਗ ਨਾ ਹੋਵੇ, ਤਾਂTypeErrorਉਠਾਈ ਜਾਂਦੀ ਹੈ।Changed in version 3.4: ਜੇ format_spec ਖਾਲੀ ਸਟ੍ਰਿੰਗ ਨਹੀਂ ਹੈ, ਤਾਂ
object().__format__(format_spec)TypeErrorਉਠਾਉਂਦਾ ਹੈ।
- class frozendict(**kwargs)
- class frozendict(mapping, /, **kwargs)
- class frozendict(iterable, /, **kwargs)
ਇੱਕ ਨਵੀਂ frozen dictionary ਬਣਾਓ।
frozendictobject ਇੱਕ built-in class ਹੈ। ਇਸ class ਬਾਰੇ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਲਈ Mapping types --- dict, frozendict ਵੀ ਵੇਖੋ।ਹੋਰ ਕੰਟੇਨਰਾਂ ਲਈ ਬਿਲਟ-ਇਨ
dict,list,set,tupleਕਲਾਸਾਂ ਅਤੇcollectionsਮੋਡੀਊਲ ਵੇਖੋ।Added in version 3.15.
- class frozenset(iterable=(), /)
iterable ਤੋਂ ਲਏ ਗਏ ਤੱਤਾਂ ਨਾਲ, ਜਾਂ ਬਿਨਾਂ ਉਹਨਾਂ ਦੇ, ਇੱਕ ਨਵਾਂ
frozensetobject ਵਾਪਸ ਕਰੋ।frozensetਇੱਕ built-in class ਹੈ। ਇਸ class ਬਾਰੇ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਲਈ Set Types --- set, frozenset ਵੀ ਵੇਖੋ।ਹੋਰ ਕੰਟੇਨਰਾਂ ਲਈ ਬਿਲਟ-ਇਨ
set,list,tuple,dictਕਲਾਸਾਂ ਅਤੇcollectionsਮੋਡੀਊਲ ਵੇਖੋ।
- getattr(object, name, /)¶
- getattr(object, name, default, /)
object ਦੇ ਦਿੱਤੇ ਗਏ ਨਾਮ ਵਾਲੇ ਐਟ੍ਰਿਬਿਊਟ ਦਾ ਮੁੱਲ ਵਾਪਸ ਕਰੋ। name ਇੱਕ ਸਟ੍ਰਿੰਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਸਟ੍ਰਿੰਗ ਆਬਜੈਕਟ ਦੇ ਕਿਸੇ ਐਟ੍ਰਿਬਿਊਟ ਦਾ ਨਾਮ ਹੈ, ਤਾਂ ਨਤੀਜਾ ਉਸ ਐਟ੍ਰਿਬਿਊਟ ਦਾ ਮੁੱਲ ਹੋਵੇਗਾ। ਉਦਾਹਰਨ ਲਈ,
getattr(x, 'foobar')ਦਾ ਅਰਥx.foobarਦੇ ਬਰਾਬਰ ਹੈ। ਜੇ ਦਿੱਤਾ ਐਟ੍ਰਿਬਿਊਟ ਮੌਜੂਦ ਨਹੀਂ ਹੈ, ਤਾਂ default ਦਿੱਤਾ ਹੋਣ 'ਤੇ ਉਹ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਨਹੀਂ ਤਾਂAttributeErrorਉਠਾਈ ਜਾਂਦੀ ਹੈ। name ਦਾ Python identifier ਹੋਣਾ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ (ਵੇਖੋsetattr())।Note
ਕਿਉਂਕਿ private name mangling ਕੰਪਾਈਲ ਸਮੇਂ ਹੁੰਦੀ ਹੈ, ਇਸ ਲਈ ਕਿਸੇ private ਐਟ੍ਰਿਬਿਊਟ (ਦੋ ਅਗਲੇ underscore ਵਾਲੇ ਐਟ੍ਰਿਬਿਊਟ) ਨੂੰ
getattr()ਨਾਲ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਉਸਦਾ ਨਾਮ ਹੱਥੋਂ ਮੰਗਲ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।
- globals()¶
ਮੌਜੂਦਾ ਮੋਡੀਊਲ namespace ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਾਲੀ dictionary ਵਾਪਸ ਕਰੋ। ਫੰਕਸ਼ਨਾਂ ਦੇ ਅੰਦਰਲੇ ਕੋਡ ਲਈ, ਇਹ ਫੰਕਸ਼ਨ ਦੀ ਪਰਿਭਾਸ਼ਾ ਸਮੇਂ ਸੈੱਟ ਹੁੰਦੀ ਹੈ ਅਤੇ ਫੰਕਸ਼ਨ ਨੂੰ ਕਿਤੇ ਵੀ ਕਾਲ ਕੀਤਾ ਜਾਵੇ, ਇਹ ਇੱਕੋ ਹੀ ਰਹਿੰਦੀ ਹੈ।
- hasattr(object, name, /)¶
ਆਰਗੂਮੈਂਟ ਇੱਕ ਆਬਜੈਕਟ ਅਤੇ ਇੱਕ ਸਟ੍ਰਿੰਗ ਹੁੰਦੇ ਹਨ। ਜੇ ਸਟ੍ਰਿੰਗ ਆਬਜੈਕਟ ਦੇ ਕਿਸੇ ਐਟ੍ਰਿਬਿਊਟ ਦਾ ਨਾਮ ਹੈ, ਤਾਂ ਨਤੀਜਾ
Trueਹੁੰਦਾ ਹੈ, ਨਹੀਂ ਤਾਂFalse। (ਇਹgetattr(object, name)ਨੂੰ ਕਾਲ ਕਰਕੇ ਅਤੇ ਇਹ ਦੇਖ ਕੇ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿ ਕੀ ਉਹAttributeErrorਉਠਾਉਂਦਾ ਹੈ ਜਾਂ ਨਹੀਂ।)
- hash(object, /)¶
ਆਬਜੈਕਟ ਦਾ hash ਮੁੱਲ ਵਾਪਸ ਕਰੋ (ਜੇ ਇਸਦਾ ਕੋਈ hash ਮੁੱਲ ਹੈ)। Hash ਮੁੱਲ ਪੂਰਨ ਅੰਕ ਹੁੰਦੇ ਹਨ। ਇਹ dictionary lookup ਦੌਰਾਨ keys ਦੀ ਤੇਜ਼ ਤੁਲਨਾ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਜੋ ਸੰਖਿਆਤਮਕ ਮੁੱਲ ਇੱਕੋ ਜਿਹੇ ਮੰਨੇ ਜਾਂਦੇ ਹਨ, ਉਨ੍ਹਾਂ ਦਾ hash ਮੁੱਲ ਵੀ ਇੱਕੋ ਹੁੰਦਾ ਹੈ (ਭਾਵੇਂ ਉਹ ਵੱਖ-ਵੱਖ ਕਿਸਮਾਂ ਦੇ ਹੋਣ, ਜਿਵੇਂ 1 ਅਤੇ 1.0)।
Note
ਜਿਨ੍ਹਾਂ ਆਬਜੈਕਟਾਂ ਵਿੱਚ custom
__hash__()ਵਿਧੀਆਂ ਹਨ, ਉਨ੍ਹਾਂ ਲਈ ਧਿਆਨ ਦਿਓ ਕਿhash()ਵਾਪਸੀ ਮੁੱਲ ਨੂੰ host ਮਸ਼ੀਨ ਦੀ bit width ਦੇ ਅਧਾਰ 'ਤੇ ਕੱਟ ਦਿੰਦਾ ਹੈ।
- help()¶
- help(request)
ਬਿਲਟ-ਇਨ help ਸਿਸਟਮ ਨੂੰ ਚਲਾਓ। (ਇਹ ਫੰਕਸ਼ਨ ਇੰਟਰਐਕਟਿਵ ਵਰਤੋਂ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ।) ਜੇ ਕੋਈ ਆਰਗੂਮੈਂਟ ਨਹੀਂ ਦਿੱਤਾ ਜਾਂਦਾ, ਤਾਂ interpreter console ਉੱਤੇ interactive help system ਸ਼ੁਰੂ ਹੋ ਜਾਂਦਾ ਹੈ। ਜੇ ਆਰਗੂਮੈਂਟ ਇੱਕ ਸਟ੍ਰਿੰਗ ਹੈ, ਤਾਂ ਉਸਨੂੰ module, function, class, method, keyword ਜਾਂ documentation topic ਦੇ ਨਾਮ ਵਜੋਂ ਲੱਭਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ console ਉੱਤੇ ਇੱਕ help page ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ। ਜੇ ਆਰਗੂਮੈਂਟ ਕਿਸੇ ਹੋਰ ਕਿਸਮ ਦਾ ਆਬਜੈਕਟ ਹੈ, ਤਾਂ ਉਸ ਆਬਜੈਕਟ ਲਈ help page ਤਿਆਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਧਿਆਨ ਦਿਓ ਕਿ ਜਦੋਂ
help()ਵਰਤਦੇ ਸਮੇਂ ਕਿਸੇ ਫੰਕਸ਼ਨ ਦੀ parameter ਸੂਚੀ ਵਿੱਚ slash (/) ਦਿਖਾਈ ਦੇਵੇ, ਤਾਂ ਇਸਦਾ ਅਰਥ ਹੈ ਕਿ slash ਤੋਂ ਪਹਿਲਾਂ ਵਾਲੇ parameters ਸਿਰਫ positional ਹਨ। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ the FAQ entry on positional-only parameters ਵੇਖੋ।ਇਹ ਫੰਕਸ਼ਨ
siteਮੋਡੀਊਲ ਦੁਆਰਾ built-in namespace ਵਿੱਚ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ।
- hex(integer, /)¶
ਇੱਕ ਪੂਰਨ ਅੰਕ ਨੂੰ ''0x'' ਪ੍ਰੀਫਿਕਸ ਵਾਲੀ lowercase hexadecimal ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਬਦਲੋ। ਜੇ integer ਇੱਕ Python
intਆਬਜੈਕਟ ਨਹੀਂ ਹੈ, ਤਾਂ ਇਸ ਵਿੱਚ ਅਜਿਹੀ__index__()ਵਿਧੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ ਜੋ ਇੱਕ ਪੂਰਨ ਅੰਕ ਵਾਪਸ ਕਰੇ। ਕੁਝ ਉਦਾਹਰਨਾਂ:>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
ਜੇ ਤੁਸੀਂ ਕਿਸੇ ਪੂਰਨ ਅੰਕ ਨੂੰ ਪ੍ਰੀਫਿਕਸ ਸਮੇਤ ਜਾਂ ਬਿਨਾਂ ਪ੍ਰੀਫਿਕਸ ਦੇ uppercase ਜਾਂ lowercase hexadecimal ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕਿਸੇ ਵੀ ਤਰੀਕੇ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ:
>>> '%#x' % 255, '%x' % 255, '%X' % 255 ('0xff', 'ff', 'FF') >>> format(255, '#x'), format(255, 'x'), format(255, 'X') ('0xff', 'ff', 'FF') >>> f'{255:#x}', f'{255:x}', f'{255:X}' ('0xff', 'ff', 'FF')
ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ
format()ਵੀ ਵੇਖੋ।hexadecimal ਸਟ੍ਰਿੰਗ ਨੂੰ base 16 ਦੀ ਵਰਤੋਂ ਨਾਲ ਪੂਰਨ ਅੰਕ ਵਿੱਚ ਬਦਲਣ ਲਈ
int()ਵੀ ਵੇਖੋ।Note
ਕਿਸੇ float ਦੀ hexadecimal ਸਟ੍ਰਿੰਗ ਨੁਮਾਇੰਦਗੀ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ
float.hex()ਵਿਧੀ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- id(object, /)¶
ਕਿਸੇ ਆਬਜੈਕਟ ਦੀ "identity" ਵਾਪਸ ਕਰੋ। ਇਹ ਇੱਕ ਪੂਰਨ ਅੰਕ ਹੁੰਦਾ ਹੈ ਜੋ ਆਬਜੈਕਟ ਦੀ ਪੂਰੀ ਉਮਰ ਦੌਰਾਨ ਵਿਲੱਖਣ ਅਤੇ ਅਪਰਿਵਰਤਿਤ ਹੋਣ ਦੀ ਗਾਰੰਟੀ ਰੱਖਦਾ ਹੈ। ਦੋ ਆਬਜੈਕਟ ਜਿਨ੍ਹਾਂ ਦੀਆਂ lifetimes ਆਪਸ ਵਿੱਚ ਨਹੀਂ ਮਿਲਦੀਆਂ, ਉਹਨਾਂ ਦਾ
id()ਮੁੱਲ ਇੱਕੋ ਜਿਹਾ ਹੋ ਸਕਦਾ ਹੈ।ਇਹ memory ਵਿੱਚ ਆਬਜੈਕਟ ਦਾ ਪਤਾ ਹੁੰਦਾ ਹੈ।
idਆਰਗੂਮੈਂਟ ਨਾਲ auditing eventbuiltins.idਉਠਾਉਂਦਾ ਹੈ।
- input()¶
- input(prompt, /)
ਜੇ prompt ਆਰਗੂਮੈਂਟ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਇਸਨੂੰ standard output ਉੱਤੇ ਅੰਤ ਵਿੱਚ newline ਤੋਂ ਬਿਨਾਂ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ। ਫਿਰ ਫੰਕਸ਼ਨ input ਵਿੱਚੋਂ ਇੱਕ ਲਾਈਨ ਪੜ੍ਹਦਾ ਹੈ, ਇਸਨੂੰ ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਬਦਲਦਾ ਹੈ (ਅੰਤਲੀ newline ਹਟਾ ਕੇ) ਅਤੇ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜਦੋਂ EOF ਪੜ੍ਹਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ
EOFErrorਉਠਾਈ ਜਾਂਦੀ ਹੈ। ਉਦਾਹਰਨ:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
ਜੇ
readlineਮੋਡੀਊਲ ਲੋਡ ਕੀਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂinput()ਲਾਈਨ ਸੰਪਾਦਨ ਅਤੇ history ਦੀਆਂ ਉੱਨਤ ਸੁਵਿਧਾਵਾਂ ਪ੍ਰਦਾਨ ਕਰਨ ਲਈ ਇਸਦੀ ਵਰਤੋਂ ਕਰੇਗਾ।input ਪੜ੍ਹਨ ਤੋਂ ਪਹਿਲਾਂ
promptਆਰਗੂਮੈਂਟ ਨਾਲ auditing eventbuiltins.inputਉਠਾਉਂਦਾ ਹੈinput ਸਫਲਤਾਪੂਰਵਕ ਪੜ੍ਹਨ ਤੋਂ ਬਾਅਦ ਨਤੀਜੇ ਸਮੇਤ auditing event
builtins.input/resultਉਠਾਉਂਦਾ ਹੈ।
- class int(number=0, /)¶
- class int(string, /, base=10)
ਕਿਸੇ ਸੰਖਿਆ ਜਾਂ ਸਟ੍ਰਿੰਗ ਤੋਂ ਬਣਾਇਆ ਗਿਆ ਇੱਕ ਪੂਰਨ ਅੰਕ ਆਬਜੈਕਟ ਵਾਪਸ ਕਰੋ, ਜਾਂ ਜੇ ਕੋਈ ਆਰਗੂਮੈਂਟ ਨਾ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ ਤਾਂ
0ਵਾਪਸ ਕਰੋ।ਉਦਾਹਰਨਾਂ:
>>> int(123.45) 123 >>> int('123') 123 >>> int(' -12_345\n') -12345 >>> int('FACE', 16) 64206 >>> int('0xface', 0) 64206 >>> int('01110011', base=2) 115
ਜੇ ਆਰਗੂਮੈਂਟ
__int__()ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਤਾਂint(x)x.__int__()ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜੇ ਆਰਗੂਮੈਂਟ__index__()ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹx.__index__()ਵਾਪਸ ਕਰਦਾ ਹੈ। Floating-point ਸੰਖਿਆਵਾਂ ਲਈ, ਇਹ ਦਸ਼ਮਲਵ ਭਾਗ ਕੱਟ ਕੇ ਸਿਫ਼ਰ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ।ਜੇ ਆਰਗੂਮੈਂਟ ਕੋਈ ਸੰਖਿਆ ਨਹੀਂ ਹੈ ਜਾਂ base ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤਾਂ ਇਹ ਇੱਕ ਸਟ੍ਰਿੰਗ,
bytes, ਜਾਂbytearrayਇੰਸਟੈਂਸ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ radix base ਵਿੱਚ ਇੱਕ ਪੂਰਨ ਅੰਕ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੋਵੇ। ਚੋਣਵਾਂ ਤੌਰ 'ਤੇ, ਸਟ੍ਰਿੰਗ ਦੇ ਅੱਗੇ+ਜਾਂ-ਹੋ ਸਕਦਾ ਹੈ (ਵਿਚਕਾਰ ਕੋਈ ਖਾਲੀ ਥਾਂ ਨਹੀਂ), ਸ਼ੁਰੂਆਤੀ ਸਿਫ਼ਰ ਹੋ ਸਕਦੇ ਹਨ, whitespace ਨਾਲ ਘਿਰੀ ਹੋ ਸਕਦੀ ਹੈ, ਅਤੇ ਅੰਕਾਂ ਦੇ ਵਿਚਕਾਰ ਇਕੱਲੇ underscore ਹੋ ਸਕਦੇ ਹਨ।base-n ਪੂਰਨ ਅੰਕ ਸਤਰ ਵਿੱਚ ਅੰਕ ਹੁੰਦੇ ਹਨ, ਜਿਨ੍ਹਾਂ ਵਿੱਚੋਂ ਹਰ ਇੱਕ 0 ਤੋਂ n-1 ਤੱਕ ਦੀ ਇੱਕ ਕੀਮਤ ਦਰਸਾਉਂਦਾ ਹੈ। 0--9 ਵਾਲੀਆਂ ਕੀਮਤਾਂ ਕਿਸੇ ਵੀ Unicode decimal digit ਨਾਲ ਦਰਸਾਈਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। 10--35 ਵਾਲੀਆਂ ਕੀਮਤਾਂ ਨੂੰ
aਤੋਂz(ਜਾਂAਤੋਂZ) ਨਾਲ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ। ਡਿਫਾਲਟ base 10 ਹੈ। ਮਨਜ਼ੂਰਸ਼ੁਦਾ bases 0 ਅਤੇ 2--36 ਹਨ। Base-2, -8 ਅਤੇ -16 ਸਤਰਾਂ ਨੂੰ ਕੋਡ ਵਿੱਚ integer literals ਦੀ ਤਰ੍ਹਾਂ ਚੋਣਵਾਂ ਤੌਰ 'ਤੇ0b/0B,0o/0Oਜਾਂ0x/0Xਨਾਲ ਸ਼ੁਰੂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। Base 0 ਲਈ, ਸਤਰ ਦੀ ਵਿਆਖਿਆ ਕੋਡ ਵਿੱਚ integer literal ਵਾਂਗ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿੱਥੇ ਅਸਲ base prefix ਦੇ ਅਧਾਰ 'ਤੇ 2, 8, 10 ਜਾਂ 16 ਹੁੰਦਾ ਹੈ। Base 0 ਸ਼ੁਰੂਆਤੀ zeros ਨੂੰ ਵੀ ਮਨਜ਼ੂਰ ਨਹੀਂ ਕਰਦਾ:int('010', 0)ਵੈਧ ਨਹੀਂ ਹੈ, ਜਦਕਿint('010')ਅਤੇint('010', 8)ਵੈਧ ਹਨ।ਪੂਰਨ ਅੰਕ ਕਿਸਮ ਦਾ ਵੇਰਵਾ Numeric Types --- int, float, complex ਵਿੱਚ ਦਿੱਤਾ ਗਿਆ ਹੈ।
Changed in version 3.4: ਜੇ base
intਦਾ ਇੰਸਟੈਂਸ ਨਹੀਂ ਹੈ ਅਤੇ base ਆਬਜੈਕਟ ਕੋਲbase.__index__ਮੈਥਡ ਹੈ, ਤਾਂ ਬੇਸ ਲਈ ਇਕ ਇੰਟਿਜਰ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਉਹ ਮੈਥਡ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਪਿਛਲੇ ਵਰਜਨਾਂ ਨੇbase.__int__ਦੀ ਵਰਤੋਂbase.__index__ਦੀ ਥਾਂ ਕੀਤੀ ਸੀ।Changed in version 3.6: ਕੋਡ ਲਿਟਰਲਾਂ ਵਾਂਗ ਅੰਕਾਂ ਨੂੰ underscores ਨਾਲ ਸਮੂਹਬੱਧ ਕਰਨਾ ਮਨਜ਼ੂਰ ਹੈ।
Changed in version 3.7: ਪਹਿਲਾ parameter ਹੁਣ ਸਿਰਫ positional ਹੈ।
Changed in version 3.8: ਜੇ
__int__()ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹੈ, ਤਾਂ__index__()ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।Changed in version 3.11: ਸੇਵਾ-ਇਨਕਾਰ ਹਮਲਿਆਂ ਤੋਂ ਬਚਾਅ ਲਈ
intਸਟ੍ਰਿੰਗ ਇਨਪੁੱਟਾਂ ਅਤੇ ਸਟ੍ਰਿੰਗ ਨੁਮਾਇੰਦਗੀਆਂ ਦੀ ਲੰਬਾਈ ਸੀਮਿਤ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਜਦੋਂ ਕਿਸੇ ਸਟ੍ਰਿੰਗ ਨੂੰintਵਿੱਚ ਬਦਲਦੇ ਸਮੇਂ ਜਾਂ ਕਿਸੇintਨੂੰ ਸਟ੍ਰਿੰਗ ਵਿੱਚ ਬਦਲਦੇ ਸਮੇਂ ਇਹ ਸੀਮਾ ਪਾਰ ਹੋ ਜਾਵੇ, ਤਾਂValueErrorਉਠਾਈ ਜਾਂਦੀ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ integer string conversion length limitation ਵੇਖੋ।Changed in version 3.14:
int()ਹੁਣ__trunc__()ਵਿਧੀ ਨੂੰ delegate ਨਹੀਂ ਕਰਦਾ।
- isinstance(object, classinfo, /)¶
ਜੇ object ਆਰਗੂਮੈਂਟ classinfo ਆਰਗੂਮੈਂਟ ਦੀ ਕਿਸੇ ਇੰਸਟੈਂਸ ਜਾਂ ਇਸ ਦੀ (ਸਿੱਧੀ, ਅਸਿੱਧੀ ਜਾਂ virtual) ਉਪ-ਕਲਾਸ ਦੀ ਇੰਸਟੈਂਸ ਹੈ, ਤਾਂ
Trueਵਾਪਸ ਕਰੋ। ਜੇ object ਦਿੱਤੇ ਗਏ ਕਿਸਮ ਦਾ ਆਬਜੈਕਟ ਨਹੀਂ ਹੈ, ਤਾਂ ਫੰਕਸ਼ਨ ਹਮੇਸ਼ਾਂFalseਵਾਪਸ ਕਰਦਾ ਹੈ। ਜੇ classinfo ਕਿਸਮ ਦੇ ਆਬਜੈਕਟਾਂ ਦਾ ਇੱਕ ਟੂਪਲ (ਜਾਂ ਪੁਨਰ-ਸੰਦਰਭ ਵਿੱਚ ਹੋਰ ਐਸੇ ਟੂਪਲ) ਜਾਂ ਕਈ ਕਿਸਮਾਂ ਦਾ ਇੱਕ Union Type ਹੈ, ਤਾਂ ਜੇ object ਕਿਸੇ ਵੀ ਕਿਸਮ ਦਾ ਇੰਸਟੈਂਸ ਹੈ, ਤਾਂTrueਵਾਪਸ ਕਰੋ। ਜੇ classinfo ਕਿਸੇ ਟਾਈਪ ਜਾਂ ਟਾਈਪਾਂ ਦੇ ਟਿਊਪਲ ਜਾਂ ਅਜਿਹੇ ਹੋਰ ਟਿਊਪਲ ਨਹੀਂ ਹੈ, ਤਾਂ ਇੱਕTypeErrorਐਕਸੈਪਸ਼ਨ ਉਠਾਈ ਜਾਂਦੀ ਹੈ। ਜੇ ਪਹਿਲਾਂ ਕੀਤੀ ਜਾਂਚ ਸਫਲ ਰਹਿੰਦੀ ਹੈ, ਤਾਂ ਗਲਤ ਟਾਈਪ ਲਈTypeErrorਨਹੀਂ ਉਠਾਈ ਜਾ ਸਕਦੀ।Changed in version 3.10: classinfo ਇੱਕ Union Type ਹੋ ਸਕਦਾ ਹੈ।
- issubclass(cls, classinfo, /)¶
ਜੇ cls, classinfo ਦੀ (ਸਿੱਧੀ, ਅਸਿੱਧੀ ਜਾਂ virtual) subclass ਹੈ, ਤਾਂ
Trueਵਾਪਸ ਕਰੋ। ਇੱਕ class ਨੂੰ ਆਪਣੀ ਆਪ ਦੀ subclass ਵੀ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ। classinfo class objects ਦਾ tuple (ਜਾਂ recursive ਤੌਰ 'ਤੇ ਅਜਿਹੇ ਹੋਰ tuples) ਜਾਂ Union Type ਹੋ ਸਕਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ ਜੇ cls, classinfo ਵਿੱਚ ਦਿੱਤੀ ਕਿਸੇ ਵੀ entry ਦੀ subclass ਹੈ, ਤਾਂTrueਵਾਪਸ ਕਰੋ। ਹੋਰ ਕਿਸੇ ਵੀ ਸਥਿਤੀ ਵਿੱਚTypeErrorexception ਉਠਾਈ ਜਾਂਦੀ ਹੈ।Changed in version 3.10: classinfo ਇੱਕ Union Type ਹੋ ਸਕਦਾ ਹੈ।
- iter(iterable, /)¶
- iter(callable, sentinel, /)
ਇੱਕ iterator object ਵਾਪਸ ਕਰੋ। ਪਹਿਲੇ argument ਦੀ ਵਿਆਖਿਆ ਦੂਜੇ argument ਦੀ ਮੌਜੂਦਗੀ ਦੇ ਅਨੁਸਾਰ ਵੱਖ-ਵੱਖ ਤਰੀਕੇ ਨਾਲ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਦੂਜੇ argument ਤੋਂ ਬਿਨਾਂ, ਇੱਕੋ argument ਕੋਈ collection object ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ iterable protocol (
__iter__()method) ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੋਵੇ, ਜਾਂ sequence protocol (__getitem__()method ਜਿਸਦੇ integer arguments0ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ) ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੋਵੇ। ਜੇ ਇਹ ਦੋਨਾਂ ਵਿੱਚੋਂ ਕਿਸੇ ਦਾ ਵੀ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ, ਤਾਂTypeErrorਉਠਾਈ ਜਾਂਦੀ ਹੈ। ਜੇ ਦੂਜਾ argument sentinel ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਪਹਿਲਾ argument ਇੱਕ callable object ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ ਬਣਿਆ iterator ਆਪਣੀ__next__()method ਦੀ ਹਰ ਕਾਲ ਲਈ callable ਨੂੰ ਬਿਨਾਂ ਕਿਸੇ argument ਦੇ ਕਾਲ ਕਰੇਗਾ; ਜੇ ਵਾਪਸ ਆਈ ਕੀਮਤ sentinel ਦੇ ਬਰਾਬਰ ਹੋਵੇ ਤਾਂStopIterationਉਠਾਈ ਜਾਵੇਗੀ, ਨਹੀਂ ਤਾਂ ਉਹ ਕੀਮਤ ਵਾਪਸ ਕੀਤੀ ਜਾਵੇਗੀ।Iteration-related types ਵੀ ਵੇਖੋ।
iter()ਦੇ ਦੂਜੇ ਰੂਪ ਦੀ ਇੱਕ ਲਾਭਦਾਇਕ ਵਰਤੋਂ block-reader ਬਣਾਉਣਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਕਿਸੇ binary ਡੇਟਾਬੇਸ ਫ਼ਾਈਲ ਵਿੱਚੋਂ ਨਿਰਧਾਰਤ ਚੌੜਾਈ ਵਾਲੇ block ਉਦੋਂ ਤੱਕ ਪੜ੍ਹਨਾ ਜਦੋਂ ਤੱਕ ਫ਼ਾਈਲ ਦਾ ਅੰਤ ਨਾ ਆ ਜਾਵੇ:from functools import partial with open('mydata.db', 'rb') as f: for block in iter(partial(f.read, 64), b''): process_block(block)
- len(object, /)¶
ਕਿਸੇ object ਦੀ ਲੰਬਾਈ (items ਦੀ ਗਿਣਤੀ) ਵਾਪਸ ਕਰੋ। Argument ਕੋਈ sequence (ਜਿਵੇਂ string, bytes, tuple, list ਜਾਂ range) ਜਾਂ ਕੋਈ collection (ਜਿਵੇਂ dictionary, set ਜਾਂ frozen set) ਹੋ ਸਕਦਾ ਹੈ।
ਜੇ ਲੰਬਾਈ
sys.maxsizeਤੋਂ ਵੱਡੀ ਹੋਵੇ, ਜਿਵੇਂrange(2 ** 100), ਤਾਂlenOverflowErrorਉਠਾਉਂਦਾ ਹੈ।
- class list(iterable=(), /)
ਫੰਕਸ਼ਨ ਹੋਣ ਦੀ ਬਜਾਇ,
listਅਸਲ ਵਿੱਚ ਇੱਕ mutable sequence ਕਿਸਮ ਹੈ, ਜਿਵੇਂ Lists ਅਤੇ Sequence Types --- list, tuple, range ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ।
- locals()¶
ਮੌਜੂਦਾ local symbol table ਨੂੰ ਦਰਸਾਉਣ ਵਾਲਾ mapping ਆਬਜੈਕਟ ਵਾਪਸ ਕਰੋ, ਜਿਸ ਵਿੱਚ variable ਨਾਮ keys ਵਜੋਂ ਅਤੇ ਉਹਨਾਂ ਦੇ ਮੌਜੂਦਾ bound references values ਵਜੋਂ ਹੁੰਦੇ ਹਨ।
ਮੋਡੀਊਲ ਸਕੋਪ ਵਿੱਚ, ਅਤੇ ਜਦੋਂ
exec()ਜਾਂeval()ਨੂੰ ਇੱਕੋ namespace ਨਾਲ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਇਹ ਫੰਕਸ਼ਨglobals()ਵਾਲਾ ਹੀ namespace ਵਾਪਸ ਕਰਦਾ ਹੈ।ਕਲਾਸ ਸਕੋਪ ਵਿੱਚ, ਇਹ ਉਹ namespace ਵਾਪਸ ਕਰਦਾ ਹੈ ਜੋ metaclass constructor ਨੂੰ ਦਿੱਤਾ ਜਾਵੇਗਾ।
ਜਦੋਂ
exec()ਜਾਂeval()ਨੂੰ ਵੱਖਰੇ local ਅਤੇ global ਆਰਗੂਮੈਂਟਾਂ ਨਾਲ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਫੰਕਸ਼ਨ ਕਾਲ ਨੂੰ ਦਿੱਤਾ ਗਿਆ local namespace ਵਾਪਸ ਕਰਦਾ ਹੈ।ਉਪਰੋਕਤ ਸਾਰੀਆਂ ਸਥਿਤੀਆਂ ਵਿੱਚ, execution ਦੇ ਕਿਸੇ ਦਿੱਤੇ frame ਵਿੱਚ
locals()ਦੀ ਹਰ ਕਾਲ ਉਹੀ mapping ਆਬਜੈਕਟ ਵਾਪਸ ਕਰੇਗੀ।locals()ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੇ mapping ਆਬਜੈਕਟ ਰਾਹੀਂ ਕੀਤੀਆਂ ਤਬਦੀਲੀਆਂ assigned, reassigned ਜਾਂ deleted local variables ਵਜੋਂ ਦਿਖਾਈ ਦੇਣਗੀਆਂ, ਅਤੇ local variables ਨੂੰ assign, reassign ਜਾਂ delete ਕਰਨ ਨਾਲ ਵਾਪਸ ਕੀਤੇ mapping ਆਬਜੈਕਟ ਦੀ ਸਮੱਗਰੀ ਤੁਰੰਤ ਪ੍ਰਭਾਵਿਤ ਹੋਵੇਗੀ।optimized scope (ਜਿਸ ਵਿੱਚ functions, generators ਅਤੇ coroutines ਸ਼ਾਮਲ ਹਨ) ਵਿੱਚ,
locals()ਦੀ ਹਰ ਕਾਲ ਇੱਕ ਨਵੀਂ dictionary ਵਾਪਸ ਕਰਦੀ ਹੈ ਜਿਸ ਵਿੱਚ ਫੰਕਸ਼ਨ ਦੇ local variables ਦੀਆਂ ਮੌਜੂਦਾ bindings ਅਤੇ ਕਿਸੇ ਵੀ nonlocal cell references ਦੀ ਜਾਣਕਾਰੀ ਹੁੰਦੀ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਵਾਪਸ ਕੀਤੀ dict ਰਾਹੀਂ ਕੀਤੀਆਂ name binding ਤਬਦੀਲੀਆਂ ਸੰਬੰਧਿਤ local variables ਜਾਂ nonlocal cell references ਵਿੱਚ ਵਾਪਸ ਨਹੀਂ ਲਿਖੀਆਂ ਜਾਂਦੀਆਂ, ਅਤੇ local variables ਜਾਂ nonlocal cell references ਨੂੰ assign, reassign ਜਾਂ delete ਕਰਨ ਨਾਲ ਪਹਿਲਾਂ ਵਾਪਸ ਕੀਤੀਆਂ dictionaries ਦੀ ਸਮੱਗਰੀ ਪ੍ਰਭਾਵਿਤ ਨਹੀਂ ਹੁੰਦੀ।ਕਿਸੇ function, generator ਜਾਂ coroutine ਵਿੱਚ comprehension ਦੇ ਹਿੱਸੇ ਵਜੋਂ
locals()ਨੂੰ ਕਾਲ ਕਰਨਾ ਉਸਨੂੰ enclosing scope ਵਿੱਚ ਕਾਲ ਕਰਨ ਦੇ ਬਰਾਬਰ ਹੈ, ਸਿਵਾਏ ਇਸਦੇ ਕਿ comprehension ਦੇ initialized iteration variables ਵੀ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਣਗੇ। ਹੋਰ scopes ਵਿੱਚ, ਇਹ ਇਸ ਤਰ੍ਹਾਂ ਵਰਤਾਓ ਕਰਦਾ ਹੈ ਜਿਵੇਂ comprehension ਇੱਕ nested function ਵਜੋਂ ਚੱਲ ਰਹੀ ਹੋਵੇ।generator expression ਦੇ ਹਿੱਸੇ ਵਜੋਂ
locals()ਨੂੰ ਕਾਲ ਕਰਨਾ ਇਸਨੂੰ ਇੱਕ nested generator function ਵਿੱਚ ਕਾਲ ਕਰਨ ਦੇ ਬਰਾਬਰ ਹੈ।Changed in version 3.12: ਕੰਪ੍ਰਿਹੈਂਸ਼ਨ ਵਿੱਚ
locals()ਦੇ ਵਿਹਾਰ ਨੂੰ PEP 709 ਵਿੱਚ ਦਿੱਤੇ ਵੇਰਵੇ ਅਨੁਸਾਰ ਅਪਡੇਟ ਕੀਤਾ ਗਿਆ ਹੈ।Changed in version 3.13: PEP 667 ਦੇ ਹਿੱਸੇ ਵਜੋਂ, ਇਸ ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੇ ਮੈਪਿੰਗ ਆਬਜੈਕਟਾਂ ਵਿੱਚ ਤਬਦੀਲੀ ਕਰਨ ਦੇ ਨਿਯਮ ਹੁਣ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੇ ਗਏ ਹਨ। optimized scopes ਵਿੱਚ ਵਿਹਾਰ ਹੁਣ ਉੱਪਰ ਦਿੱਤੇ ਵੇਰਵੇ ਅਨੁਸਾਰ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ ਹੋਰ ਸਕੋਪਾਂ ਵਿੱਚ ਵਿਹਾਰ ਪਹਿਲਾਂ ਵਾਲੇ ਸੰਸਕਰਣਾਂ ਵਾਂਗ ਹੀ ਰਹਿੰਦਾ ਹੈ।
- map(function, iterable, /, *iterables, strict=False)¶
ਹਰੇਕ iterable ਦੀ ਹਰ ਆਈਟਮ 'ਤੇ function ਲਾਗੂ ਕਰਨ ਵਾਲਾ ਇੱਕ ਇਟਰੇਟਰ ਵਾਪਸ ਕਰਦਾ ਹੈ ਅਤੇ ਨਤੀਜੇ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਜੇ ਵਾਧੂ iterables ਆਰਗੂਮੈਂਟ ਦਿੱਤੇ ਜਾਂਦੇ ਹਨ, ਤਾਂ function ਨੂੰ ਉੱਨੇ ਹੀ ਆਰਗੂਮੈਂਟ ਲੈਣੇ ਚਾਹੀਦੇ ਹਨ ਅਤੇ ਸਾਰੇ ਇਟਰੇਬਲਜ਼ ਦੀਆਂ ਆਈਟਮਾਂ 'ਤੇ ਸਮਾਂਤਰ ਤੌਰ 'ਤੇ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਤੋਂ ਵੱਧ ਇਟਰੇਬਲਜ਼ ਦੇ ਨਾਲ, ਇਟਰੇਟਰ ਉਦੋਂ ਰੁਕ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਸਭ ਤੋਂ ਛੋਟਾ ਇਟਰੇਬਲ exhausted ਹੋ ਜਾਂਦਾ ਹੈ। ਜੇ strict
Trueਹੈ ਅਤੇ ਕੋਈ ਇੱਕ ਇਟਰੇਬਲ ਬਾਕੀਆਂ ਤੋਂ ਪਹਿਲਾਂ ਖਤਮ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂValueErrorਉਠਾਇਆ ਜਾਂਦਾ ਹੈ। ਜੇ ਫੰਕਸ਼ਨ ਦੇ ਇਨਪੁੱਟ ਪਹਿਲਾਂ ਹੀ ਆਰਗੂਮੈਂਟ ਟਿਊਪਲਾਂ ਵਿੱਚ ਵਿਵਸਥਿਤ ਕੀਤੇ ਹੋਏ ਹਨ, ਤਾਂitertools.starmap()ਵੇਖੋ।Changed in version 3.14: strict ਪੈਰਾਮੀਟਰ ਜੋੜਿਆ ਗਿਆ।
- max(iterable, /, *, key=None)¶
- max(iterable, /, *, default, key=None)
- max(arg1, arg2, /, *args, key=None)
ਕਿਸੇ iterable ਵਿੱਚੋਂ ਸਭ ਤੋਂ ਵੱਡੀ ਆਈਟਮ ਜਾਂ ਦੋ ਜਾਂ ਵੱਧ ਆਰਗੂਮੈਂਟਾਂ ਵਿੱਚੋਂ ਸਭ ਤੋਂ ਵੱਡਾ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ।
ਜੇ ਇੱਕ positional argument ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਉਹ ਇੱਕ iterable ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਉਸ iterable ਦੀ ਸਭ ਤੋਂ ਵੱਡੀ ਆਈਟਮ ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਦੋ ਜਾਂ ਵੱਧ positional arguments ਦਿੱਤੇ ਜਾਣ, ਤਾਂ ਉਨ੍ਹਾਂ ਵਿੱਚੋਂ ਸਭ ਤੋਂ ਵੱਡਾ ਮੁੱਲ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਦੋ ਵਿਕਲਪਿਕ keyword-only arguments ਹਨ। key argument ਇੱਕ ਐਸਾ ਇੱਕ-ਆਰਗੂਮੈਂਟ ਕ੍ਰਮਬੱਧਤਾ ਫੰਕਸ਼ਨ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜਿਵੇਂ
list.sort()ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। default argument ਉਹ ਆਬਜੈਕਟ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜੋ iterable ਖਾਲੀ ਹੋਣ 'ਤੇ ਵਾਪਸ ਕੀਤਾ ਜਾਵੇ। ਜੇ iterable ਖਾਲੀ ਹੋਵੇ ਅਤੇ default ਨਾ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂValueErrorਉਠਾਇਆ ਜਾਂਦਾ ਹੈ।ਜੇ ਕਈ ਆਈਟਮਾਂ ਸਭ ਤੋਂ ਵੱਡੀਆਂ ਹੋਣ, ਤਾਂ ਫੰਕਸ਼ਨ ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਮਿਲੀ ਆਈਟਮ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਹ sort-stability ਬਣਾਈ ਰੱਖਣ ਵਾਲੇ ਹੋਰ ਟੂਲਾਂ ਜਿਵੇਂ
sorted(iterable, key=keyfunc, reverse=True)[0]ਅਤੇheapq.nlargest(1, iterable, key=keyfunc)ਦੇ ਅਨੁਕੂਲ ਹੈ।Changed in version 3.4: default keyword-only ਪੈਰਾਮੀਟਰ ਜੋੜਿਆ ਗਿਆ।
Changed in version 3.8: key
Noneਹੋ ਸਕਦਾ ਹੈ।
- class memoryview(object)
ਦਿੱਤੇ ਗਏ argument ਤੋਂ ਬਣਿਆ ਇੱਕ "memory view" ਆਬਜੈਕਟ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ Memory Views ਵੇਖੋ।
- min(iterable, /, *, key=None)¶
- min(iterable, /, *, default, key=None)
- min(arg1, arg2, /, *args, key=None)
ਕਿਸੇ iterable ਵਿੱਚੋਂ ਸਭ ਤੋਂ ਛੋਟੀ ਆਈਟਮ ਜਾਂ ਦੋ ਜਾਂ ਵੱਧ ਆਰਗੂਮੈਂਟਾਂ ਵਿੱਚੋਂ ਸਭ ਤੋਂ ਛੋਟਾ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ।
ਜੇ ਇੱਕ positional argument ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਉਹ ਇੱਕ iterable ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਉਸ iterable ਦੀ ਸਭ ਤੋਂ ਛੋਟੀ ਆਈਟਮ ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਜੇ ਦੋ ਜਾਂ ਵੱਧ positional arguments ਦਿੱਤੇ ਜਾਣ, ਤਾਂ ਉਨ੍ਹਾਂ ਵਿੱਚੋਂ ਸਭ ਤੋਂ ਛੋਟਾ ਮੁੱਲ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਦੋ ਵਿਕਲਪਿਕ keyword-only arguments ਹਨ। key argument ਇੱਕ ਐਸਾ ਇੱਕ-ਆਰਗੂਮੈਂਟ ਕ੍ਰਮਬੱਧਤਾ ਫੰਕਸ਼ਨ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜਿਵੇਂ
list.sort()ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। default argument ਉਹ ਆਬਜੈਕਟ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜੋ iterable ਖਾਲੀ ਹੋਣ 'ਤੇ ਵਾਪਸ ਕੀਤਾ ਜਾਵੇ। ਜੇ iterable ਖਾਲੀ ਹੋਵੇ ਅਤੇ default ਨਾ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂValueErrorਉਠਾਇਆ ਜਾਂਦਾ ਹੈ।ਜੇ ਕਈ ਆਈਟਮਾਂ ਸਭ ਤੋਂ ਛੋਟੀਆਂ ਹੋਣ, ਤਾਂ ਫੰਕਸ਼ਨ ਸਭ ਤੋਂ ਪਹਿਲਾਂ ਮਿਲੀ ਆਈਟਮ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਹ sort-stability ਬਣਾਈ ਰੱਖਣ ਵਾਲੇ ਹੋਰ ਟੂਲਾਂ ਜਿਵੇਂ
sorted(iterable, key=keyfunc)[0]ਅਤੇheapq.nsmallest(1, iterable, key=keyfunc)ਦੇ ਅਨੁਕੂਲ ਹੈ।Changed in version 3.4: default keyword-only ਪੈਰਾਮੀਟਰ ਜੋੜਿਆ ਗਿਆ।
Changed in version 3.8: key
Noneਹੋ ਸਕਦਾ ਹੈ।
- next(iterator, /)¶
- next(iterator, default, /)
iterator ਦੇ
__next__()ਢੰਗ ਨੂੰ ਕਾਲ ਕਰਕੇ ਉਸ ਵਿੱਚੋਂ ਅਗਲੀ ਆਈਟਮ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ। ਜੇ default ਦਿੱਤਾ ਗਿਆ ਹੈ, ਤਾਂ ਜੇ ਇਟਰੇਟਰ exhausted ਹੋ ਗਿਆ ਹੋਵੇ ਤਾਂ ਇਹ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਨਹੀਂ ਤਾਂStopIterationਉਠਾਇਆ ਜਾਂਦਾ ਹੈ।
- class object¶
ਇਹ ਹੋਰ ਸਾਰੀਆਂ classes ਦੀ ਅੰਤਿਮ base class ਹੈ। ਇਸ ਵਿੱਚ ਉਹ methods ਹਨ ਜੋ Python classes ਦੇ ਸਾਰੇ instances ਲਈ ਸਾਂਝੀਆਂ ਹੁੰਦੀਆਂ ਹਨ। ਜਦੋਂ constructor ਨੂੰ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਇਹ ਇੱਕ ਨਵਾਂ featureless object ਵਾਪਸ ਕਰਦਾ ਹੈ। Constructor ਕੋਈ ਵੀ arguments ਸਵੀਕਾਰ ਨਹੀਂ ਕਰਦਾ।
- oct(integer, /)¶
ਇੱਕ ਪੂਰਨ ਅੰਕ ਨੂੰ "0o" ਪ੍ਰੀਫਿਕਸ ਵਾਲੀ octal ਸਤਰ ਵਿੱਚ ਬਦਲੋ। ਨਤੀਜਾ ਇੱਕ ਵੈਧ Python expression ਹੁੰਦਾ ਹੈ। ਜੇ integer ਇੱਕ Python
intਆਬਜੈਕਟ ਨਹੀਂ ਹੈ, ਤਾਂ ਇਸ ਵਿੱਚ__index__()ਮੈਥਡ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜੋ ਇੱਕ ਪੂਰਨ ਅੰਕ ਵਾਪਸ ਕਰੇ। ਉਦਾਹਰਨ ਲਈ:>>> oct(8) '0o10' >>> oct(-56) '-0o70'
ਜੇ ਤੁਸੀਂ ਇੱਕ ਪੂਰਨ ਅੰਕ ਨੂੰ "0o" ਪ੍ਰੀਫਿਕਸ ਸਮੇਤ ਜਾਂ ਬਿਨਾਂ octal ਸਤਰ ਵਿੱਚ ਬਦਲਣਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਕਿਸੇ ਵੀ ਤਰੀਕੇ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹੋ।
>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')
ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ
format()ਵੀ ਵੇਖੋ।
- open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)¶
file ਨੂੰ ਖੋਲ੍ਹੋ ਅਤੇ ਇਸ ਨਾਲ ਸੰਬੰਧਿਤ file object ਵਾਪਸ ਕਰੋ। ਜੇ ਫਾਈਲ ਨਹੀਂ ਖੁੱਲ ਸਕਦੀ, ਤਾਂ
OSErrorਉਠਾਇਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਦੇ ਹੋਰ ਉਦਾਹਰਨਾਂ ਲਈ ਫਾਈਲਾਂ ਨੂੰ ਪੜ੍ਹਨਾ ਅਤੇ ਲਿਖਣਾ ਵੇਖੋ।file ਇੱਕ path-like object ਹੈ ਜੋ ਖੋਲ੍ਹੀ ਜਾਣ ਵਾਲੀ ਫਾਈਲ ਦਾ path (absolute ਜਾਂ ਮੌਜੂਦਾ working directory ਦੇ ਸਬੰਧ ਵਿੱਚ relative) ਦਿੰਦਾ ਹੈ, ਜਾਂ wrap ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਫਾਈਲ ਦਾ integer file descriptor ਹੋ ਸਕਦਾ ਹੈ। (ਜੇ file descriptor ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਵਾਪਸ ਕੀਤਾ I/O ਆਬਜੈਕਟ ਬੰਦ ਹੋਣ ਤੇ ਇਹ ਵੀ ਬੰਦ ਹੋ ਜਾਵੇਗਾ, ਜਦ ਤੱਕ closefd ਨੂੰ
Falseਨਾ ਕੀਤਾ ਗਿਆ ਹੋਵੇ।)mode ਇੱਕ ਵਿਕਲਪਿਕ ਸਤਰ ਹੈ ਜੋ ਉਸ ਮੋਡ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ ਜਿਸ ਵਿੱਚ ਫਾਈਲ ਖੋਲ੍ਹੀ ਜਾਂਦੀ ਹੈ। ਇਸਦਾ ਡਿਫਾਲਟ ਮੁੱਲ
'r'ਹੈ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਟੈਕਸਟ ਮੋਡ ਵਿੱਚ ਪੜ੍ਹਨ ਲਈ ਖੋਲ੍ਹਣਾ। ਹੋਰ ਆਮ ਮੁੱਲ ਹਨ ਲਿਖਣ ਲਈ'w'(ਜੇ ਫਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ ਤਾਂ ਇਸਦੀ ਸਮੱਗਰੀ ਨੂੰ ਖਾਲੀ ਕਰ ਦਿੰਦਾ ਹੈ), ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਬਣਾਉਣ ਲਈ'x', ਅਤੇ ਅੰਤ ਵਿੱਚ ਜੋੜਨ ਲਈ'a'(ਜੋ ਕੁਝ Unix ਸਿਸਟਮਾਂ 'ਤੇ ਇਹ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਮੌਜੂਦਾ seek ਸਥਿਤੀ ਦੀ ਪਰਵਾਹ ਕੀਤੇ ਬਿਨਾਂ ਸਾਰੀਆਂ ਲਿਖਤਾਂ ਫਾਈਲ ਦੇ ਅੰਤ ਵਿੱਚ ਜੋੜੀਆਂ ਜਾਂਦੀਆਂ ਹਨ)। ਟੈਕਸਟ ਮੋਡ ਵਿੱਚ, ਜੇ encoding ਨਿਰਧਾਰਤ ਨਹੀਂ ਕੀਤਾ ਗਿਆ ਹੈ, ਤਾਂ ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ UTF-8 ਵਰਤੀ ਜਾਂਦੀ ਹੈ; ਜੇ Python UTF-8 Mode ਅਸਮਰੱਥ ਹੈ, ਤਾਂ ਮੌਜੂਦਾ ਲੋਕੇਲ ਇਨਕੋਡਿੰਗ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈlocale.getencoding()ਨੂੰ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। (ਕੱਚੇ ਬਾਈਟ ਪੜ੍ਹਨ ਅਤੇ ਲਿਖਣ ਲਈ ਬਾਈਨਰੀ ਮੋਡ ਵਰਤੋ ਅਤੇ encoding ਨਿਰਧਾਰਤ ਨਾ ਕਰੋ।) ਉਪਲਬਧ ਮੋਡ ਹਨ:ਅੱਖਰ
ਅਰਥ
'r'ਪੜ੍ਹਨ ਲਈ ਖੋਲ੍ਹੋ (ਡਿਫਾਲਟ)
'w'ਲਿਖਣ ਲਈ ਖੋਲ੍ਹੋ, ਪਹਿਲਾਂ ਫਾਈਲ ਨੂੰ truncate ਕਰੋ
'x'ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਬਣਾਉਣ ਲਈ ਖੋਲ੍ਹੋ; ਜੇ ਫਾਈਲ ਪਹਿਲਾਂ ਮੌਜੂਦ ਹੋਵੇ ਤਾਂ ਅਸਫਲ ਹੋਵੇ
'a'ਲਿਖਣ ਲਈ ਖੋਲ੍ਹੋ; ਜੇ ਫਾਈਲ ਮੌਜੂਦ ਹੋਵੇ ਤਾਂ ਅੰਤ ਵਿੱਚ ਜੋੜੋ
'b'ਬਾਈਨਰੀ ਮੋਡ
't'ਟੈਕਸਟ ਮੋਡ (ਡਿਫਾਲਟ)
'+'ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਖੋਲ੍ਹੋ (ਪੜ੍ਹਨਾ ਅਤੇ ਲਿਖਣਾ)
ਡਿਫਾਲਟ ਮੋਡ
'r'ਹੈ (ਟੈਕਸਟ ਪੜ੍ਹਨ ਲਈ ਖੋਲ੍ਹਣਾ, ਜੋ'rt'ਦਾ ਸਮਾਨਾਰਥੀ ਹੈ)।'w+'ਅਤੇ'w+b'ਮੋਡ ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਦੇ ਅਤੇ truncate ਕਰਦੇ ਹਨ।'r+'ਅਤੇ'r+b'ਮੋਡ ਫਾਈਲ ਨੂੰ ਬਿਨਾਂ truncate ਕੀਤੇ ਖੋਲ੍ਹਦੇ ਹਨ।ਜਿਵੇਂ Overview ਵਿੱਚ ਦੱਸਿਆ ਗਿਆ ਹੈ, Python ਬਾਈਨਰੀ ਅਤੇ ਟੈਕਸਟ I/O ਵਿੱਚ ਫ਼ਰਕ ਕਰਦਾ ਹੈ। ਬਾਈਨਰੀ ਮੋਡ ਵਿੱਚ ਖੋਲ੍ਹੀਆਂ ਗਈਆਂ ਫਾਈਲਾਂ (mode ਆਰਗੂਮੈਂਟ ਵਿੱਚ
'b'ਸਮੇਤ) ਬਿਨਾਂ ਕਿਸੇ ਡੀਕੋਡਿੰਗ ਦੇ ਸਮੱਗਰੀ ਨੂੰbytesਵਸਤੂਆਂ ਵਜੋਂ ਵਾਪਸ ਕਰਦੀਆਂ ਹਨ। ਟੈਕਸਟ ਮੋਡ ਵਿੱਚ (ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ, ਜਾਂ ਜਦੋਂ mode ਆਰਗੂਮੈਂਟ ਵਿੱਚ't'ਸ਼ਾਮਲ ਹੋਵੇ), ਫਾਈਲ ਦੀ ਸਮੱਗਰੀstrਵਜੋਂ ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਸ ਦੇ ਬਾਈਟਾਂ ਨੂੰ ਪਹਿਲਾਂ ਡਿਫਾਲਟ ਇਨਕੋਡਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਜਾਂ, ਜੇ ਦਿੱਤੀ ਗਈ ਹੋਵੇ, ਤਾਂ ਨਿਰਧਾਰਤ encoding ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡੀਕੋਡ ਕੀਤਾ ਗਿਆ ਹੁੰਦਾ ਹੈ।Note
Python ਟੈਕਸਟ ਫਾਈਲਾਂ ਬਾਰੇ underlying operating system ਦੀ ਧਾਰਣਾ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦਾ; ਸਾਰੀ ਪ੍ਰਕਿਰਿਆ Python ਖੁਦ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਇਹ platform-independent ਹੈ।
buffering ਇੱਕ ਵਿਕਲਪਿਕ integer ਹੈ ਜੋ buffering policy ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। Buffering ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ 0 ਦਿਓ (ਇਹ ਕੇਵਲ binary mode ਵਿੱਚ ਮਨਜ਼ੂਰ ਹੈ), line buffering ਚੁਣਨ ਲਈ 1 ਦਿਓ (ਇਹ ਸਿਰਫ਼ text mode ਵਿੱਚ ਲਿਖਣ ਸਮੇਂ ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ), ਅਤੇ fixed-size chunk buffer ਦਾ ਆਕਾਰ bytes ਵਿੱਚ ਦਰਸਾਉਣ ਲਈ 1 ਤੋਂ ਵੱਡਾ integer ਦਿਓ। ਧਿਆਨ ਰਹੇ ਕਿ ਇਸ ਤਰੀਕੇ ਨਾਲ ਦਿੱਤਾ buffer size binary buffered I/O 'ਤੇ ਲਾਗੂ ਹੁੰਦਾ ਹੈ, ਪਰ
TextIOWrapper(ਅਰਥਾਤmode='r+'ਨਾਲ ਖੋਲ੍ਹੀਆਂ ਫ਼ਾਈਲਾਂ) ਦੀ buffering ਵੱਖਰੀ ਹੁੰਦੀ ਹੈ।TextIOWrapperਵਿੱਚ buffering ਅਯੋਗ ਕਰਨ ਲਈio.TextIOWrapper.reconfigure()ਦਾwrite_throughflag ਵਰਤਣ ਬਾਰੇ ਵਿਚਾਰ ਕਰੋ। ਜਦੋਂ buffering argument ਨਹੀਂ ਦਿੱਤਾ ਜਾਂਦਾ, ਤਾਂ ਮੂਲ buffering policy ਹੇਠਾਂ ਦਿੱਤੇ ਤਰੀਕੇ ਨਾਲ ਕੰਮ ਕਰਦੀ ਹੈ:Binary ਫਾਈਲਾਂ ਨੂੰ fixed-size chunks ਵਿੱਚ buffer ਕੀਤਾ ਜਾਂਦਾ ਹੈ; ਜਦੋਂ device block size ਉਪਲਬਧ ਹੋਵੇ ਤਾਂ buffer ਦਾ ਆਕਾਰ
max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE)ਹੁੰਦਾ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਸਿਸਟਮਾਂ ਵਿੱਚ buffer ਆਮ ਤੌਰ 'ਤੇ 128 kilobytes ਦਾ ਹੁੰਦਾ ਹੈ।"Interactive" ਟੈਕਸਟ ਫਾਈਲਾਂ (ਜਿਨ੍ਹਾਂ ਲਈ
isatty()Trueਵਾਪਸ ਕਰਦਾ ਹੈ) line buffering ਵਰਤਦੀਆਂ ਹਨ। ਹੋਰ ਟੈਕਸਟ ਫਾਈਲਾਂ ਉਹੀ ਨੀਤੀ ਵਰਤਦੀਆਂ ਹਨ ਜੋ ਉੱਪਰ binary ਫਾਈਲਾਂ ਲਈ ਦਰਸਾਈ ਗਈ ਹੈ।
encoding ਫਾਈਲ ਨੂੰ ਡੀਕੋਡ ਜਾਂ ਇਨਕੋਡ ਕਰਨ ਲਈ ਵਰਤੀ ਜਾਣ ਵਾਲੀ ਇਨਕੋਡਿੰਗ ਦਾ ਨਾਮ ਹੈ। ਇਸਦੀ ਵਰਤੋਂ ਸਿਰਫ਼ ਟੈਕਸਟ ਮੋਡ ਵਿੱਚ ਕੀਤੀ ਜਾਣੀ ਚਾਹੀਦੀ ਹੈ। ਡਿਫਾਲਟ ਇਨਕੋਡਿੰਗ UTF-8 ਹੈ; ਜੇ Python UTF-8 Mode ਅਸਮਰੱਥ ਹੈ, ਤਾਂ ਡਿਫਾਲਟ ਪਲੇਟਫਾਰਮ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ (ਜੋ ਵੀ
locale.getencoding()ਵਾਪਸ ਕਰਦਾ ਹੈ)। Python ਦੁਆਰਾ ਸਮਰਥਿਤ ਕੋਈ ਵੀ text encoding ਵਰਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਅਤੇencoding="locale"ਮੌਜੂਦਾ ਲੋਕੇਲ ਇਨਕੋਡਿੰਗ ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਦਰਸਾਉਂਦਾ ਹੈ। ਸਮਰਥਿਤ ਇਨਕੋਡਿੰਗਾਂ ਦੀ ਸੂਚੀ ਲਈcodecsਮੋਡੀਊਲ ਵੇਖੋ।errors ਇੱਕ ਵਿਕਲਪੀ string ਹੈ ਜੋ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ encoding ਅਤੇ decoding ਗਲਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਿਆ ਜਾਣਾ ਹੈ—ਇਸਨੂੰ binary mode ਵਿੱਚ ਵਰਤਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਕਈ ਮਿਆਰੀ error handlers ਉਪਲਬਧ ਹਨ, ਹਾਲਾਂਕਿ
codecs.register_error()ਨਾਲ ਰਜਿਸਟਰ ਕੀਤਾ ਗਿਆ ਕੋਈ ਵੀ error handling ਨਾਮ ਵੀ ਵੈਧ ਹੈ। ਮਿਆਰੀ ਨਾਮ Error Handlers ਵਿੱਚ ਵੇਖੇ ਜਾ ਸਕਦੇ ਹਨ।newline ਇਹ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਕਿ stream ਤੋਂ newline ਅੱਖਰਾਂ ਨੂੰ ਕਿਵੇਂ parse ਕੀਤਾ ਜਾਵੇ। ਇਹ
None,'','\n','\r'ਜਾਂ'\r\n'ਹੋ ਸਕਦਾ ਹੈ। ਇਹ ਹੇਠਾਂ ਦਿੱਤੇ ਅਨੁਸਾਰ ਕੰਮ ਕਰਦਾ ਹੈ:ਸਟ੍ਰੀਮ ਤੋਂ input ਪੜ੍ਹਦੇ ਸਮੇਂ, ਜੇ newline
Noneਹੋਵੇ, ਤਾਂ universal newlines mode ਚਾਲੂ ਹੋ ਜਾਂਦੀ ਹੈ। Input ਦੀਆਂ ਲਾਈਨਾਂ'\n','\r'ਜਾਂ'\r\n'ਨਾਲ ਖਤਮ ਹੋ ਸਕਦੀਆਂ ਹਨ, ਅਤੇ caller ਨੂੰ ਵਾਪਸ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇਨ੍ਹਾਂ ਨੂੰ'\n'ਵਿੱਚ ਬਦਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਜੇ ਇਸਦੀ value''ਹੋਵੇ, ਤਾਂ universal newlines mode ਚਾਲੂ ਰਹਿੰਦੀ ਹੈ, ਪਰ line endings ਬਿਨਾਂ ਕਿਸੇ ਤਬਦੀਲੀ ਦੇ caller ਨੂੰ ਵਾਪਸ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਜੇ ਇਸਦੀ ਕੋਈ ਹੋਰ ਵੈਧ value ਹੋਵੇ, ਤਾਂ input lines ਸਿਰਫ਼ ਦਿੱਤੀ ਗਈ string ਨਾਲ ਹੀ ਸਮਾਪਤ ਮੰਨੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਅਤੇ line ending ਬਿਨਾਂ ਤਬਦੀਲੀ ਦੇ ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।ਸਟ੍ਰੀਮ ਵਿੱਚ output ਲਿਖਦੇ ਸਮੇਂ, ਜੇ newline
Noneਹੋਵੇ, ਤਾਂ ਲਿਖੇ ਗਏ ਸਾਰੇ'\n'ਅੱਖਰ system ਦੇ ਮੂਲ line separatoros.linesepਵਿੱਚ ਬਦਲੇ ਜਾਂਦੇ ਹਨ। ਜੇ newline''ਜਾਂ'\n'ਹੋਵੇ, ਤਾਂ ਕੋਈ ਤਬਦੀਲੀ ਨਹੀਂ ਕੀਤੀ ਜਾਂਦੀ। ਜੇ newline ਦੀ ਕੋਈ ਹੋਰ ਵੈਧ value ਹੋਵੇ, ਤਾਂ ਲਿਖੇ ਗਏ'\n'ਅੱਖਰ ਦਿੱਤੀ ਗਈ string ਵਿੱਚ ਬਦਲੇ ਜਾਂਦੇ ਹਨ।
ਜੇ closefd
Falseਹੋਵੇ ਅਤੇ filename ਦੀ ਬਜਾਏ file descriptor ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ ਫ਼ਾਈਲ ਬੰਦ ਹੋਣ 'ਤੇ ਅੰਦਰੂਨੀ file descriptor ਖੁੱਲ੍ਹਾ ਹੀ ਰਹੇਗਾ। ਜੇ filename ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ closefd ਦਾTrueਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ (ਜੋ ਮੂਲ ਮੁੱਲ ਹੈ); ਨਹੀਂ ਤਾਂ ਇੱਕ error ਉਠਾਈ ਜਾਵੇਗੀ।opener ਵਜੋਂ ਇੱਕ callable ਦੇ ਕੇ custom opener ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਫਿਰ file object ਲਈ ਅੰਦਰੂਨੀ file descriptor, opener ਨੂੰ (file, flags) ਨਾਲ ਕਾਲ ਕਰਕੇ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। opener ਨੂੰ ਇੱਕ ਖੁੱਲ੍ਹਾ file descriptor ਵਾਪਸ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ (ਜੇ
os.openਨੂੰ opener ਵਜੋਂ ਦਿੱਤਾ ਜਾਵੇ, ਤਾਂ ਇਸਦਾ ਵਿਵਹਾਰNoneਦੇਣ ਦੇ ਸਮਾਨ ਹੁੰਦਾ ਹੈ)।ਨਵੀਂ ਬਣਾਈ ਗਈ ਫਾਈਲ non-inheritable ਹੁੰਦੀ ਹੈ।
ਹੇਠਾਂ ਦਿੱਤੀ ਉਦਾਹਰਨ
os.open()ਫੰਕਸ਼ਨ ਦੇ dir_fd parameter ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਿਸੇ ਦਿੱਤੀ ਗਈ directory ਦੇ ਸਬੰਧ ਵਿੱਚ ਇੱਕ ਫ਼ਾਈਲ ਖੋਲ੍ਹਦੀ ਹੈ:>>> import os >>> dir_fd = os.open('somedir', os.O_RDONLY) >>> def opener(path, flags): ... return os.open(path, flags, dir_fd=dir_fd) ... >>> with open('spamspam.txt', 'w', opener=opener) as f: ... print('This will be written to somedir/spamspam.txt', file=f) ... >>> os.close(dir_fd) # don't leak a file descriptor
open()ਫੰਕਸ਼ਨ ਦੁਆਰਾ ਵਾਪਸ ਕੀਤਾ ਗਿਆ file object ਦਾ ਪ੍ਰਕਾਰ mode 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਜਦੋਂopen()ਨੂੰ text mode ('w','r','wt','rt'ਆਦਿ) ਵਿੱਚ ਫ਼ਾਈਲ ਖੋਲ੍ਹਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹio.TextIOBaseਦੀ ਇੱਕ subclass (ਖਾਸ ਤੌਰ 'ਤੇio.TextIOWrapper) ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜਦੋਂ buffering ਸਮੇਤ binary mode ਵਿੱਚ ਫ਼ਾਈਲ ਖੋਲੀ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਵਾਪਸ ਕੀਤੀ ਗਈ classio.BufferedIOBaseਦੀ subclass ਹੁੰਦੀ ਹੈ। ਸਹੀ class mode ਦੇ ਅਨੁਸਾਰ ਬਦਲਦੀ ਹੈ: read binary mode ਵਿੱਚio.BufferedReader, write ਅਤੇ append binary modes ਵਿੱਚio.BufferedWriter, ਅਤੇ read/write mode ਵਿੱਚio.BufferedRandomਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ buffering ਅਯੋਗ ਹੁੰਦੀ ਹੈ, ਤਾਂ raw streamio.FileIO, ਜੋio.RawIOBaseਦੀ subclass ਹੈ, ਵਾਪਸ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।ਫ਼ਾਈਲ ਸੰਭਾਲਣ ਨਾਲ ਸੰਬੰਧਿਤ modules ਵੀ ਵੇਖੋ, ਜਿਵੇਂ
fileinput,io(ਜਿੱਥੇopen()ਪਰਿਭਾਸ਼ਿਤ ਹੈ),os,os.path,tempfileਅਤੇshutil।ਆਰਗੂਮੈਂਟ
path,modeਅਤੇflagsਨਾਲ auditing eventopenਉਤਪੰਨ ਕਰਦਾ ਹੈ।modeਅਤੇflagsਆਰਗੂਮੈਂਟ ਮੂਲ ਕਾਲ ਤੋਂ ਸੋਧੇ ਗਏ ਜਾਂ ਅਨੁਮਾਨਿਤ ਕੀਤੇ ਗਏ ਹੋ ਸਕਦੇ ਹਨ।Changed in version 3.3:
opener ਪੈਰਾਮੀਟਰ ਜੋੜਿਆ ਗਿਆ।
'x'ਮੋਡ ਜੋੜਿਆ ਗਿਆ।ਪਹਿਲਾਂ
IOErrorਉਤਪੰਨ ਕੀਤਾ ਜਾਂਦਾ ਸੀ, ਹੁਣ ਇਹOSErrorਦਾ alias ਹੈ।ਜੇ exclusive creation mode (
'x') ਵਿੱਚ ਖੋਲੀ ਜਾਣ ਵਾਲੀ ਫਾਈਲ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੋਵੇ, ਤਾਂ ਹੁਣFileExistsErrorਉਤਪੰਨ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
Changed in version 3.4:
ਫਾਈਲ ਹੁਣ non-inheritable ਹੈ।
Changed in version 3.5:
ਜੇ system call ਵਿੱਚ ਰੁਕਾਵਟ ਆ ਜਾਵੇ ਅਤੇ signal handler ਕੋਈ exception ਨਾ ਉਠਾਏ, ਤਾਂ ਹੁਣ ਇਹ ਫੰਕਸ਼ਨ
InterruptedErrorexception ਉਠਾਉਣ ਦੀ ਬਜਾਏ ਉਸ system call ਨੂੰ ਮੁੜ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ (ਕਾਰਨ ਲਈ PEP 475 ਵੇਖੋ)।'namereplace'error handler ਜੋੜਿਆ ਗਿਆ।
Changed in version 3.6:
os.PathLikeਨੂੰ ਲਾਗੂ ਕਰਨ ਵਾਲੇ ਆਬਜੈਕਟਾਂ ਨੂੰ ਸਵੀਕਾਰ ਕਰਨ ਲਈ ਸਮਰਥਨ ਜੋੜਿਆ ਗਿਆ।Windows 'ਤੇ, ਇੱਕ ਕੰਸੋਲ ਬਫਰ ਖੋਲ੍ਹਣ ਨਾਲ
io.RawIOBaseਦੀ ਕੋਈ ਹੋਰ ਉਪ-ਕਲਾਸ ਵਾਪਸ ਆ ਸਕਦੀ ਹੈ, ਨਾ ਕਿ ਸਿਰਫ਼io.FileIO।
Changed in version 3.11:
'U'ਮੋਡ ਹਟਾ ਦਿੱਤਾ ਗਿਆ ਹੈ।Changed in version 3.15: UTF-8 ਹੁਣ ਪਲੇਟਫਾਰਮ-ਨਿਰਭਰ ਲੋਕੇਲ ਇਨਕੋਡਿੰਗ ਦੀ ਬਜਾਏ ਡਿਫਾਲਟ ਇਨਕੋਡਿੰਗ ਹੈ (PEP 686)।
- ord(character, /)¶
ਕਿਸੇ ਅੱਖਰ ਦਾ ordinal ਮੁੱਲ ਵਾਪਸ ਕਰੋ।
ਜੇ argument ਇੱਕ ਅੱਖਰ ਵਾਲੀ string ਹੈ, ਤਾਂ ਉਸ ਅੱਖਰ ਦਾ Unicode code point ਵਾਪਸ ਕਰੋ। ਉਦਾਹਰਨ ਲਈ,
ord('a')integer97ਵਾਪਸ ਕਰਦਾ ਹੈ ਅਤੇord('€')(Euro ਚਿੰਨ੍ਹ)8364ਵਾਪਸ ਕਰਦਾ ਹੈ। ਇਹchr()ਦਾ ਉਲਟ ਹੈ।ਜੇ ਆਰਗੂਮੈਂਟ ਲੰਬਾਈ 1 ਵਾਲਾ
bytesਜਾਂbytearrayਆਬਜੈਕਟ ਹੋਵੇ, ਤਾਂ ਉਸਦਾ ਇਕੱਲਾ ਬਾਈਟ ਮੁੱਲ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ,ord(b'a')ਪੂਰਨ ਅੰਕ97ਵਾਪਸ ਕਰਦਾ ਹੈ।
- pow(base, exp, mod=None)¶
base ਨੂੰ exp ਘਾਤ ਤੱਕ ਉਠਾਇਆ ਹੋਇਆ ਮੁੱਲ ਵਾਪਸ ਕਰੋ; ਜੇ mod ਦਿੱਤਾ ਹੋਵੇ, ਤਾਂ base ਨੂੰ exp ਘਾਤ ਤੱਕ ਉਠਾ ਕੇ ਉਸਦਾ modulo mod ਵਾਪਸ ਕਰੋ (ਇਹ
pow(base, exp) % modਨਾਲੋਂ ਵੱਧ ਕੁਸ਼ਲਤਾ ਨਾਲ ਗਿਣਿਆ ਜਾਂਦਾ ਹੈ)। ਦੋ-argument ਰੂਪpow(base, exp)power operatorbase**expਦੇ ਬਰਾਬਰ ਹੈ।ਜਦੋਂ ਦਲੀਲਾਂ ਮਿਸ਼ਰਤ ਓਪਰੇਂਡ ਕਿਸਮਾਂ ਵਾਲੀਆਂ ਅੰਕੜਾ ਕਿਸਮਾਂ ਵਿੱਚ ਹੁੰਦੀਆਂ ਹਨ, ਤਾਂ ਦੋ-ਅੰਕੜਾ ਗਣਿਤਿਕ ਓਪਰੇਟਰਾਂ ਲਈ ਕੋਰਸ਼ਨ ਨਿਯਮ ਲਾਗੂ ਹੁੰਦੇ ਹਨ।
intਓਪਰੇਂਡਾਂ ਲਈ, ਨਤੀਜੇ ਦੀ ਕਿਸਮ ਓਪਰੇਂਡਾਂ ਦੀ ਕਿਸਮ (ਕੋਰਸ਼ਨ ਤੋਂ ਬਾਅਦ) ਦੇ ਬਰਾਬਰ ਹੁੰਦੀ ਹੈ, ਜਦ ਤੱਕ ਦੂਜੀ ਦਲੀਲ ਨਕਾਰਾਤਮਕ ਨਾ ਹੋਵੇ; ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਸਾਰੀਆਂ ਦਲੀਲਾਂ ਫਲੋਟ ਵਿੱਚ ਬਦਲ ਦਿੱਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਅਤੇ ਫਲੋਟ ਨਤੀਜਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ,pow(10, 2)100ਵਾਪਸ ਕਰਦਾ ਹੈ, ਪਰpow(10, -2)0.01ਵਾਪਸ ਕਰਦਾ ਹੈ।intਜਾਂfloatਕਿਸਮ ਦੇ ਨਕਾਰਾਤਮਕ ਬੇਸ ਅਤੇ ਗੈਰ-ਸੰਪੂਰਨ ਐਕਸਪੋਨੈਂਟ ਲਈ, ਇੱਕ ਕੰਪਲੈਕਸ ਨਤੀਜਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ,pow(-9, 0.5)3jਦੇ ਨੇੜੇ ਇੱਕ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜਦਕਿ,intਜਾਂfloatਕਿਸਮ ਦੇ ਨਕਾਰਾਤਮਕ ਬੇਸ ਅਤੇ ਸੰਪੂਰਨ ਐਕਸਪੋਨੈਂਟ ਲਈ, ਇੱਕ ਫਲੋਟ ਨਤੀਜਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। ਉਦਾਹਰਨ ਵਜੋਂ,pow(-9, 2.0)81.0ਵਾਪਸ ਕਰਦਾ ਹੈ।intoperands base ਅਤੇ exp ਲਈ, ਜੇ mod ਦਿੱਤਾ ਹੋਵੇ, ਤਾਂ mod ਵੀ integer ਕਿਸਮ ਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਇਸਦੀ value ਸਿਫ਼ਰ ਨਹੀਂ ਹੋਣੀ ਚਾਹੀਦੀ। ਜੇ mod ਦਿੱਤਾ ਹੋਵੇ ਅਤੇ exp negative ਹੋਵੇ, ਤਾਂ base ਅਤੇ mod ਆਪਸ ਵਿੱਚ relatively prime ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ। ਉਸ ਹਾਲਤ ਵਿੱਚpow(inv_base, -exp, mod)ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਜਿੱਥੇ inv_base, mod ਦੇ ਸਬੰਧ ਵਿੱਚ base ਦਾ modular inverse ਹੁੰਦਾ ਹੈ।ਇੱਥੇ
38ਨੂੰ97ਮਾਡੀਊਲੋ 'ਤੇ ਇਨਵਰਸ ਕੰਪਿਊਟ ਕਰਨ ਦੀ ਇੱਕ ਉਦਾਹਰਨ ਹੈ>>> pow(38, -1, mod=97) 23 >>> 23 * 38 % 97 == 1 True
Changed in version 3.8:
intoperands ਲਈ,powਦਾ ਤਿੰਨ-argument ਰੂਪ ਹੁਣ ਦੂਜੇ argument ਨੂੰ negative ਹੋਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਜਿਸ ਨਾਲ modular inverses ਦੀ ਗਿਣਤੀ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ।Changed in version 3.8: ਹੁਣ keyword arguments ਦੀ ਇਜਾਜ਼ਤ ਹੈ। ਪਹਿਲਾਂ ਸਿਰਫ positional arguments ਹੀ ਸਮਰਥਿਤ ਸਨ।
- print(*objects, sep=' ', end='\n', file=None, flush=False)¶
objects ਨੂੰ file ਟੈਕਸਟ ਸਟ੍ਰੀਮ ਵਿੱਚ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ, ਜਿੱਥੇ ਉਹ sep ਨਾਲ ਵੱਖ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਅਤੇ end ਨਾਲ ਸਮਾਪਤ ਹੁੰਦੇ ਹਨ। sep, end, file ਅਤੇ flush, ਜੇ ਦਿੱਤੇ ਜਾਣ, ਤਾਂ keyword arguments ਵਜੋਂ ਹੀ ਦਿੱਤੇ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ।
ਸਾਰੇ non-keyword arguments ਨੂੰ
str()ਦੀ ਤਰ੍ਹਾਂ strings ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਸਟ੍ਰੀਮ ਵਿੱਚ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ, ਜਿੱਥੇ ਉਹ sep ਨਾਲ ਵੱਖ ਹੁੰਦੇ ਹਨ ਅਤੇ end ਨਾਲ ਸਮਾਪਤ ਹੁੰਦੇ ਹਨ। sep ਅਤੇ end ਦੋਵੇਂ strings ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ; ਇਹNoneਵੀ ਹੋ ਸਕਦੇ ਹਨ, ਜਿਸਦਾ ਅਰਥ ਹੈ ਕਿ ਮੂਲ ਮੁੱਲ ਵਰਤੇ ਜਾਣ। ਜੇ objects ਨਾ ਦਿੱਤੇ ਜਾਣ, ਤਾਂprint()ਸਿਰਫ਼ end ਲਿਖੇਗਾ।file argument ਇੱਕ ਅਜਿਹਾ object ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਵਿੱਚ
write(string)method ਹੋਵੇ। ਜੇ ਇਹ ਮੌਜੂਦ ਨਾ ਹੋਵੇ ਜਾਂNoneਹੋਵੇ, ਤਾਂsys.stdoutਵਰਤਿਆ ਜਾਵੇਗਾ। ਕਿਉਂਕਿ ਪ੍ਰਿੰਟ ਕੀਤੇ arguments ਨੂੰ text strings ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ, ਇਸ ਲਈprint()ਨੂੰ binary mode file objects ਨਾਲ ਨਹੀਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ। ਉਨ੍ਹਾਂ ਲਈfile.write(...)ਵਰਤੋ।ਆਉਟਪੁੱਟ buffering ਆਮ ਤੌਰ 'ਤੇ file ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਪਰ ਜੇ flush true ਹੋਵੇ, ਤਾਂ stream ਨੂੰ ਜ਼ਬਰਦਸਤੀ flush ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
Changed in version 3.3: flush keyword argument ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ।
- class property(fget=None, fset=None, fdel=None, doc=None)¶
ਇੱਕ property ਗੁਣ ਵਾਪਸ ਕਰਦਾ ਹੈ।
fget attribute ਦਾ ਮੁੱਲ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਹੈ। fset attribute ਦਾ ਮੁੱਲ ਸੈੱਟ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਹੈ। fdel attribute ਦਾ ਮੁੱਲ ਮਿਟਾਉਣ ਲਈ ਫੰਕਸ਼ਨ ਹੈ। doc attribute ਲਈ docstring ਬਣਾਉਂਦਾ ਹੈ।
ਇੱਕ ਆਮ ਵਰਤੋਂ ਇਹ ਹੈ ਕਿ ਇੱਕ ਪ੍ਰਬੰਧਿਤ ਗੁਣ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਜਾਵੇ
x:class C: def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.")
ਜੇ c, C ਦਾ ਇੱਕ instance ਹੈ, ਤਾਂ
c.xgetter ਨੂੰ ਕਾਲ ਕਰੇਗਾ,c.x = valuesetter ਨੂੰ ਕਾਲ ਕਰੇਗਾ ਅਤੇdel c.xdeleter ਨੂੰ ਕਾਲ ਕਰੇਗਾ।ਜੇ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ, ਤਾਂ doc property attribute ਦੀ docstring ਹੋਵੇਗੀ। ਨਹੀਂ ਤਾਂ property, fget ਦੀ docstring (ਜੇ ਉਹ ਮੌਜੂਦ ਹੋਵੇ) ਕਾਪੀ ਕਰੇਗੀ। ਇਸ ਨਾਲ
@propertyਨੂੰ decorator ਵਜੋਂ ਵਰਤ ਕੇ ਸਿਰਫ਼-ਪੜ੍ਹਨਯੋਗ properties ਆਸਾਨੀ ਨਾਲ ਬਣਾਉਣਾ ਸੰਭਵ ਹੁੰਦਾ ਹੈ:class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltage
@propertydecoratorvoltage()method ਨੂੰ ਉਸੇ ਨਾਮ ਵਾਲੇ read-only attribute ਲਈ "getter" ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ ਅਤੇ voltage ਦੀ docstring ਨੂੰ "Get the current voltage." ਵਜੋਂ ਸੈੱਟ ਕਰਦਾ ਹੈ।- @getter¶
- @setter¶
- @deleter¶
ਇੱਕ property object ਵਿੱਚ
getter,setterਅਤੇdeletermethods ਹੁੰਦੀਆਂ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ decorators ਵਜੋਂ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਇਹ property ਦੀ ਇੱਕ ਕਾਪੀ ਬਣਾਉਂਦੀਆਂ ਹਨ ਜਿਸ ਵਿੱਚ ਸੰਬੰਧਿਤ accessor function ਨੂੰ decorated function ਨਾਲ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਸ ਨੂੰ ਇੱਕ ਉਦਾਹਰਨ ਨਾਲ ਸਭ ਤੋਂ ਵਧੀਆ ਢੰਗ ਨਾਲ ਸਮਝਿਆ ਜਾ ਸਕਦਾ ਹੈ:class C: def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
ਇਹ ਕੋਡ ਪਹਿਲੀ ਉਦਾਹਰਨ ਦੇ ਬਿਲਕੁਲ ਬਰਾਬਰ ਹੈ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਵਾਧੂ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਮੂਲ property ਵਾਲਾ ਹੀ ਨਾਮ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ (ਇਸ ਮਾਮਲੇ ਵਿੱਚ
x)।ਵਾਪਸ ਕੀਤੇ ਗਏ property ਆਬਜੈਕਟ ਵਿੱਚ constructor ਆਰਗੂਮੈਂਟਾਂ ਦੇ ਅਨੁਸਾਰ
fget,fsetਅਤੇfdelਗੁਣ ਵੀ ਹੁੰਦੇ ਹਨ।
Changed in version 3.5: ਹੁਣ property ਆਬਜੈਕਟਾਂ ਦੇ docstring ਲਿਖਣਯੋਗ ਹਨ।
- __name__¶
ਇਹ ਗੁਣ property ਦਾ ਨਾਮ ਸੰਭਾਲਦਾ ਹੈ। property ਦਾ ਨਾਮ runtime ਦੌਰਾਨ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ।
Added in version 3.13.
- class range(stop, /)
- class range(start, stop, step=1, /)
ਫੰਕਸ਼ਨ ਹੋਣ ਦੀ ਬਜਾਇ,
rangeਅਸਲ ਵਿੱਚ ਇੱਕ immutable sequence type ਹੈ, ਜਿਵੇਂ ਕਿ Ranges ਅਤੇ Sequence Types --- list, tuple, range ਵਿੱਚ ਦਰਸਾਇਆ ਗਿਆ ਹੈ।
- repr(object, /)¶
ਕਿਸੇ ਓਬਜੈਕਟ ਦੀ ਪ੍ਰਿੰਟ ਕਰਨ ਯੋਗ ਪ੍ਰਤੀਨਿਧਤਾ ਵਾਲੀ ਸਟਰਿੰਗ ਵਾਪਸ ਕਰੋ। ਕਈ ਕਿਸਮਾਂ ਲਈ, ਇਹ ਫੰਕਸ਼ਨ ਇੱਕ ਐਸੀ ਸਟਰਿੰਗ ਵਾਪਸ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ ਜੋ
eval()ਨੂੰ ਪਾਸ ਕਰਨ 'ਤੇ ਉਹੀ ਮੁੱਲ ਵਾਲਾ ਓਬਜੈਕਟ ਦੇਵੇ; ਨਹੀਂ ਤਾਂ, ਪ੍ਰਤੀਨਿਧਤਾ ਕੋਣ-ਬ੍ਰੈਕਟਾਂ ਵਿੱਚ ਬੰਦ ਇੱਕ ਸਟਰਿੰਗ ਹੁੰਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ ਓਬਜੈਕਟ ਦੀ ਕਿਸਮ ਦਾ ਨਾਮ ਅਤੇ ਅਕਸਰ ਓਬਜੈਕਟ ਦਾ ਨਾਮ ਅਤੇ ਪਤਾ ਵੀ ਸ਼ਾਮਿਲ ਹੁੰਦਾ ਹੈ। ਇੱਕ ਕਲਾਸ ਆਪਣੇ ਇੰਸਟੈਂਸਾਂ ਲਈ ਇਹ ਫੰਕਸ਼ਨ ਕੀ ਵਾਪਸ ਕਰੇਗਾ, ਇਹ ਨਿਯੰਤਰਿਤ ਕਰਨ ਲਈ ਇੱਕ__repr__()ਵਿਧੀ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੀ ਹੈ। ਜੇsys.displayhook()ਉਪਲਬਧ ਨਾ ਹੋਵੇ, ਤਾਂ ਇਹ ਫੰਕਸ਼ਨRuntimeErrorਉਠਾਏਗਾ।ਇਸ ਕਲਾਸ ਦੀ ਇੱਕ ਕਸਟਮ ਨੁਮਾਇੰਦਗੀ ਹੈ ਜਿਸਦਾ ਮੁਲਾਂਕਣ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:
class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f"Person({self.name!r}, {self.age!r})"
- reversed(object, /)¶
ਇੱਕ ਉਲਟਾ iterator ਵਾਪਸ ਕਰਦਾ ਹੈ। Argument ਇੱਕ ਅਜਿਹਾ object ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਜਿਸ ਵਿੱਚ
__reversed__()method ਹੋਵੇ ਜਾਂ ਜੋ sequence protocol ਦਾ ਸਮਰਥਨ ਕਰਦਾ ਹੋਵੇ (__len__()method ਅਤੇ__getitem__()method ਜਿਸਦੇ integer arguments0ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ)।
- round(number, ndigits=None)¶
ਦਸ਼ਮਲਵ ਬਿੰਦੂ ਤੋਂ ਬਾਅਦ ndigits ਸ਼ੁੱਧਤਾ ਤੱਕ ਗੋਲ ਕੀਤਾ ਹੋਇਆ number ਵਾਪਸ ਕਰੋ। ਜੇ ndigits ਛੱਡ ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ ਜਾਂ
Noneਹੋਵੇ, ਤਾਂ ਇਨਪੁੱਟ ਦੇ ਸਭ ਤੋਂ ਨੇੜਲੇ ਪੂਰਨ ਅੰਕ ਨੂੰ ਵਾਪਸ ਕਰਦਾ ਹੈ।round()ਨੂੰ ਸਮਰਥਨ ਦੇਣ ਵਾਲੀਆਂ built-in ਕਿਸਮਾਂ ਲਈ, ਮੁੱਲਾਂ ਨੂੰ 10 ਦੀ ਘਾਤ minus ndigits ਦੇ ਸਭ ਤੋਂ ਨੇੜਲੇ multiple ਤੱਕ ਗੋਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਜੇ ਦੋ multiples ਇਕੋ ਜਿਹੇ ਨੇੜੇ ਹੋਣ, ਤਾਂ even ਚੋਣ ਵੱਲ ਗੋਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ (ਉਦਾਹਰਨ ਲਈround(0.5)ਅਤੇround(-0.5)ਦੋਵੇਂ0ਹਨ, ਜਦਕਿround(1.5)2ਹੈ)। ndigits ਲਈ ਕੋਈ ਵੀ integer ਮੁੱਲ (positive, zero ਜਾਂ negative) ਵੈਧ ਹੈ। ਜੇ ndigits ਛੱਡ ਦਿੱਤਾ ਜਾਵੇ ਜਾਂNoneਹੋਵੇ, ਤਾਂ ਨਤੀਜਾ integer ਹੁੰਦਾ ਹੈ; ਨਹੀਂ ਤਾਂ ਨਤੀਜੇ ਦੀ ਕਿਸਮ number ਵਰਗੀ ਹੀ ਹੁੰਦੀ ਹੈ।ਸਧਾਰਣ Python ਆਬਜੈਕਟ
numberਲਈ,roundਕਾਰਵਾਈ ਨੂੰnumber.__round__ਨੂੰ ਸੌਂਪਦਾ ਹੈ।Note
float ਮੁੱਲਾਂ ਲਈ
round()ਦਾ ਵਿਵਹਾਰ ਹੈਰਾਨੀਜਨਕ ਹੋ ਸਕਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ,round(2.675, 2)ਉਮੀਦ ਕੀਤੇ2.68ਦੀ ਬਜਾਏ2.67ਦਿੰਦਾ ਹੈ। ਇਹ ਕੋਈ bug ਨਹੀਂ ਹੈ; ਇਸਦਾ ਕਾਰਨ ਇਹ ਹੈ ਕਿ ਬਹੁਤ ਸਾਰੇ decimal fractions ਨੂੰ float ਵਜੋਂ ਬਿਲਕੁਲ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਦਰਸਾਇਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਵਧੇਰੇ ਜਾਣਕਾਰੀ ਲਈ ਫਲੋਟਿੰਗ-ਪੌਇੰਟ ਅੰਕਗਣਿਤ: ਸਮੱਸਿਆਵਾਂ ਅਤੇ ਸੀਮਾਵਾਂ ਵੇਖੋ।
- class set(iterable=(), /)
ਇੱਕ ਨਵਾਂ
setobject ਵਾਪਸ ਕਰੋ, ਚਾਹੋ ਤਾਂ iterable ਤੋਂ ਲਏ ਗਏ elements ਨਾਲ।setਇੱਕ built-in class ਹੈ। ਇਸ class ਬਾਰੇ ਦਸਤਾਵੇਜ਼ੀਕਰਨ ਲਈ Set Types --- set, frozenset ਵੀ ਵੇਖੋ।ਹੋਰ containers ਲਈ built-in
frozenset,list,tuple,dictਕਲਾਸਾਂ ਅਤੇcollectionsਮੋਡੀਊਲ ਵੇਖੋ।
- setattr(object, name, value, /)¶
ਇਹ
getattr()ਦਾ ਸਮਕੱਖ ਹੈ। Arguments ਇੱਕ object, ਇੱਕ string ਅਤੇ ਕੋਈ ਵੀ ਮੁੱਲ ਹੁੰਦੇ ਹਨ। String ਕਿਸੇ ਮੌਜੂਦਾ attribute ਜਾਂ ਨਵੇਂ attribute ਦਾ ਨਾਮ ਹੋ ਸਕਦੀ ਹੈ। ਜੇ object ਇਜਾਜ਼ਤ ਦੇਵੇ, ਤਾਂ ਇਹ ਫੰਕਸ਼ਨ ਉਸ attribute ਨੂੰ ਦਿੱਤਾ ਮੁੱਲ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ,setattr(x, 'foobar', 123),x.foobar = 123ਦੇ ਬਰਾਬਰ ਹੈ।name ਦਾ Names (identifiers and keywords) ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ Python identifier ਹੋਣਾ ਲਾਜ਼ਮੀ ਨਹੀਂ ਹੈ, ਜਦ ਤੱਕ object ਖੁਦ ਇਸਨੂੰ ਲਾਗੂ ਨਾ ਕਰੇ, ਜਿਵੇਂ ਕਿ custom
__getattribute__()ਜਾਂ__slots__ਰਾਹੀਂ। ਜਿਸ attribute ਦਾ ਨਾਮ identifier ਨਹੀਂ ਹੈ, ਉਸਨੂੰ dot notation ਨਾਲ ਨਹੀਂ ਪਹੁੰਚਿਆ ਜਾ ਸਕਦਾ, ਪਰgetattr()ਆਦਿ ਰਾਹੀਂ ਪਹੁੰਚਿਆ ਜਾ ਸਕਦਾ ਹੈ।Note
ਕਿਉਂਕਿ private name mangling compilation ਸਮੇਂ ਹੁੰਦੀ ਹੈ, ਇਸ ਲਈ ਕਿਸੇ private attribute (ਜਿਸਦੇ ਨਾਮ ਦੇ ਅੱਗੇ ਦੋ underscores ਹੁੰਦੇ ਹਨ) ਨੂੰ
setattr()ਨਾਲ ਸੈੱਟ ਕਰਨ ਲਈ ਉਸਦਾ ਨਾਮ ਹੱਥੋਂ mangle ਕਰਨਾ ਪੈਂਦਾ ਹੈ।
- class sentinel(name, /, *, repr=None)¶
ਇੱਕ ਨਵਾਂ ਵਿਲੱਖਣ sentinel ਆਬਜੈਕਟ ਵਾਪਸ ਕਰੋ। name ਇੱਕ
strਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ ਅਤੇ ਮੂਲ ਰੂਪ ਵਿੱਚ ਵਾਪਸ ਕੀਤੇ ਗਏ ਆਬਜੈਕਟ ਦੀ representation ਵਜੋਂ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ:>>> MISSING = sentinel("MISSING") >>> MISSING MISSING
ਵਿਕਲਪਿਕ repr ਆਰਗੂਮੈਂਟ ਨੂੰ ਵੱਖਰੀ representation ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ:
>>> MISSING = sentinel("MISSING", repr="<MISSING>") >>> MISSING <MISSING>
Sentinel ਆਬਜੈਕਟ truthy ਹੁੰਦੇ ਹਨ ਅਤੇ ਕੇਵਲ ਆਪਣੇ ਆਪ ਨਾਲ ਹੀ ਬਰਾਬਰ ਮੰਨੇ ਜਾਂਦੇ ਹਨ। ਇਨ੍ਹਾਂ ਦੀ ਤੁਲਨਾ
isoperator ਨਾਲ ਕਰਨ ਲਈ ਬਣਾਈ ਗਈ ਹੈ।sentinelsubclassing ਦਾ ਸਮਰਥਨ ਨਹੀਂ ਕਰਦਾ।Sentinel ਆਬਜੈਕਟ ਦੀਆਂ shallow ਅਤੇ deep copies ਉਸੇ ਆਬਜੈਕਟ ਨੂੰ ਵਾਪਸ ਕਰਦੀਆਂ ਹਨ।
ਰਵਾਇਤੀ ਤੌਰ 'ਤੇ sentinel ਆਬਜੈਕਟਾਂ ਨੂੰ ਉਸੇ ਨਾਮ ਵਾਲੇ ਵੇਰੀਏਬਲ ਨਾਲ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਤਰੀਕੇ ਨਾਲ ਪਰਿਭਾਸ਼ਿਤ sentinel type hints ਵਿੱਚ ਵਰਤੇ ਜਾ ਸਕਦੇ ਹਨ:
MISSING = sentinel("MISSING") def next_value(default: int | MISSING = MISSING): ...
Sentinel ਆਬਜੈਕਟ type expressions ਵਿੱਚ ਵਰਤੋਂ ਲਈ | operator ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਨ।
Picklingਉਹਨਾਂ sentinel objects ਲਈ ਸਮਰਥਿਤ ਹੈ ਜੋ ਕਿਸੇ module ਦੇ global scope ਵਿੱਚ sentinel ਦੇ ਨਾਮ ਨਾਲ ਮਿਲਦੇ ਨਾਮ ਹੇਠ ਰੱਖੇ ਗਏ ਹੋਣ, ਅਤੇ ਉਹਨਾਂ sentinels ਲਈ ਵੀ ਜੋ class scope ਵਿੱਚ sentinel ਦੇ qualified name ਨਾਲ ਮਿਲਦੇ ਨਾਮ ਹੇਠ ਰੱਖੇ ਗਏ ਹੋਣ। ਹੋਰ sentinels, ਜਿਵੇਂ ਕਿ function scope ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ sentinels, picklable ਨਹੀਂ ਹੁੰਦੇ। Pickling ਤੋਂ ਬਾਅਦ ਵੀ sentinel ਦੀ ਪਹਿਚਾਣ ਸੁਰੱਖਿਅਤ ਰਹਿੰਦੀ ਹੈ:import pickle PICKLABLE = sentinel("PICKLABLE") assert pickle.loads(pickle.dumps(PICKLABLE)) is PICKLABLE class Cls: PICKLABLE = sentinel("Cls.PICKLABLE") assert pickle.loads(pickle.dumps(Cls.PICKLABLE)) is Cls.PICKLABLE
Sentinel ਆਬਜੈਕਟਾਂ ਦੇ ਹੇਠ ਲਿਖੇ ਗੁਣ ਹੁੰਦੇ ਹਨ:
- __name__¶
sentinel ਦਾ ਨਾਮ।
- __module__¶
ਉਸ ਮੋਡੀਊਲ ਦਾ ਨਾਮ ਜਿੱਥੇ sentinel ਬਣਾਇਆ ਗਿਆ ਸੀ। ਇਹ ਗੁਣ ਲਿਖਣਯੋਗ ਹੈ।
Added in version 3.15.
- class slice(stop, /)¶
- class slice(start, stop, step=None, /)
range(start, stop, step)ਦੁਆਰਾ ਨਿਰਧਾਰਤ ਇੰਡੈਕਸਾਂ ਦੇ ਸਮੂਹ ਨੂੰ ਦਰਸਾਉਂਦਾ ਇੱਕ slice ਆਬਜੈਕਟ ਵਾਪਸ ਕਰੋ। start ਅਤੇ step ਆਰਗੂਮੈਂਟਾਂ ਦਾ ਮੂਲ ਮੁੱਲNoneਹੈ।ਜਦੋਂ slicing syntax ਵਰਤੀ ਜਾਂਦੀ ਹੈ ਤਾਂ slice ਆਬਜੈਕਟ ਵੀ ਬਣਾਏ ਜਾਂਦੇ ਹਨ। ਉਦਾਹਰਨ ਲਈ:
a[start:stop:step]ਜਾਂa[start:stop, i]।ਵਿਕਲਪਿਕ ਸੰਸਕਰਣ ਲਈ ਜੋ ਇੱਕ iterator ਵਾਪਸ ਕਰਦਾ ਹੈ,
itertools.islice()ਵੇਖੋ।
- sorted(iterable, /, *, key=None, reverse=False)¶
iterable ਦੇ ਤੱਤਾਂ ਤੋਂ ਇੱਕ ਨਵੀਂ ਕ੍ਰਮਬੱਧ ਸੂਚੀ ਵਾਪਸ ਕਰੋ।
ਇਸ ਵਿੱਚ ਦੋ ਵਿਕਲਪਿਕ ਆਰਗੂਮੈਂਟ ਹਨ ਜਿਨ੍ਹਾਂ ਨੂੰ keyword arguments ਵਜੋਂ ਦੇਣਾ ਲਾਜ਼ਮੀ ਹੈ।
key ਇੱਕ ਐਸਾ ਫੰਕਸ਼ਨ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜੋ ਇੱਕ ਆਰਗੂਮੈਂਟ ਲੈਂਦਾ ਹੈ ਅਤੇ iterable ਦੇ ਹਰ ਤੱਤ ਤੋਂ ਤੁਲਨਾ ਲਈ ਕੁੰਜੀ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ (ਉਦਾਹਰਨ ਲਈ
key=str.lower)। ਮੂਲ ਮੁੱਲNoneਹੈ (ਤੱਤਾਂ ਦੀ ਸਿੱਧੀ ਤੁਲਨਾ ਕੀਤੀ ਜਾਂਦੀ ਹੈ)।reverse ਇੱਕ boolean ਮੁੱਲ ਹੈ। ਜੇ ਇਸ ਨੂੰ
Trueਕੀਤਾ ਜਾਵੇ ਤਾਂ ਸੂਚੀ ਦੇ ਤੱਤਾਂ ਨੂੰ ਇਸ ਤਰ੍ਹਾਂ ਕ੍ਰਮਬੱਧ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਜਿਵੇਂ ਹਰ ਤੁਲਨਾ ਉਲਟੀ ਹੋਵੇ।ਪੁਰਾਣੀ ਸ਼ੈਲੀ ਦੇ cmp ਫੰਕਸ਼ਨ ਨੂੰ key ਫੰਕਸ਼ਨ ਵਿੱਚ ਬਦਲਣ ਲਈ
functools.cmp_to_key()ਵਰਤੋ।Built-in
sorted()ਫੰਕਸ਼ਨ ਦੇ stable ਹੋਣ ਦੀ ਗਾਰੰਟੀ ਹੈ। ਕੋਈ sort ਉਸ ਵੇਲੇ stable ਕਿਹਾ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਉਹ ਇੱਕੋ ਜਿਹੀ ਤੁਲਨਾ ਵਾਲੇ ਤੱਤਾਂ ਦੀ ਆਪਸੀ ਕ੍ਰਮਵਾਰਤਾ ਨੂੰ ਨਹੀਂ ਬਦਲਦਾ। ਇਹ ਕਈ ਪੜਾਵਾਂ ਵਿੱਚ sorting ਕਰਨ ਲਈ ਲਾਭਦਾਇਕ ਹੈ (ਉਦਾਹਰਨ ਲਈ ਪਹਿਲਾਂ department ਅਨੁਸਾਰ ਅਤੇ ਫਿਰ salary grade ਅਨੁਸਾਰ sort ਕਰਨਾ)।Sort algorithm ਤੱਤਾਂ ਵਿਚਕਾਰ ਕੇਵਲ
<ਤੁਲਨਾਵਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਭਾਵੇਂ sorting ਲਈ__lt__()method ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਕਾਫ਼ੀ ਹੈ, PEP 8 ਸਿਫ਼ਾਰਸ਼ ਕਰਦਾ ਹੈ ਕਿ ਸਾਰੀਆਂ ਛੇ rich comparisons ਲਾਗੂ ਕੀਤੀਆਂ ਜਾਣ। ਇਸ ਨਾਲ ਉਹਨਾਂ bugs ਤੋਂ ਬਚਣ ਵਿੱਚ ਮਦਦ ਮਿਲਦੀ ਹੈ ਜੋ ਇੱਕੋ ਡਾਟਾ ਨੂੰmax()ਵਰਗੇ ਹੋਰ ordering tools ਨਾਲ ਵਰਤਣ ਸਮੇਂ ਪੈਦਾ ਹੋ ਸਕਦੇ ਹਨ, ਕਿਉਂਕਿ ਉਹ ਵੱਖਰੇ underlying methods 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹਨ। ਸਾਰੀਆਂ ਛੇ ਤੁਲਨਾਵਾਂ ਲਾਗੂ ਕਰਨ ਨਾਲ mixed type comparisons ਵਿੱਚ ਹੋਣ ਵਾਲੀ ਉਲਝਣ ਤੋਂ ਵੀ ਬਚਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਜਿੱਥੇ reflected__gt__()method ਨੂੰ ਕਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।sorting ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਅਤੇ ਸੰਖੇਪ tutorial ਲਈ ਸੋਰਟਿੰਗ ਤਕਨੀਕਾਂ ਵੇਖੋ।
- @staticmethod¶
ਇੱਕ method ਨੂੰ static method ਵਿੱਚ ਬਦਲੋ।
Static method ਨੂੰ ਕੋਈ implicit ਪਹਿਲਾ ਆਰਗੂਮੈਂਟ ਨਹੀਂ ਮਿਲਦਾ। Static method ਘੋਸ਼ਿਤ ਕਰਨ ਲਈ ਇਹ ਰੂਪ ਵਰਤੋ:
class C: @staticmethod def f(arg1, arg2, argN): ...
@staticmethodਰੂਪ ਇੱਕ function decorator ਹੈ — ਵੇਰਵਿਆਂ ਲਈ Function definitions ਵੇਖੋ।ਇੱਕ static method ਨੂੰ class ਉੱਤੇ (ਜਿਵੇਂ
C.f()) ਜਾਂ instance ਉੱਤੇ (ਜਿਵੇਂC().f()) ਦੋਵੇਂ ਤਰੀਕਿਆਂ ਨਾਲ ਕਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਇਸ ਤੋਂ ਇਲਾਵਾ, static method descriptor ਆਪ ਵੀ callable ਹੁੰਦਾ ਹੈ, ਇਸ ਲਈ ਇਸਨੂੰ class definition ਦੇ ਅੰਦਰ ਵੀ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ (ਜਿਵੇਂf())।Python ਵਿੱਚ static methods, Java ਜਾਂ C++ ਵਿੱਚ ਮਿਲਣ ਵਾਲੇ static methods ਦੇ ਸਮਾਨ ਹਨ। ਇਸਦੇ ਨਾਲ
@classmethodਵੀ ਵੇਖੋ, ਜੋ alternate class constructors ਬਣਾਉਣ ਲਈ ਲਾਭਦਾਇਕ ਇੱਕ variant ਹੈ।ਹੋਰ decorators ਵਾਂਗ,
staticmethodਨੂੰ ਇੱਕ ਆਮ function ਵਜੋਂ ਕਾਲ ਕਰਨਾ ਅਤੇ ਉਸਦੇ ਨਤੀਜੇ ਨਾਲ ਕੰਮ ਕਰਨਾ ਵੀ ਸੰਭਵ ਹੈ। ਇਹ ਕੁਝ ਹਾਲਤਾਂ ਵਿੱਚ ਲੋੜੀਂਦਾ ਹੁੰਦਾ ਹੈ ਜਦੋਂ ਤੁਹਾਨੂੰ class body ਦੇ ਅੰਦਰੋਂ ਕਿਸੇ function ਦਾ reference ਚਾਹੀਦਾ ਹੋਵੇ ਅਤੇ ਤੁਸੀਂ ਉਸਦੀ instance method ਵਿੱਚ ਹੋਣ ਵਾਲੀ automatic transformation ਤੋਂ ਬਚਣਾ ਚਾਹੁੰਦੇ ਹੋ। ਅਜਿਹੀਆਂ ਹਾਲਤਾਂ ਵਿੱਚ ਇਹ idiom ਵਰਤੋ:def regular_function(): ... class C: method = staticmethod(regular_function)
Static methods ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ The standard type hierarchy ਵੇਖੋ।
Changed in version 3.10: Static methods ਹੁਣ method attributes (
__module__,__name__,__qualname__,__doc__ਅਤੇ__annotations__) ਨੂੰ inherit ਕਰਦੇ ਹਨ, ਉਨ੍ਹਾਂ ਕੋਲ ਨਵਾਂ__wrapped__attribute ਵੀ ਹੁੰਦਾ ਹੈ, ਅਤੇ ਹੁਣ ਉਨ੍ਹਾਂ ਨੂੰ ਆਮ functions ਵਾਂਗ ਕਾਲ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
- class str(*, encoding='utf-8', errors='strict')
- class str(object)
- class str(object, encoding, errors='strict')
- class str(object, *, errors)
object ਦਾ
strਰੂਪ ਵਾਪਸ ਕਰੋ। ਵੇਰਵਿਆਂ ਲਈstr()ਵੇਖੋ।strbuilt-in string class ਹੈ। Strings ਬਾਰੇ ਆਮ ਜਾਣਕਾਰੀ ਲਈ Text Sequence Type --- str ਵੇਖੋ।
- sum(iterable, /, start=0)¶
start ਅਤੇ iterable ਦੇ ਤੱਤਾਂ ਨੂੰ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਜੋੜ ਕੇ ਕੁੱਲ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ। iterable ਦੇ ਤੱਤ ਆਮ ਤੌਰ 'ਤੇ ਸੰਖਿਆਵਾਂ ਹੁੰਦੇ ਹਨ ਅਤੇ start ਮੁੱਲ ਨੂੰ string ਹੋਣ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ।
ਕੁਝ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਲਈ
sum()ਦੇ ਚੰਗੇ ਵਿਕਲਪ ਮੌਜੂਦ ਹਨ। Strings ਦੀ ਲੜੀ ਨੂੰ ਜੋੜਨ ਦਾ ਤਰਜੀਹੀ ਅਤੇ ਤੇਜ਼ ਤਰੀਕਾ''.join(sequence)ਨੂੰ ਕਾਲ ਕਰਨਾ ਹੈ। ਵੱਧ ਸ਼ੁੱਧਤਾ ਨਾਲ floating-point ਮੁੱਲ ਜੋੜਣ ਲਈmath.fsum()ਵੇਖੋ। ਕਈ iterables ਨੂੰ ਜੋੜਣ ਲਈitertools.chain()ਵਰਤਣ ਬਾਰੇ ਸੋਚੋ।Changed in version 3.8: start ਪੈਰਾਮੀਟਰ ਨੂੰ keyword argument ਵਜੋਂ ਦਿੱਤਾ ਜਾ ਸਕਦਾ ਹੈ।
Changed in version 3.12: Float ਮੁੱਲਾਂ ਦੇ ਜੋੜ ਲਈ ਹੁਣ ਇੱਕ ਐਲਗੋਰਿਦਮ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜੋ ਜ਼ਿਆਦਾਤਰ builds ਵਿੱਚ ਵੱਧ ਸ਼ੁੱਧਤਾ ਅਤੇ ਬਿਹਤਰ commutativity ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
Changed in version 3.14: Complex ਸੰਖਿਆਵਾਂ ਦੇ ਜੋੜ ਲਈ ਵਿਸ਼ੇਸ਼ ਸਮਰਥਨ ਜੋੜਿਆ ਗਿਆ ਹੈ, ਜੋ floats ਦੇ ਜੋੜ ਵਾਲੇ ਹੀ ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।
- class super¶
- class super(type, object_or_type=None, /)
ਇੱਕ proxy object ਵਾਪਸ ਕਰੋ ਜੋ method calls ਨੂੰ type ਦੀ parent ਜਾਂ sibling class ਵੱਲ delegate ਕਰਦਾ ਹੈ। ਇਹ ਉਹਨਾਂ inherited methods ਤੱਕ ਪਹੁੰਚ ਲਈ ਲਾਭਦਾਇਕ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਕਿਸੇ class ਵਿੱਚ override ਕੀਤਾ ਗਿਆ ਹੋਵੇ।
object_or_type ਉਸ method resolution order ਨੂੰ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਖੋਜ ਕੀਤੀ ਜਾਣੀ ਹੈ। ਖੋਜ type ਤੋਂ ਤੁਰੰਤ ਬਾਅਦ ਆਉਣ ਵਾਲੀ class ਤੋਂ ਸ਼ੁਰੂ ਹੁੰਦੀ ਹੈ।
ਉਦਾਹਰਨ ਲਈ, ਜੇ object_or_type ਦਾ
__mro__D -> B -> C -> A -> objectਹੋਵੇ ਅਤੇ type ਦਾ ਮੁੱਲBਹੋਵੇ, ਤਾਂsuper()C -> A -> objectਵਿੱਚ ਖੋਜ ਕਰਦਾ ਹੈ।object_or_type ਨਾਲ ਸੰਬੰਧਿਤ class ਦਾ
__mro__attribute ਉਸ method resolution search order ਦੀ ਸੂਚੀ ਦਿੰਦਾ ਹੈ ਜੋgetattr()ਅਤੇsuper()ਦੋਵਾਂ ਦੁਆਰਾ ਵਰਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ attribute dynamic ਹੈ ਅਤੇ inheritance hierarchy ਵਿੱਚ ਤਬਦੀਲੀ ਆਉਣ 'ਤੇ ਬਦਲ ਸਕਦਾ ਹੈ।ਜੇ ਦੂਜਾ argument ਛੱਡ ਦਿੱਤਾ ਜਾਵੇ, ਤਾਂ ਵਾਪਸ ਕੀਤਾ ਗਿਆ super object unbound ਹੁੰਦਾ ਹੈ। ਜੇ ਦੂਜਾ argument ਇੱਕ object ਹੋਵੇ, ਤਾਂ
isinstance(obj, type)ਸੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੇ ਦੂਜਾ argument ਇੱਕ type ਹੋਵੇ, ਤਾਂissubclass(type2, type)ਸੱਚ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ (ਇਹ classmethods ਲਈ ਲਾਭਦਾਇਕ ਹੈ)।ਜਦੋਂ ਇਸਨੂੰ ਕਿਸੇ class ਦੀ ਆਮ method ਦੇ ਅੰਦਰ ਸਿੱਧੇ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਦੋਵੇਂ arguments ਛੱਡੇ ਜਾ ਸਕਦੇ ਹਨ ("zero-argument
super()")। ਇਸ ਹਾਲਤ ਵਿੱਚ type enclosing class ਹੋਵੇਗੀ ਅਤੇ obj ਤੁਰੰਤ enclosing function ਦਾ ਪਹਿਲਾ argument ਹੋਵੇਗਾ (ਆਮ ਤੌਰ 'ਤੇself)। (ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ zero-argumentsuper()nested functions ਦੇ ਅੰਦਰ, ਜਿਵੇਂ generator expressions, ਵਿੱਚ ਉਮੀਦ ਅਨੁਸਾਰ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ ਕਿਉਂਕਿ ਉਹ ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ nested functions ਬਣਾਉਂਦੇ ਹਨ।)super ਦੇ ਦੋ ਆਮ ਵਰਤੋਂ-ਮਾਮਲੇ ਹਨ। Single inheritance ਵਾਲੀ class hierarchy ਵਿੱਚ super ਦੀ ਵਰਤੋਂ parent classes ਨੂੰ ਬਿਨਾਂ ਸਿੱਧਾ ਨਾਮ ਲਏ ਸੰਬੋਧਨ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਕੋਡ ਦੀ ਸੰਭਾਲ ਕਰਨਾ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ। ਇਹ ਵਰਤੋਂ ਹੋਰ programming languages ਵਿੱਚ super ਦੀ ਵਰਤੋਂ ਨਾਲ ਕਾਫ਼ੀ ਮਿਲਦੀ ਹੈ।
ਦੂਜਾ ਵਰਤੋਂ-ਮਾਮਲਾ dynamic execution environment ਵਿੱਚ cooperative multiple inheritance ਦਾ ਸਮਰਥਨ ਕਰਨਾ ਹੈ। ਇਹ ਵਰਤੋਂ Python ਲਈ ਵਿਲੱਖਣ ਹੈ ਅਤੇ statically compiled languages ਜਾਂ ਉਹਨਾਂ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਨਹੀਂ ਮਿਲਦੀ ਜੋ ਕੇਵਲ single inheritance ਦਾ ਸਮਰਥਨ ਕਰਦੀਆਂ ਹਨ। ਇਸ ਨਾਲ "diamond diagrams" ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਸੰਭਵ ਬਣਦਾ ਹੈ, ਜਿੱਥੇ ਕਈ base classes ਇੱਕੋ method ਨੂੰ ਲਾਗੂ ਕਰਦੀਆਂ ਹਨ। ਚੰਗੇ design ਅਨੁਸਾਰ ਅਜਿਹੀਆਂ implementations ਵਿੱਚ ਹਰ ਹਾਲਤ ਵਿੱਚ ਇੱਕੋ calling signature ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ (ਕਿਉਂਕਿ calls ਦਾ ਕ੍ਰਮ runtime ਦੌਰਾਨ ਨਿਰਧਾਰਤ ਹੁੰਦਾ ਹੈ, ਕਿਉਂਕਿ ਉਹ ਕ੍ਰਮ class hierarchy ਵਿੱਚ ਤਬਦੀਲੀਆਂ ਦੇ ਅਨੁਸਾਰ ਬਦਲ ਸਕਦਾ ਹੈ, ਅਤੇ ਕਿਉਂਕਿ ਉਸ ਕ੍ਰਮ ਵਿੱਚ ਅਜਿਹੀਆਂ sibling classes ਵੀ ਸ਼ਾਮਲ ਹੋ ਸਕਦੀਆਂ ਹਨ ਜੋ runtime ਤੋਂ ਪਹਿਲਾਂ ਜਾਣੀਆਂ ਨਾ ਹੋਣ)।
ਦੋਵੇਂ ਵਰਤੋਂ ਦੇ ਮਾਮਲਿਆਂ ਵਿੱਚ, ਇੱਕ ਆਮ superclass ਕਾਲ ਇਸ ਤਰ੍ਹਾਂ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ:
class C(B): def method(self, arg): super().method(arg) # This does the same thing as: # super(C, self).method(arg)
ਮੈਥਡ lookup ਤੋਂ ਇਲਾਵਾ,
super()attribute lookup ਲਈ ਵੀ ਕੰਮ ਕਰਦਾ ਹੈ। ਇਸਦੀ ਇੱਕ ਸੰਭਾਵਿਤ ਵਰਤੋਂ parent ਜਾਂ sibling class ਵਿੱਚ descriptors ਨੂੰ ਕਾਲ ਕਰਨਾ ਹੈ।ਧਿਆਨ ਦਿਓ ਕਿ
super()ਨੂੰsuper().__getitem__(name)ਵਰਗੀਆਂ explicit dotted attribute lookups ਲਈ binding process ਦੇ ਹਿੱਸੇ ਵਜੋਂ ਲਾਗੂ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਹ ਆਪਣੇ__getattribute__()ਮੈਥਡ ਰਾਹੀਂ classes ਨੂੰ ਇੱਕ ਅਨੁਮਾਨਯੋਗ ਕ੍ਰਮ ਵਿੱਚ ਖੋਜਦਾ ਹੈ ਜੋ cooperative multiple inheritance ਨੂੰ ਸਮਰਥਨ ਦਿੰਦਾ ਹੈ। ਇਸ ਲਈsuper()[name]ਵਰਗੀਆਂ implicit lookups ਲਈsuper()ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਹੈ।ਇਹ ਵੀ ਧਿਆਨ ਦਿਓ ਕਿ zero-argument ਰੂਪ ਤੋਂ ਇਲਾਵਾ,
super()ਦੀ ਵਰਤੋਂ ਕੇਵਲ ਮੈਥਡਾਂ ਦੇ ਅੰਦਰ ਹੀ ਸੀਮਿਤ ਨਹੀਂ ਹੈ। ਦੋ-ਆਰਗੂਮੈਂਟ ਰੂਪ ਆਰਗੂਮੈਂਟਾਂ ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਦਰਸਾਉਂਦਾ ਹੈ ਅਤੇ ਉਚਿਤ ਹਵਾਲੇ ਬਣਾਉਂਦਾ ਹੈ। zero-argument ਰੂਪ ਸਿਰਫ਼ class definition ਦੇ ਅੰਦਰ ਹੀ ਕੰਮ ਕਰਦਾ ਹੈ, ਕਿਉਂਕਿ compiler ਲੋੜੀਂਦੇ ਵੇਰਵੇ ਭਰਦਾ ਹੈ ਤਾਂ ਜੋ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੀ ਜਾ ਰਹੀ class ਅਤੇ ਮੌਜੂਦਾ instance ਨੂੰ ਸਹੀ ਤਰੀਕੇ ਨਾਲ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕੇ।super()ਦੀ ਵਰਤੋਂ ਕਰਕੇ cooperative classes ਡਿਜ਼ਾਈਨ ਕਰਨ ਲਈ ਵਿਹਾਰਿਕ ਸੁਝਾਵਾਂ ਵਾਸਤੇ guide to using super() ਵੇਖੋ।Changed in version 3.14:
superਆਬਜੈਕਟ ਹੁਣpickleableਅਤੇcopyableਹਨ।
- class tuple(iterable=(), /)
ਫੰਕਸ਼ਨ ਹੋਣ ਦੀ ਬਜਾਏ,
tupleਅਸਲ ਵਿੱਚ ਇੱਕ immutable sequence type ਹੈ, ਜਿਵੇਂ ਕਿ Tuples ਅਤੇ Sequence Types --- list, tuple, range ਵਿੱਚ ਦਸਤਾਵੇਜ਼ਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ।
- class type(object, /)¶
- class type(name, bases, dict, /, **kwargs)
ਇੱਕ ਆਰਗੂਮੈਂਟ ਨਾਲ, object ਦੀ ਕਿਸਮ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਵਾਪਸ ਕੀਤਾ ਗਿਆ ਮੁੱਲ ਇੱਕ type object ਹੁੰਦਾ ਹੈ ਅਤੇ ਆਮ ਤੌਰ 'ਤੇ
object.__class__ਦੁਆਰਾ ਵਾਪਸ ਕੀਤੇ object ਦੇ ਬਰਾਬਰ ਹੁੰਦਾ ਹੈ।ਕਿਸੇ object ਦੀ type ਦੀ ਜਾਂਚ ਕਰਨ ਲਈ built-in ਫੰਕਸ਼ਨ
isinstance()ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਕਿਉਂਕਿ ਇਹ subclasses ਨੂੰ ਵੀ ਧਿਆਨ ਵਿੱਚ ਰੱਖਦਾ ਹੈ।ਤਿੰਨ arguments ਨਾਲ ਇੱਕ ਨਵਾਂ type object ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਅਸਲ ਵਿੱਚ
classstatement ਦਾ ਇੱਕ dynamic ਰੂਪ ਹੈ। name string class ਦਾ ਨਾਮ ਹੁੰਦੀ ਹੈ ਅਤੇ__name__attribute ਬਣ ਜਾਂਦੀ ਹੈ। bases tuple ਵਿੱਚ base classes ਹੁੰਦੀਆਂ ਹਨ ਅਤੇ ਇਹ__bases__attribute ਬਣ ਜਾਂਦੀ ਹੈ; ਜੇ ਇਹ ਖਾਲੀ ਹੋਵੇ ਤਾਂobject, ਜੋ ਸਾਰੀਆਂ classes ਦਾ ਆਖਰੀ base ਹੈ, ਜੋੜ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ। dict dictionary ਵਿੱਚ class body ਲਈ attributes ਅਤੇ methods ਦੀਆਂ ਪਰਿਭਾਸ਼ਾਵਾਂ ਹੁੰਦੀਆਂ ਹਨ;__dict__attribute ਬਣਨ ਤੋਂ ਪਹਿਲਾਂ ਇਸਦੀ ਨਕਲ ਕੀਤੀ ਜਾਂ ਇਸਨੂੰ wrap ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ। ਹੇਠਾਂ ਦਿੱਤੇ ਦੋ statements ਇੱਕੋ ਜਿਹੇtypeobjects ਬਣਾਉਂਦੇ ਹਨ:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))
ਇਹ ਵੀ ਵੇਖੋ:
ਤਿੰਨ-argument ਰੂਪ ਨੂੰ ਦਿੱਤੇ ਗਏ keyword arguments ਨੂੰ ਉਚਿਤ metaclass machinery (ਆਮ ਤੌਰ 'ਤੇ
__init_subclass__()) ਤੱਕ ਉਸੇ ਤਰੀਕੇ ਨਾਲ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ ਜਿਵੇਂ class definition ਵਿੱਚ ਦਿੱਤੇ keywords (metaclass ਤੋਂ ਇਲਾਵਾ) ਭੇਜੇ ਜਾਂਦੇ ਹਨ।classਬਿਆਨ ਦੇ ਉਲਟ, ਤਿੰਨ-ਅਰਗੂਮੈਂਟ ਰੂਪ ਮੈਟਾਕਲਾਸ__prepare__ਮੈਥਡ ਨੂੰ ਨਹੀਂ ਬੁਲਾਉਂਦਾ (ਦੇਖੋ Preparing the class namespace)। ਉਚਿਤ ਮੈਟਾਕਲਾਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਾਇਨਾਮਿਕ ਤੌਰ 'ਤੇ ਕਲਾਸ ਬਣਾਉਣ ਲਈtypes.new_class()ਦੀ ਵਰਤੋਂ ਕਰੋ।ਇਹ ਵੀ ਵੇਖੋ Customizing class creation।
Changed in version 3.6:
typeਦੀਆਂ ਉਹ subclasses ਜੋtype.__new__ਨੂੰ override ਨਹੀਂ ਕਰਦੀਆਂ, ਹੁਣ ਕਿਸੇ object ਦਾ type ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇੱਕ-argument ਰੂਪ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ।Changed in version 3.15: dict ਹੁਣ
frozendictਵੀ ਹੋ ਸਕਦਾ ਹੈ।
- vars()¶
- vars(object, /)
ਕਿਸੇ module, class, instance ਜਾਂ ਕਿਸੇ ਹੋਰ object ਲਈ ਜਿਸ ਵਿੱਚ
__dict__attribute ਹੋਵੇ, ਉਸਦਾ__dict__attribute ਵਾਪਸ ਕਰਦਾ ਹੈ।Modules ਅਤੇ instances ਵਰਗੇ objects ਵਿੱਚ ਅਪਡੇਟ ਕੀਤੇ ਜਾ ਸਕਣ ਵਾਲਾ
__dict__attribute ਹੁੰਦਾ ਹੈ; ਪਰ ਹੋਰ objects ਆਪਣੇ__dict__attribute 'ਤੇ ਲਿਖਣ ਸੰਬੰਧੀ ਪਾਬੰਦੀਆਂ ਰੱਖ ਸਕਦੇ ਹਨ (ਉਦਾਹਰਨ ਲਈ, classes ਸਿੱਧੀਆਂ dictionary updates ਨੂੰ ਰੋਕਣ ਲਈtypes.MappingProxyTypeਵਰਤਦੀਆਂ ਹਨ)।ਬਿਨਾਂ ਕਿਸੇ ਆਰਗੂਮੈਂਟ ਦੇ,
vars()locals()ਵਾਂਗ ਕੰਮ ਕਰਦਾ ਹੈ।ਜੇ ਕੋਈ object ਦਿੱਤਾ ਗਿਆ ਹੋਵੇ ਪਰ ਉਸ ਵਿੱਚ
__dict__attribute ਨਾ ਹੋਵੇ (ਉਦਾਹਰਨ ਲਈ, ਜੇ ਉਸਦੀ class__slots__attribute ਪਰਿਭਾਸ਼ਿਤ ਕਰਦੀ ਹੋਵੇ), ਤਾਂTypeErrorexception ਉਠਾਈ ਜਾਂਦੀ ਹੈ।Changed in version 3.13: ਇਸ ਫੰਕਸ਼ਨ ਨੂੰ ਬਿਨਾਂ ਆਰਗੂਮੈਂਟ ਦੇ ਕਾਲ ਕਰਨ ਦਾ ਨਤੀਜਾ ਹੁਣ
locals()built-in ਲਈ ਵਰਣਿਤ ਤਰੀਕੇ ਅਨੁਸਾਰ ਅਪਡੇਟ ਕੀਤਾ ਗਿਆ ਹੈ।
- zip(*iterables, strict=False)¶
ਕਈ iterables 'ਤੇ ਸਮਾਂਤਰ ਤੌਰ 'ਤੇ iteration ਕਰਦਾ ਹੈ ਅਤੇ ਹਰ ਇੱਕ ਤੋਂ ਇੱਕ ਤੱਤ ਲੈ ਕੇ tuples ਬਣਾਉਂਦਾ ਹੈ।
ਉਦਾਹਰਨ:
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']): ... print(item) ... (1, 'sugar') (2, 'spice') (3, 'everything nice')
ਵਧੇਰੇ ਰਸਮੀ ਤੌਰ 'ਤੇ,
zip()tuples ਦਾ ਇੱਕ iterator ਵਾਪਸ ਕਰਦਾ ਹੈ, ਜਿੱਥੇ i-ਵੇਂ tuple ਵਿੱਚ ਹਰ argument iterable ਦਾ i-ਵਾਂ ਤੱਤ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ।zip()ਬਾਰੇ ਸੋਚਣ ਦਾ ਇੱਕ ਹੋਰ ਤਰੀਕਾ ਇਹ ਹੈ ਕਿ ਇਹ ਕਤਾਰਾਂ ਨੂੰ ਕਾਲਮਾਂ ਵਿੱਚ ਬਦਲਦਾ ਹੈ, ਅਤੇ ਕਾਲਮਾਂ ਨੂੰ ਕਤਾਰਾਂ ਵਿੱਚ। ਇਹ matrix transpose ਵਰਗਾ ਹੈ।zip()lazy ਹੈ: ਤੱਤਾਂ ਨੂੰ ਤਦ ਤੱਕ process ਨਹੀਂ ਕੀਤਾ ਜਾਂਦਾ ਜਦ ਤੱਕ iterable ਉੱਤੇ iteration ਨਾ ਕੀਤੀ ਜਾਵੇ, ਉਦਾਹਰਨ ਲਈforloop ਰਾਹੀਂ ਜਾਂ ਇਸਨੂੰlistਵਿੱਚ wrap ਕਰਕੇ।ਇੱਕ ਗੱਲ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਯੋਗ ਹੈ ਕਿ
zip()ਨੂੰ ਦਿੱਤੇ ਗਏ iterables ਦੀ ਲੰਬਾਈ ਵੱਖ-ਵੱਖ ਹੋ ਸਕਦੀ ਹੈ; ਕਈ ਵਾਰ ਇਹ design ਅਨੁਸਾਰ ਹੁੰਦਾ ਹੈ ਅਤੇ ਕਈ ਵਾਰ ਇਹਨਾਂ iterables ਨੂੰ ਤਿਆਰ ਕਰਨ ਵਾਲੇ code ਵਿੱਚ bug ਕਾਰਨ। Python ਇਸ ਸਮੱਸਿਆ ਨਾਲ ਨਿਪਟਣ ਲਈ ਤਿੰਨ ਵੱਖਰੇ ਤਰੀਕੇ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ:ਡਿਫਾਲਟ ਰੂਪ ਵਿੱਚ,
zip()ਉਦੋਂ ਰੁਕ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਸਭ ਤੋਂ ਛੋਟਾ ਇਟਰੇਬਲ exhausted ਹੋ ਜਾਂਦਾ ਹੈ। ਇਹ ਲੰਬੇ ਇਟਰੇਬਲਜ਼ ਵਿੱਚ ਬਾਕੀ ਰਹਿ ਗਈਆਂ ਆਈਟਮਾਂ ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰ ਦੇਵੇਗਾ ਅਤੇ ਨਤੀਜੇ ਨੂੰ ਸਭ ਤੋਂ ਛੋਟੇ ਇਟਰੇਬਲ ਦੀ ਲੰਬਾਈ ਤੱਕ ਸੀਮਿਤ ਕਰ ਦੇਵੇਗਾ:>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'])) [(0, 'fee'), (1, 'fi'), (2, 'fo')]
zip()ਅਕਸਰ ਉਹਨਾਂ ਹਾਲਤਾਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਿੱਥੇ iterables ਦੀ ਲੰਬਾਈ ਇੱਕੋ ਜਿਹੀ ਮੰਨੀ ਜਾਂਦੀ ਹੈ। ਅਜਿਹੀਆਂ ਹਾਲਤਾਂ ਵਿੱਚstrict=Trueਵਿਕਲਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਸਦਾ output ਆਮzip()ਵਾਂਗ ਹੀ ਹੁੰਦਾ ਹੈ:>>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2), ('c', 3)]
ਡਿਫਾਲਟ ਵਿਹਾਰ ਦੇ ਉਲਟ, ਜੇਕਰ ਕੋਈ ਇੱਕ ਇਟਰੇਬਲ ਦੂਜਿਆਂ ਤੋਂ ਪਹਿਲਾਂ exhausted ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਇਹ
ValueErrorਉਠਾਉਂਦਾ ਹੈ:>>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True): ... print(item) ... (0, 'fee') (1, 'fi') (2, 'fo') Traceback (most recent call last): ... ValueError: zip() argument 2 is longer than argument 1
strict=Trueargument ਤੋਂ ਬਿਨਾਂ, ਕੋਈ ਵੀ bug ਜੋ ਵੱਖ-ਵੱਖ ਲੰਬਾਈ ਵਾਲੇ iterables ਪੈਦਾ ਕਰਦਾ ਹੈ, ਚੁੱਪਚਾਪ ਲੁਕਿਆ ਰਹਿ ਸਕਦਾ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਪ੍ਰੋਗਰਾਮ ਦੇ ਕਿਸੇ ਹੋਰ ਹਿੱਸੇ ਵਿੱਚ ਲੱਭਣ ਲਈ ਮੁਸ਼ਕਲ bug ਵਜੋਂ ਸਾਹਮਣੇ ਆ ਸਕਦਾ ਹੈ।ਛੋਟੇ iterables ਨੂੰ ਇੱਕ ਸਥਿਰ ਮੁੱਲ ਨਾਲ ਭਰਿਆ ਜਾ ਸਕਦਾ ਹੈ ਤਾਂ ਜੋ ਸਾਰੇ iterables ਦੀ ਲੰਬਾਈ ਇੱਕੋ ਜਿਹੀ ਹੋ ਜਾਵੇ। ਇਹ ਕੰਮ
itertools.zip_longest()ਦੁਆਰਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਖਾਸ ਸਥਿਤੀਆਂ: ਇੱਕ ਹੀ iterable argument ਨਾਲ
zip()1-tuples ਦਾ ਇੱਕ iterator ਵਾਪਸ ਕਰਦਾ ਹੈ। ਬਿਨਾਂ ਕਿਸੇ argument ਦੇ, ਇਹ ਇੱਕ ਖਾਲੀ iterator ਵਾਪਸ ਕਰਦਾ ਹੈ।ਸੁਝਾਅ ਅਤੇ ਤਰੀਕੇ:
iterables ਦੇ ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਮੁਲਾਂਕਣ ਕ੍ਰਮ ਦੀ ਗਾਰੰਟੀ ਹੁੰਦੀ ਹੈ। ਇਸ ਨਾਲ
zip(*[iter(s)]*n, strict=True)ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਡਾਟਾ ਲੜੀ ਨੂੰ n-ਲੰਬਾਈ ਵਾਲੇ ਸਮੂਹਾਂ ਵਿੱਚ ਵੰਡਣ ਦਾ ਇੱਕ ਤਰੀਕਾ ਸੰਭਵ ਬਣਦਾ ਹੈ। ਇਹ ਇੱਕੋ iterator ਨੂੰnਵਾਰ ਦੁਹਰਾਉਂਦਾ ਹੈ ਤਾਂ ਜੋ ਹਰ ਆਉਟਪੁੱਟ tuple ਵਿੱਚ iterator ਨੂੰnਵਾਰ ਕਾਲ ਕਰਨ ਦੇ ਨਤੀਜੇ ਸ਼ਾਮਲ ਹੋਣ। ਇਸ ਦਾ ਪ੍ਰਭਾਵ ਇਨਪੁੱਟ ਨੂੰ n-ਲੰਬਾਈ ਵਾਲੇ ਹਿੱਸਿਆਂ ਵਿੱਚ ਵੰਡਣਾ ਹੁੰਦਾ ਹੈ।zip()ਨੂੰ*operator ਦੇ ਨਾਲ ਵਰਤ ਕੇ ਕਿਸੇ list ਨੂੰ unzip ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ:>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> list(zip(x, y)) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
Changed in version 3.10:
strictਆਰਗੂਮੈਂਟ ਸ਼ਾਮਲ ਕੀਤਾ ਗਿਆ।
- __import__(name, globals=None, locals=None, fromlist=(), level=0)¶
Note
ਇਹ ਇੱਕ ਉੱਨਤ ਫੰਕਸ਼ਨ ਹੈ ਜਿਸਦੀ ਰੋਜ਼ਾਨਾ Python ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਿੱਚ ਆਮ ਤੌਰ 'ਤੇ ਲੋੜ ਨਹੀਂ ਪੈਂਦੀ,
importlib.import_module()ਦੇ ਉਲਟ।ਇਹ ਫੰਕਸ਼ਨ
importਸਟੇਟਮੈਂਟ ਦੁਆਰਾ ਕਾਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। (builtinsਮੋਡੀਊਲ ਨੂੰ ਇੰਪੋਰਟ ਕਰਕੇ ਅਤੇbuiltins.__import__ਨੂੰ ਅਸਾਈਨ ਕਰਕੇ ਇਸਨੂੰ ਬਦਲਿਆ ਜਾ ਸਕਦਾ ਹੈ) ਤਾਂ ਜੋimportਸਟੇਟਮੈਂਟ ਦੇ ਵਿਹਾਰ ਨੂੰ ਬਦਲਿਆ ਜਾ ਸਕੇ, ਪਰ ਇਸ ਤਰ੍ਹਾਂ ਕਰਨਾ ਸਖ਼ਤ ਤੌਰ 'ਤੇ ਨਿਰੁਤਸਾਹਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਕਿਉਂਕਿ ਆਮ ਤੌਰ 'ਤੇ import hooks (PEP 302 ਵੇਖੋ) ਵਰਤਣਾ ਹੋਰ ਆਸਾਨ ਹੁੰਦਾ ਹੈ ਅਤੇ ਇਹ ਉਸ ਕੋਡ ਨਾਲ ਸਮੱਸਿਆਵਾਂ ਨਹੀਂ ਪੈਦਾ ਕਰਦਾ ਜੋ ਡਿਫਾਲਟ import ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ।__import__()ਦੀ ਸਿੱਧੀ ਵਰਤੋਂ ਦੀ ਬਜਾਏimportlib.import_module()ਵਰਤਣ ਦੀ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।ਇਹ ਫੰਕਸ਼ਨ name ਨਾਮ ਵਾਲੇ ਮੋਡੀਊਲ ਨੂੰ ਇੰਪੋਰਟ ਕਰਦਾ ਹੈ ਅਤੇ ਲੋੜ ਪੈਣ 'ਤੇ ਦਿੱਤੇ ਗਏ globals ਅਤੇ locals ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪੈਕੇਜ ਸੰਦਰਭ ਵਿੱਚ ਨਾਮ ਦੀ ਵਿਆਖਿਆ ਕਰਦਾ ਹੈ। fromlist ਉਹਨਾਂ ਆਬਜੈਕਟਾਂ ਜਾਂ ਸਬਮੋਡੀਊਲਾਂ ਦੇ ਨਾਮ ਦਿੰਦਾ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ name ਦੁਆਰਾ ਦਰਸਾਏ ਮੋਡੀਊਲ ਤੋਂ ਇੰਪੋਰਟ ਕੀਤਾ ਜਾਣਾ ਹੈ। ਮਿਆਰੀ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ locals ਆਰਗੂਮੈਂਟ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰਦੀ ਅਤੇ globals ਦੀ ਵਰਤੋਂ ਕੇਵਲ
importਸਟੇਟਮੈਂਟ ਦਾ ਪੈਕੇਜ ਸੰਦਰਭ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਕਰਦੀ ਹੈ।level ਇਹ ਨਿਰਧਾਰਤ ਕਰਦਾ ਹੈ ਕਿ absolute ਜਾਂ relative imports ਵਰਤਣੇ ਹਨ।
0(ਡਿਫਾਲਟ) ਦਾ ਅਰਥ ਹੈ ਕਿ ਕੇਵਲ absolute imports ਕੀਤੇ ਜਾਣ। level ਲਈ ਧਨਾਤਮਕ ਮੁੱਲ ਦਰਸਾਉਂਦੇ ਹਨ ਕਿ__import__()ਨੂੰ ਕਾਲ ਕਰਨ ਵਾਲੇ ਮੋਡੀਊਲ ਦੀ ਡਾਇਰੈਕਟਰੀ ਦੇ ਸਬੰਧ ਵਿੱਚ ਕਿੰਨੀਆਂ parent directories ਵਿੱਚ ਖੋਜ ਕੀਤੀ ਜਾਵੇ (PEP 328 ਵੇਖੋ)।ਜਦੋਂ name ਦਾ ਰੂਪ
package.moduleਹੋਵੇ, ਤਾਂ ਆਮ ਤੌਰ 'ਤੇ top-level package (ਪਹਿਲੇ dot ਤੱਕ ਦਾ ਨਾਮ) ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ, name ਦੁਆਰਾ ਦਰਸਾਇਆ ਮੋਡੀਊਲ ਨਹੀਂ। ਹਾਲਾਂਕਿ, ਜੇ fromlist ਖਾਲੀ ਨਾ ਹੋਵੇ, ਤਾਂ name ਦੁਆਰਾ ਦਰਸਾਇਆ ਮੋਡੀਊਲ ਵਾਪਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।ਉਦਾਹਰਨ ਲਈ,
import spamਸਟੇਟਮੈਂਟ ਹੇਠਾਂ ਦਿੱਤੇ ਕੋਡ ਵਰਗਾ bytecode ਤਿਆਰ ਕਰਦੀ ਹੈ:spam = __import__('spam', globals(), locals(), [], 0)
import spam.hamਸਟੇਟਮੈਂਟ ਹੇਠਾਂ ਦਿੱਤੀ ਕਾਲ ਤਿਆਰ ਕਰਦੀ ਹੈ:spam = __import__('spam.ham', globals(), locals(), [], 0)
ਧਿਆਨ ਦਿਓ ਕਿ ਇੱਥੇ
__import__()top-level module ਵਾਪਸ ਕਰਦਾ ਹੈ ਕਿਉਂਕਿ ਇਹੀ ਉਹ ਆਬਜੈਕਟ ਹੈ ਜੋimportਸਟੇਟਮੈਂਟ ਦੁਆਰਾ ਕਿਸੇ ਨਾਮ ਨਾਲ ਬਾਈਂਡ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।ਦੂਜੇ ਪਾਸੇ,
from spam.ham import eggs, sausage as sausਸਟੇਟਮੈਂਟ ਦਾ ਨਤੀਜਾ ਇਹ ਹੁੰਦਾ ਹੈ:_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausage
ਇੱਥੇ
__import__()ਤੋਂspam.hamਮੋਡੀਊਲ ਵਾਪਸ ਮਿਲਦਾ ਹੈ। ਇਸ ਆਬਜੈਕਟ ਤੋਂ ਇੰਪੋਰਟ ਕੀਤੇ ਜਾਣ ਵਾਲੇ ਨਾਮ ਪ੍ਰਾਪਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਉਹਨਾਂ ਦੇ ਸੰਬੰਧਿਤ ਨਾਮਾਂ ਨੂੰ ਅਸਾਈਨ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।ਜੇ ਤੁਸੀਂ ਸਿਰਫ ਨਾਮ ਰਾਹੀਂ ਕਿਸੇ ਮੋਡੀਊਲ (ਸੰਭਵ ਤੌਰ 'ਤੇ ਕਿਸੇ ਪੈਕੇਜ ਦੇ ਅੰਦਰ) ਨੂੰ ਇੰਪੋਰਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ
importlib.import_module()ਵਰਤੋ।Changed in version 3.3: level ਲਈ ਨਕਾਰਾਤਮਕ ਮੁੱਲ ਹੁਣ ਸਮਰਥਿਤ ਨਹੀਂ ਹਨ (ਅਤੇ ਇਸ ਨਾਲ ਡਿਫਾਲਟ ਮੁੱਲ ਵੀ 0 ਹੋ ਗਿਆ ਹੈ)।
Changed in version 3.9: ਜਦੋਂ command line options
-Eਜਾਂ-Iਵਰਤੇ ਜਾਂਦੇ ਹਨ, ਤਾਂ environment variablePYTHONCASEOKਨੂੰ ਹੁਣ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
ਫੁਟਨੋਟ