如何打印传递给函数的参数值

How to print the values of parameters passed into a function

我不知道如何检索、存储和打印传递给函数的参数值。我知道很多帖子都与这个问题有关,但我找不到任何符合我想做的简单事情的东西。

举个简单的例子:

def times(value, power):
    return value**power

如果我运行这个函数然后写:

x = times(2.72, 3.1)
print(f'Result of calculation is: {x: .6f}')

那么输出将是:

Result of calculation is:  22.241476

好的,但这不是我想要的;我希望能够打印 resultvaluepower,并让以下行作为输出,最好使用上面的 print ;像 print(f’some text here: {something}’)

期望输出:

Result of calculation is:  22.241476
Value passed to function was:  2
Power passed to function was:  3

最有效的方法是什么?

您需要先将参数存储在调用函数的代码中的变量中。

假设定义了函数'times'。

a = 2.72
b = 3.1
x = times(a, b)
print(f'Result of calculation is: {x: .6f}')
print(f'Value passed to function was: {a}')
print(f'Power passed to function was: {b}')

您可以随时添加更多“打印”行。

所以代码看起来像这样:

def times(value, power):
    print(f'Result of calculation is: {x: .6f}')
    print(f'Value passed to function was: {value}')
    print(f'Power passed to function was: {power}')

然后您可以像这样将值传递给函数:

times(2.72, 3.1)

请尝试以下代码。它使用了闭包的概念(google它)。希望对你有帮助。

def times():
    value = float(input('Enter a value:'))
    power = float(input('Enter a power: '))

    def raise_to_power():
        return value ** power
    print(
        f'Result of calculation is: {raise_to_power(): .6f}\nValue passed to function was: {value}\nPower passed to function was: {power}')


times()

问题似乎是关于访问函数的命名空间,而不仅仅是打印变量的值。如果命名空间的概念对您来说是新的,我建议阅读 Python documentation and Real Python's 博客 post 关于命名空间的 Python。让我们看看有几种方法可以满足您的要求。

打印值很简单:

def times(value, power):
    print(f"Value passed to function was:  {value}")
    print(f"Power passed to function was:  {power}")
    print(f'Result of calculation is: {x: .6f}')

如果您需要按照您在问题中描述的方式打印出来,则应返回值。这可以通过将您的函数更新为:

来完成
def times(value, power):
    return value, power, value**power

v, p, result = times(2,3)

print(f'Result of calculation is: {result: .6f}')
print(f"Value passed to function was:  {v}")
print(f"Power passed to function was:  {p}")

但是,返回参数似乎有点奇怪,因为人们会假设您作为开发人员可以在代码的其他地方捕获这些值。如果要查看给定命名空间的变量及其值,请使用相应的函数。要查看位于函数 times() 本地命名空间中的 valuepower 变量,请使用 locals() 其中 returns 一个字典对象,它是当前本地命名空间。

def times(value, power):
    print(locals())
    return value**power

>>> times(5, 4)
{'value': 5, 'power': 4}
625

如果变量定义在全局命名空间中,(请记住全局变量应谨慎使用)您可以使用globals()在全局命名空间中查找值:

VALUE = 2
POWER = 3
def times(value=VALUE, power=POWER):
    return value**power

>>> globals()['VALUE']
2
>>> globals()['POWER']
3

我希望这可以帮助您弄清楚如何完成您正在做的事情。我建议花一些时间阅读 Python 如何查看和管理命名空间。如果您想观看视频,请查看此 PyCon talk by Raymond Hettinger 面向对象编程的 4 种不同方式。