相关疑难解决方法(0)

将变量的名称作为字符串

这个主题讨论如何在Python中将函数的名称作为字符串获取:如何在Python中将 函数名称作为字符串获取?

如何为变量做同样的事情?(注意Python变量没有属性__name__,至少在Python中retrieve_name)

换句话说,如果我有一个变量,例如:

foo = dict()
foo['bar'] = 2
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个函数/属性,例如'foo':

retrieve_name(foo) 
Run Code Online (Sandbox Code Playgroud)

返回字符串 __name__

更新:

既然人们在问我为什么要这样做,这里就是一个例子.我想在此列表中在Pandas中创建一个DataFrame,其中列名 由实际字典的名称给出:

# List of dictionaries for my DataFrame
list_of_dicts = [n_jobs, users, queues, priorities]
Run Code Online (Sandbox Code Playgroud)

python

112
推荐指数
13
解决办法
16万
查看次数

如何从Python函数或方法中获取函数或方法的名称?

我觉得我应该知道这一点,但我无法弄明白......

我想从内部获取方法的名称 - 恰好是集成测试 - 因此它可以打印出一些诊断文本.当然,我可以在字符串中对方法的名称进行硬编码,但如果可能的话,我想让测试更加干燥.

python

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

禁用每个方法/功能的记录?

我是Python日志的新手,我可以很容易地看到它对我提出的家庭酿造解决方案的优越性.

我似乎无法找到答案的一个问题:如何基于每个方法/函数压制记录消息?

我的假设模块包含一个函数.在我开发时,日志调用是一个很好的帮助:

logging.basicConfig(level=logging.DEBUG,
                format=('%(levelname)s: %(funcName)s(): %(message)s'))
log = logging.getLogger()

my_func1():
    stuff...
    log.debug("Here's an interesting value: %r" % some_value)
    log.info("Going great here!")
    more stuff...
Run Code Online (Sandbox Code Playgroud)

当我在'my_func1'上完成工作并开始处理第二个函数'my_func2'时,来自'my_func1'的日志消息开始从"有用"变为"杂乱".

是否存在单行魔术语句,例如'logging.disabled_in_this_func()',我可以将其添加到'my_func1'的顶部以禁用'my_func1'中的所有日志记录调用,但仍然在所有其他函数/方法中保留日志记录调用不变?

谢谢

linux,Python 2.7.1

python logging

14
推荐指数
2
解决办法
4411
查看次数

如何在函数内部将函数名称作为字符串打印在Python中

def applejuice(q):
   print THE FUNCTION NAME!
Run Code Online (Sandbox Code Playgroud)

它应该导致"applejuice"作为一个字符串.

python

9
推荐指数
3
解决办法
2万
查看次数

如何在Python中将函数名称作为字符串?

可能重复:
如何在Python中将函数名称作为字符串?

我知道我可以这样做:

def func_name():
    print func_name.__name__
Run Code Online (Sandbox Code Playgroud)

这将把函数的名称作为'my_func'返回.

但是当我进入函数时,有没有办法直接称它为一般?就像是 :

def func_name():
    print self.__name__
Run Code Online (Sandbox Code Playgroud)

Python会理解我想要代码层次结构的上半部分?

python

7
推荐指数
3
解决办法
635
查看次数

python unittest:不能调用装饰测试

我有一个非常大的测试套件,我装饰了一些test_*函数.现在我不能打电话给他们./test.py MySqlTestCase.test_foo_double,python3.2抱怨说:ValueError: no such test method in <class '__main__.MySqlTestCase'>: result.我的装饰器代码如下所示:

def procedure_test(procedure_name, arguments_count, returns):

    '''Decorator for procedure tests, that simplifies testing whether procedure
    with given name is available, whether it has given number of arguments
    and returns given value.'''

    def decorator(test):
        def result(self):
            procedure = self.db.procedures[self.case(procedure_name)]
            self.assertEqual(len(procedure.arguments), arguments_count)
            self.assertEqual(procedure.returns, 
                             None if returns is None else self.case(returns))
            test(self, procedure)
        return result
    return decorator
Run Code Online (Sandbox Code Playgroud)

和测试方法:

@procedure_test('foo_double', 0, 'integer')
def test_foo_double(self, procedure):
    self.assertEqual(procedure.database, self.db)
    self.assertEqual(procedure.sql, 'RETURN 2 * value') …
Run Code Online (Sandbox Code Playgroud)

python unit-testing decorator

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

将自定义公式转换为python函数

考虑一下我们有以下输入

formula = "(([foo] + [bar]) - ([baz]/2) )"

function_mapping = {
                   "foo" : FooFunction,
                   "bar" : BarFunction,
                   "baz" : BazFunction,  
                  }
Run Code Online (Sandbox Code Playgroud)

是否有任何python库可以解析公式并将其转换为python函数表示.

例如.

converted_formula = ((FooFunction() + BarFunction() - (BazFunction()/2))
Run Code Online (Sandbox Code Playgroud)

我目前正在研究类似的东西

In [11]: ast = compiler.parse(formula)

In [12]: ast
Out[12]: Module(None, Stmt([Discard(Sub((Add((List([Name('foo')]), List([Name('bar')]))), Div((List([Name('baz')]), Const(2))))))]))
Run Code Online (Sandbox Code Playgroud)

然后进一步处理这个树.

你知道任何更清洁的替代解决方案吗?非常感谢任何帮助或见解!

python dsl parsing abstract-syntax-tree

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

Python连接字符串和函数

Python中有没有办法捕捉字符串和函数?

例如

def myFunction():
    a=(str(local_time[0]))
    return a

b="MyFunction"+myFunction
Run Code Online (Sandbox Code Playgroud)

我得到一个错误,我无法连接'str'和'function'对象.

python string function

5
推荐指数
2
解决办法
8507
查看次数

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

使用变量作为函数名和字符串

我有以下代码

import pandas as pd
df = pd.DataFrame(columns=['var1', 'var2','var3'])
df.loc[0] = [0,1,2]

def RS():
    x = 123
    y = 456
    z = 'And some more random shit'
    return x+y

def BS():
    x = -890
    y = (456*1)+90
    z = 'And some more random shit'
    return x-y

def MyCompute(srt, srt_string):
    df[srt_string] = srt()
    df['1min' + srt_string] = 1-df[srt_string]

MyCompute(srt=RS, srt_string='RS')
MyCompute(srt=BS, srt_string='BS')
Run Code Online (Sandbox Code Playgroud)

有没有办法避免调用MyCompute函数时出现双RS双BS?

python string variables

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