【问题标题】:Variable value is determined by function call变量值由函数调用决定
【发布时间】:2023-04-11 06:10:01
【问题描述】:

这可能很奇怪,但我想声明一个没有固定值的变量,但以某种方式“链接”到函数的结果。目标是最终用户操作变量,但每次使用变量的值时,其值都可能发生变化。

这是我得到的当前结果:

from random import randint

def randomfun():
    return randint(1, 100)

an_int = randomfun
print an_int    # Print the function object
print an_int()  # Print the result of randomfun()

我想得到的是print an_int实际调用randomfun(),但不用加括号,an_int的类型应该是randomfun的返回类型。

【问题讨论】:

  • 我不明白这个问题。要声明一个没有值的变量,请将其声明为 None。 “链接”在某种程度上是没有意义的,很难理解你的意思。您可以在范围内操作变量而不会出现任何问题。如果您想有时更改变量,而不是其他情况,则需要抽象(访问器方法)。你是否试图让它有 50% 的机会调用 randfun,并有 50% 的机会改变值?
  • 对不起,我误会了。
  • 你可能知道这一点,但在程序中遇到这样的变量可能会导致一些非常令人沮丧的调试会话。
  • 是的,不用担心,我会把它非常说清楚,并且只在非常特殊的情况下使用它。

标签: python


【解决方案1】:

an_int 是一个对象。除非你改变它,否则它不会改变它的值。但是,您可以更改对象的表示方式:

from random import randint

class RandomFun(object):
    def __str__(self):
        return str(randomfun())

def randomfun():
    return randint(1, 100)

an_int = RandomFun()
print an_int    
print an_int    

产量(类似)

57
19

【讨论】:

  • +1:非常聪明。有没有办法实际使用an_int 作为整数?
  • 聪明的解决方案,符合 GuillaumeA 的明确要求,但可能不符合他的实际需求。
  • @Blender:我不知道你可以使用int 的子类,因为ints 是不可变的。
  • 正是我想要实现的目标。谢谢@unutbu!
猜你喜欢
  • 2019-09-13
  • 2020-09-16
  • 2013-11-27
  • 2011-09-08
  • 2021-11-27
  • 1970-01-01
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多