Дастури global дар Python

Фарз кунем, ки мо тағирёбандаи глобалии беруна i дорем. Инчунин функсияи func мавҷуд аст, ки ба ин тағирёбанда як воҳид илова мекунад:

pythoni = 0
def func():
  i += 1 # хато бармегардонад
  return i

Пас аз иҷрои код, хато бармегардад, зеро дар байни тағирёбандаи глобалии i, ки дар коди берунӣ эълон шудааст, ва тағирёбандаи локалии i, ки ба он 1 илова карда мешавад, қарор дорад, аммо худи тағирёбанда то ҳол эълон нашудааст. Барои ислоҳ кардани ин мушкилӣ ва муқаррар кардани амалиёти функсия дақиқан бо тағирёбандаи глобалӣ, бояд дастури global истифода шавад. Ин дастур эълонест, ки барои тамоми блоки коди ҷорӣ, ки дар он муқаррар карда шудааст, иҷро мешавад.

Биёед мисоли қаблиро бо эълон кардани global дар бадани функсия аз нависем:

pythondef func():
  global i
  i += 1
  return i
  
print(func()) # 1-ро бармегардонад
Задание 1

Дар коди зерин баъзе барномасоз хато кардааст:

pythonnum = 4

def func():
  num *= 2
  return num

print(func())

Ин код чӣ мушкилӣ дорад? Хаторо ёбед ва ислоҳ кунед.

Задание 2

Дар коди зерин баъзе барномасоз хато кардааст:

pythonnum = 10

def func():
  num -= 3
  return i

print(func())

Ин код чӣ мушкилӣ дорад? Хаторо ёбед ва ислоҳ кунед.