python函数字符串参数转换为变量名称

时间:2016-06-17 08:46:53

标签: python string function variables

我对Python和编程很新,所以如果我的术语不正确,我会提前道歉。

angular.module('App')
    .directive('KpiParameter', function() {
        return {
            restrict: 'E',
            templateUrl: 'app/kpi/kpi-parameter/kpi-parameter.html',

            scope: {
                card: '=',
                kpiParamCallback: '&',
                selectedProductionUnit: '<'

            },

            controller: function($scope, $rootScope, KpiChartFactory, $filter) {


                console.log("!???????");
                console.log($scope.selectedProductionUnit);


                $scope.$watch('selectedProductionUnit', function() {
                    console.log($scope.selectedProductionUnit);
                    console.log("Changed");
                    KpiParamUpdated();
                    $scope.kpiParamCallback({
                        selectedProductionUnit: $scope.productionUnitDefault
                    });

                }, true);


                function KpiParamUpdated() {
                    console.log("KPiParamUpdated");
                    console.log($scope.selectedProductionUnit);
                    $scope.dataloaded0 = true;


                    KpiChartFactory.get({ pu: $scope.selectedProductionUnit }, function(data) {
                        $scope.selectedKpi = data;
                        console.log($scope.selectedKpi);


                        $rootScope.$broadcast('kpiParams', $scope.selectedKpi);
                    });

                }


                $scope.footerLinkClicked = function(pu) {

                    console.log("parameters received :");
                    console.log(pu);


                }


            },
            controllerAs: "KpiPCtrl"
        };
    });

我想要实现的目标:

我希望函数将'name'参数(一个字符串输入)转换为一个预先退出的变量,这将消除对多个IF语句的需要。

上面的例子只包含一个IF语句,但对于我的项目会有更多,我宁愿保持函数干净简单。

这不起作用,但这正是我想要的目标:

hue_alert_delay = 0

def delays(name, delay):
    global hue_alert_delay

    if name == 'hue_alert_delay':
        for i in range(0, delay):
            hue_alert_delay += 1
            time.sleep(1)

        hue_alert_delay = 0

delays('hue_alert_delay', 60)

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

使用dict:

values = {
    'hue_alert_delay': 0
}

def delays(name, delay):
    values[name] += 1

每当你想使用&#34;变量&#34;时,你最想要的是存储键值关联的字典。是的,其他方式按字面意思做你想要的,但很快就会导致疯狂的代码。

答案 1 :(得分:0)

使用这样的字典。

vars = {'hue_alert_delay':0}
def delays(name, delay):
  for i in range(0, delay):
      vars[name] += 1
      time.sleep(1)
  vars[name] = 0

您也可以使用globals()[name],但我不推荐它。

答案 2 :(得分:0)

使用字典:

vars = {'hue_alert_delay':0}

def delays(name, delay):
    for i in range(delay):
        vars[name] += 1
        time.sleep(1)

    vars[name] = 0

delays('hue_alert_delay', 60)