【问题标题】:Alternative to global variable?替代全局变量?
【发布时间】:2017-10-06 10:18:43
【问题描述】:

下面的代码给出了想要的结果。但是,使用全局变量的替代方法是什么?我必须使用多个函数。

#Initialising 
feeOne =0.0
feeTwo =0.0
country = ""
rate=""
total =0.0
sFee = 10.0

def dets():
    global sFee, feeOne, feeTwo

    country=input("What is your country? ")
    rate=input("What is your rate? High or Low: ")

    if country =="UK":
        feeOne = 10.0
    else:
        feeOne = 20.0

    if rate=="High":
        feeTwo = 10.0
    else:
        feeTwo = 20.0

def total():
    total = (sFee + feeOne) * feeTwo
    print(total)

dets()
total()

【问题讨论】:

  • 使用 OOP 模式或 .py 脚本并声明该 var,您可以根据需要将其包含到其他脚本中。
  • 对不起-我对此很陌生。我不确定那是什么意思?你能不能给我一个例子来说明如何做到这一点?
  • 首先:stackoverflow.com/questions/19158339/… 创建一个 .py 脚本,在其中实例化变量并继续。 stackoverflow.com/questions/16011056/…
  • 我已经阅读了这些 - 据我了解,我制作了变量的不同实例?我想我完全不知所措。
  • 我会尽力帮助你的,对不起,我在工作:你可以创建第三个函数来包含 dets 和 total,明白吗?您也可以使用参数。您的实现有多种选择(这是一个简单的代码,不要误会我)。

标签: python-3.x global-variables


【解决方案1】:

首先,

如果这不是某个更大程序的一部分并且不需要从任何其他脚本调用,则不需要函数。
您可以只创建一个没有这些功能的程序。直接询问输入和显示输出。

第二,
合并两个函数;
这消除了对任何全局函数的需求,所有函数都是局部函数

def dets():

    country=input("What is your country? ")
    rate=input("What is your rate? High or Low: ")

    if country =="UK":
        feeOne = 10.0
    else:
        feeOne = 20.0

    if rate=="High":
        feeTwo = 10.0
    else:
        feeTwo = 20.0

    total = (sFee + feeOne) * feeTwo
    print(total)
    ##

    total = sfee 
    + ( 10.0 if input("What is your country? ") == "UK" else 20.0) 
    + ( 10.0 if input("What is your rate? High or Low: ") == "HIGH" else 20.0 )

不仅如此,您还可以创建一个类来封装整个计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 2021-09-10
    • 2012-07-01
    • 1970-01-01
    相关资源
    最近更新 更多