#python #import #boolean #python-multithreading
Вопрос:
Я новичок в программировании и столкнулся с проблемой. Импортированная функция, bonnie_movement
, должна перестать выполняться, когда переменная game_end
имеет значение True, теперь, когда я пытаюсь обновить эту переменную (которая также была импортирована) в файле, в который она была импортирована, она не обновляется. Пример:
import os
import random
import threading
import time
from movement_testing import *
def p():
global game_end
a = input("> ")
if a == "end":
game_end = True
time.sleep(0.5)
print(str(game_end))
threading.Thread(target=p).start()
threading.Thread(target=bonnie_movement).start()
Отпечаток, который вы видите там, хотя и выдает, True
но bonnie_movement
просто продолжает идти. Кто-нибудь знает, что я могу сделать?
Заранее спасибо!
Правка: Переменная не a
имеет никакого отношения к вопросу, у нее нет никакой реальной цели, кроме как немедленно остановить функцию при объявлении game_end = True
. Печать также предназначена для того, чтобы узнать, game_end
обновляется ли функция p
и не служит ли она какой-либо реальной цели.
Комментарии:
1. Вам следует прочитать больше о потоковой передаче и программировании в целом из документации python.
Ответ №1:
добро пожаловать в StackOverflow!
Если вы хотите печатать True
в зависимости от значения a
, то вам даже не нужно использовать game_end
переменную. Фактически, вы уже используете a
переменную в условии. Теперь, поскольку я не знаю, что game_end
на самом movement_testing
деле делает этот класс, я попытаюсь помочь вам с информацией, которую вы уже предоставили. Вы можете просто изменить свою def p()
функцию следующим образом:
def p():
if a == "end":
print(True)
Или даже
def p():
print(a=="end")
Лучшим подходом было бы, если бы вы могли объявить game_end
переменную в этом файле ИЛИ определить def p()
метод внутри movement_testing
.
Удачи вам в вашем путешествии!
Комментарии:
1. Спасибо за ответ, но, к сожалению, это было не то, о чем я спрашивал, я отредактировал сообщение, чтобы прояснить это, реальный вопрос заключается в том, как заставить функцию
p
обновлять переменнуюgame_end
в функцииbonnie_movement
(обе из которых были импортированы черезfrom movement_testing import *
).
Ответ №2:
Я опубликовал тот же вопрос на reddit, и вот ответ:
Глобальные значения в python являются глобальными для модулей, а не для всех модулей. Строка, в которой, как вы утверждаете, импортируется переменная, на самом деле этого не делает.
Если «game_end» является свойством «Movement_testing», попробуйте получить к нему доступ следующим образом
movement_testing.game_end = Верно
и
печать(str(movement_testing.game_end))