user3361459
user3361459

Reputation: 23

Is it possible to call a module with a variable function in python?

Here's a bit more context, in python, how could you create this effect?

import random
variable = 'randint'
random.[variable](1,3)

Is there any way to write a code for this effect? I haven't found anything outside of a load of {if} blocks.

Thanks!

Upvotes: 2

Views: 48

Answers (2)

user2555451
user2555451

Reputation:

You can use the getattr built-in:

>>> import random
>>> variable = 'randint'
>>> getattr(random, variable)(1, 3)
3
>>>

From the docs:

getattr(object, name[, default])

Return the value of the named attribute of object. name must be a string. If the string is the name of one of the object’s attributes, the result is the value of that attribute. For example, getattr(x, 'foobar') is equivalent to x.foobar. If the named attribute does not exist, default is returned if provided, otherwise AttributeError is raised.

Upvotes: 4

zhangxaochen
zhangxaochen

Reputation: 34047

just an alternative of using getattr:

In [141]: random.__dict__['randint'](1,3)
Out[141]: 3

Upvotes: 0

Related Questions