私はこの小さなプログラムを持っています。今私は2つのグローバル変数を使用して以前の変数状態を保存し、1を加えます。誰かがグローバル変数を使うことを伴わない、これを行うためのいくつかの方法を提案してくれるのではないかと思います。これらのグローバル変数を非グローバル変数に変更するにはどうすればよいですか?
注:これにUIやフロントエンドはありません。 Googleの家のためのウェブフックなので、ちょうど座っているサーバー側が物事を前後に送る。
import random, time, os, atexit
from datetime import datetime
from random import choice
from random import shuffle
from flask import Flask, current_app, jsonify
from flask_assistant import Assistant, ask, tell, event, context_manager, request
from flask_assistant import ApiAi
app = Flask(__name__)
assist = Assistant(app)
api = ApiAi(os.environ['DEV_ACCESS_TOKEN'], os.environ['CLIENT_ACCESS_TOKEN'])
random.seed()
interrupt_count = 0
frustration_level = 0
def reset_things():
global interrupt_count
interrupt_count = 0
print("!reset_things: {0}, {1}".format(interrupt_count, frustration_level))
@assist.action('greeting')
def hello_world():
speech = 'This is the unxepected machine'
return ask(speech)
@assist.action('fallback', is_fallback=True)
def say_fallback():
print(dir(Assistant.request))
resp = request['result']['resolvedQuery']
default_resp = "boogie boo"
# if the user said soemthing
if resp:
# update the global variable
global interrupt_count
interrupt_count+=1
global frustration_level
if not interrupt_count % 3:
frustration_level+=1
print("!fallback: {0}, {1}".format(interrupt_count, frustration_level))
print(parrot)
return ask(parrot)
else:
print(default_resp)
return(default_resp)
@assist.action('help')
def help():
speech = "I am the help section"
return ask(speech)
@assist.action('quit')
def quit():
reset_things()
speech = "Leaving program"
return tell(speech)
if __name__ == '__main__':
app.run(debug=True, use_reloader=False)
外部ストレージを使用してください。データベースなど。とにかく、いくつかのインスタンスを開始し、それらの変数を共有しないので、それは実際のサーバーにとって必須です。 – spectras
いつでも 'interrupt_count'の値を前後に渡すことができます。 – Antimony
@Antimonyあなたは精巧にできますか? –