相关疑难解决方法(0)

如何创建可变数量的变量?

如何在Python中完成变量变量?

这是一个精心设计的手动条目,例如:变量变量

我听说这是一个坏主意,但它是Python中的一个安全漏洞.真的吗?

python variable-variables

315
推荐指数
13
解决办法
12万
查看次数

如何在当前模块上调用setattr()?

我作为第一个参数" object"传递给函数setattr(object, name, value),在当前模块上设置变量?

例如:

setattr(object, "SOME_CONSTANT", 42);
Run Code Online (Sandbox Code Playgroud)

产生同样的效果:

SOME_CONSTANT = 42
Run Code Online (Sandbox Code Playgroud)

在包含这些行的模块中(正确object).

我在模块级别动态生成多个值,而我无法__getattr__在模块级别定义,这是我的后备.

python module global-variables setattr getattr

128
推荐指数
3
解决办法
4万
查看次数

为什么使用'eval'是一种不好的做法?

我正在使用以下课程轻松存储我的歌曲数据.

class Song:
    """The class to store the details of each song"""
    attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location')
    def __init__(self):
        for att in self.attsToStore:
            exec 'self.%s=None'%(att.lower()) in locals()
    def setDetail(self, key, val):
        if key in self.attsToStore:
            exec 'self.%s=val'%(key.lower()) in locals()
Run Code Online (Sandbox Code Playgroud)

我觉得这比写出一个if/else块更具可扩展性.但是,eval似乎被认为是一种不良做法并且使用起来不安全.如果是这样,任何人都可以向我解释为什么并告诉我一个更好的方法来定义上面的类?

python eval

125
推荐指数
6
解决办法
3万
查看次数

如何在python中从变量参数(kwargs)设置类属性

假设我有一个带有构造函数(或其他函数)的类,它接受可变数量的参数,然后有条件地将它们设置为类属性.

我可以手动设置它们,但似乎变量参数在python中很常见,应该有一个共同的习惯用法.但我不确定如何动态地这样做.

我有一个使用eval的例子,但这几乎不安全.我想知道这样做的正确方法 - 也许是lambda?

class Foo:
    def setAllManually(self, a=None, b=None, c=None):
        if a!=None: 
            self.a = a
        if b!=None:
            self.b = b
        if c!=None:
            self.c = c
    def setAllWithEval(self, **kwargs):
        for key in **kwargs:
            if kwargs[param] != None
                eval("self." + key + "=" + kwargs[param])
Run Code Online (Sandbox Code Playgroud)

python

93
推荐指数
5
解决办法
7万
查看次数

在循环中创建变量并在 Python 中初始化它们

我有 10 个参数需要初始化。按照约定,它们被命名为 a_true、b_true 等。它们不是列表或数组,而是独立变量。它们需要从长度为 1X10 的数组进行初始化。

我打算做这样的事情,我知道它有其缺点:

param=[34,65,...,234] # Contains initialization values
var=['a','b','c','d','e','f','g','h','i','j']
gvalues=[] # Array intended to contain variable names
k=0
for i in var:
    gvalues.append(var[k]+'_true')
    k+=1
Run Code Online (Sandbox Code Playgroud)

这会创建一个元素数组,如 a_true、b_true 等。我想将它们作为变量而不是数组的元素,最后使用 param 中的值初始化它们。有什么可能性吗?如果这看起来微不足道,新手很抱歉。

预期输出:

[a_true, b_true, ..., j_true]=[34, 65, ... , 234]
Run Code Online (Sandbox Code Playgroud)

python arrays loops

5
推荐指数
1
解决办法
1万
查看次数

熊猫在循环中设置数据帧的名称

我想创建多个名称与列之一中的值相同的数据框。我希望这段代码像这样工作:

import pandas as pd

data=pd.read_csv('athlete_events.csv')


Sports = data.Sport.unique()

for S in Sports:
    name=str(S)
    name=data.loc[data['Sport']==S]
Run Code Online (Sandbox Code Playgroud)

python foreach dataframe pandas

1
推荐指数
1
解决办法
4453
查看次数

有什么办法可以用另一个变量来命名一个变量

我需要通过一个小型游戏的另一个变量来命名一个变量。我为所有子弹做了一堂课,为敌人做了另外一堂课。

class bruh(object):
    def __init__(self,x):
        print(x)
for x in range(1,11):
    x = bruh(x)
Run Code Online (Sandbox Code Playgroud)

想要代码执行的操作是创建10个变量,每个变量的标签为1-10,每个变量都是bruh()对象,因此它们在创建时会打印x。不知道我是否愚蠢,但是有什么方法可以实现这一目标或类似目标吗?

python python-3.x

0
推荐指数
1
解决办法
63
查看次数