How do you call a function in a function?

2019-05-12 01:03发布

I saw two other questions like this but they didn't work...

So my question is, I have a function, and I'm making another one in which I need to call the first function. I don't have experience in Python, but I know that in languages like Matlab is possible as long as they're in the same directory.

A basic example:

def square(x):
square = x * x

(and saved)

now in my new function I want to use the function square i tried:

def something (y, z)
  import square
  something = square(y) + square(z)
  return something

which displays: builtins.TypeError: 'module' object is not callable

What should I do?

4条回答
何必那么认真
2楼-- · 2019-05-12 01:30

No need for import if its in the same file.

Just call square from the something function.

def square(x):
  square = x * x
  return square

def something (y, z)
  something = square(y) + square(z)
  return something

More simply:

def square(x):
  return x * x

def something (y, z)
  return square(y) + square(z)
查看更多
不美不萌又怎样
3楼-- · 2019-05-12 01:31

2 way to use a function within an other:

  1. You define the square() function in another .py file (ex: myfile.py) and then, you can import the function this way:
from myfile import square

def newFunction():
   square()
  1. You define the function in the same file and then there is no need for the import and you can use square() directly.
查看更多
啃猪蹄的小仙女
4楼-- · 2019-05-12 01:40

If, and only if, you have the square function defined in a square module, then you should look to import the simple name from it instead.

from square import square

If you don't want to change anything, then you need to use its fully qualified name:

something = square.square(y) + square.square(z)

The module's name is square, and you can't call functions on modules.

查看更多
Emotional °昔
5楼-- · 2019-05-12 01:44

You have several options.

  1. Put everything in one file. Then you only need to call the other function; forget about all imports then.

  2. Put the square function in a different file, e. g. foo.py. Then your using function needs to import it. For that you have two options again: import foo and use foo.square(y) or from foo import square and use square(y). (You can name your module like your function as well -- the two have separate name spaces -- so then you would have to from square import square.)

Modules (i. e. in a separate file) are used for grouping logically connected things together, e. g. all mathematical functions, all operating-system related things, all random number generator related things, etc. So in your case which looks like a first test I'd propose to put everything in one file and forget about all imports.

查看更多
登录 后发表回答