使用“将模块导入为名称”时如何从模块获取“名称”

时间:2018-10-21 04:23:07

标签: python python-2.7

我似乎找不到存储模块绑定到的实际名称的位置。例如:

import re as my_re

print my_re.__name__ # Output is "re," not "my_re"

我希望能够获得导入模块的名称,而不是模块的实际名称。

我的用例是我有一个函数,该函数将函数对象作为参数,并且需要能够确定其绑定到的名称。这是一个更详尽的示例:

import module as my_module

def my_func(in_func):
    print in_func.__bound-name__ # Or something to this effect

my_func(my_module.function1) # Should print "my_module.function1"

2 个答案:

答案 0 :(得分:1)

我将模块名称作为字符串传递,然后使用globals()来获取要在函数中使用的模块。假设您将'np'传递给函数,那么globals()['np']将返回该函数。

In [22]: import numpy as np
In [23]: def demo(A):
    ...:     a = globals()[A]
    ...:     print(a.array([i for i in range(10)]))
    ...:

In [24]: demo('np')
[0 1 2 3 4 5 6 7 8 9]

答案 1 :(得分:1)

由于字符串x = 512 y = 512*(-1)+(-1)不会存储在任何地方,它只是变量的名称,因此无法完全实现所需的操作。提出//this is the Main Activity public class MainActivity extends AppCompatActivity { public void PesoInEuro (View view){ EditText Peso = findViewById(R.id.EuroBetrag); String amountPeso = Peso.getText().toString(); double amountPesodouble = Double.parseDouble(amountPeso); double amountEurodouble = amountPesodouble * 46.85; String amountEuro = String.valueOf(amountEurodouble); Button buttonOne = (Button) findViewById(R.id.PesoEuro); buttonOne.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { openDialog(); } }); } public void openDialog(){ DiaPesoEuro exampleDialog = new DiaPesoEuro(); exampleDialog.show(getSupportFragmentManager(), "example Dialog"); } 语句语法的PEP221解释说以下几行是相等的:

my_re

import ... as