Hướng dẫn can you call a function within another function python? - bạn có thể gọi một hàm trong một hàm khác trong python không?

Tôi có một chức năng và tôi đang tạo một chức năng khác trong đó tôi cần gọi hàm đầu tiên. Tôi không có kinh nghiệm về Python, nhưng tôi biết rằng bằng các ngôn ngữ như Matlab, có thể miễn là chúng nằm trong cùng một thư mục.

Một ví dụ cơ bản:

def square(x):
    square = x * x

(và đã lưu)

Bây giờ trong chức năng mới của tôi, tôi muốn sử dụng hình vuông chức năng mà tôi đã thử:

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

Trong đó hiển thị: builtins.TypeError: 'module' object is not callable.

Tôi nên làm gì?

Hướng dẫn can you call a function within another function python? - bạn có thể gọi một hàm trong một hàm khác trong python không?

Georgy

11K7 Huy hiệu vàng62 Huy hiệu bạc69 Huy hiệu đồng7 gold badges62 silver badges69 bronze badges

Đã hỏi ngày 5 tháng 10 năm 2015 lúc 22:07Oct 5, 2015 at 22:07

2

Không cần import nếu nó trong cùng một tệp.

Chỉ cần gọi square từ hàm

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

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

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

Đơn giản hơn:

def square(x):
  return x * x

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

Đã trả lời ngày 5 tháng 10 năm 2015 lúc 22:21Oct 5, 2015 at 22:21

Ty Pavicichty PavicichTy Pavicich

1.0403 huy hiệu vàng9 Huy hiệu bạc22 Huy hiệu đồng3 gold badges9 silver badges22 bronze badges

Nếu, và chỉ khi, bạn có chức năng square được xác định trong mô -đun square, thì bạn nên tìm cách nhập tên đơn giản từ nó., 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

Nếu bạn không muốn thay đổi bất cứ điều gì, thì bạn cần sử dụng tên đủ điều kiện của nó:

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

Tên của mô -đun là square và bạn không thể gọi các chức năng trên các mô -đun.

Đã trả lời ngày 5 tháng 10 năm 2015 lúc 22:09Oct 5, 2015 at 22:09

MakotomakotoMakoto

102K27 Huy hiệu vàng185 Huy hiệu bạc222 Huy hiệu đồng27 gold badges185 silver badges222 bronze badges

0

Bạn có một số tùy chọn.

  1. Đặt mọi thứ trong một tập tin. Sau đó, bạn chỉ cần gọi chức năng khác; Quên về tất cả các import sau đó.

  2. Đặt hàm square trong một tệp khác, e. g.

    def something (y, z)
      import square
      something = square(y) + square(z)
      return something
    
    6. Sau đó, bạn sử dụng chức năng cần phải import. Vì vậy, bạn có hai tùy chọn một lần nữa:
    def something (y, z)
      import square
      something = square(y) + square(z)
      return something
    
    8 và sử dụng
    def something (y, z)
      import square
      something = square(y) + square(z)
      return something
    
    9 hoặc
    def square(x):
      square = x * x
      return square
    
    def something (y, z)
      something = square(y) + square(z)
      return something
    
    0 và sử dụng
    def square(x):
      square = x * x
      return square
    
    def something (y, z)
      something = square(y) + square(z)
      return something
    
    1. .

Các mô -đun (i. E. Trong một tệp riêng biệt) được sử dụng để nhóm các thứ được kết nối logic lại với nhau, e. g. Tất cả các chức năng toán học, tất cả các thứ liên quan đến hệ điều hành, tất cả các thứ liên quan đến trình tạo số ngẫu nhiên, v.v. Vì vậy, trong trường hợp của bạn trông giống như một bài kiểm tra đầu tiên tôi đề xuất đặt mọi thứ vào một tệp và quên tất cả các ____.

Đã trả lời ngày 5 tháng 10 năm 2015 lúc 22:17Oct 5, 2015 at 22:17

Hướng dẫn can you call a function within another function python? - bạn có thể gọi một hàm trong một hàm khác trong python không?

AlfealfeAlfe

53.7K19 Huy hiệu vàng100 Huy hiệu bạc153 Huy hiệu đồng19 gold badges100 silver badges153 bronze badges

2 Cách sử dụng một hàm trong một chức năng khác:

  1. Bạn xác định hàm
    def square(x):
      square = x * x
      return square
    
    def something (y, z)
      something = square(y) + square(z)
      return something
    
    4 trong tệp
    def square(x):
      square = x * x
      return square
    
    def something (y, z)
      something = square(y) + square(z)
      return something
    
    5 khác (
    def square(x):
      square = x * x
      return square
    
    def something (y, z)
      something = square(y) + square(z)
      return something
    
    6) và sau đó, bạn có thể nhập chức năng theo cách này:
from myfile import square

def newFunction():
   square()
  1. Bạn xác định chức năng trong cùng một tệp và sau đó không cần phải trực tiếp import và bạn có thể sử dụng trực tiếp
    def square(x):
      square = x * x
      return square
    
    def something (y, z)
      something = square(y) + square(z)
      return something
    
    4.

Đã trả lời ngày 5 tháng 10 năm 2015 lúc 22:18Oct 5, 2015 at 22:18

Farhawafarhawafarhawa

9.62116 Huy hiệu vàng47 Huy hiệu bạc91 Huy hiệu Đồng16 gold badges47 silver badges91 bronze badges

Bạn có thể gọi các chức năng trong các chức năng khác không?

Điều quan trọng là phải hiểu rằng mỗi chức năng chúng tôi viết có thể được sử dụng và được gọi từ các chức năng khác mà chúng tôi viết.Đây là một trong những cách quan trọng nhất mà các nhà khoa học máy tính gặp vấn đề lớn và chia nó thành một nhóm các vấn đề nhỏ hơn.

Các chức năng có thể được lồng nhau không?

Sử dụng một hàm là một trong các đối số trong công thức sử dụng hàm được gọi là lồng nhau và chúng ta sẽ gọi hàm đó như một hàm lồng nhau., and we'll refer to that function as a nested function.

Làm thế nào để bạn gọi một hàm bên trong từ hàm bên ngoài trong Python?

Để tạo một bộ trang trí, hãy xác định một hàm và chuyển nó đến một hàm bên ngoài như một đối số.Hàm được truyền này sau đó được gọi trong một hàm bên trong khác, nơi bạn có thể sử dụng nó và thực hiện logic.Cuối cùng, hàm bên ngoài trả về hàm bên trong có chứa hành vi được sửa đổi.define a function and pass it to an outer function as an argument. This passed function is then called within another inner function where you can use it and implement logic. Finally the outer function returns the inner function which contains the modified behavior.