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

6

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

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 inside another function python? - bạn có thể gọi một hàm bên trong một hàm khác trong python không?

Georgy

11K7 Huy hiệu vàng62 Huy hiệu bạc68 Huy hiệu Đồng7 gold badges62 silver badges68 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 inside another function python? - bạn có thể gọi một hàm bên trong một hàm khác trong python không?

AlfealfeAlfe

53.6K19 Huy hiệu vàng100 Huy hiệu bạc152 Huy hiệu đồng19 gold badges100 silver badges152 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.59116 Huy hiệu vàng46 Huy hiệu bạc91 Huy hiệu Đồng16 gold badges46 silver badges91 bronze badges

Tôi có thể gọi một hàm bên trong một hàm khác không?

Gọi một chức năng từ bên trong được gọi là đệ quy và câu trả lời đơn giản là, vâng. and the simple answer is, yes.

Làm cách nào để gọi hàm bên trong từ một hàm khác trong Python?

Bạn có thể làm điều đó bằng cách sử dụng các đóng cửa Python, tức là một thể hiện chức năng được đặt trong một phạm vi kèm theo.Có một điều bạn nên chăm sóc, bạn phải gọi hàm bên ngoài để gọi hàm bên trong vì phạm vi của nó nằm trong hàm đó.using Python Closures i.e. a function instance enclosed within an enclosing scope. There is one thing you should take care of, you must have to call the outer function to call the inner function because it's scope is inside that function.

Làm thế nào để bạn gọi một chức năng lồng nhau trong Python?

Một hàm được xác định bên trong một hàm khác được gọi là hàm lồng nhau.Các hàm lồng nhau có thể truy cập các biến của phạm vi kèm theo.Trong Python, các biến không cục bộ này chỉ được đọc theo mặc định và chúng ta phải khai báo chúng một cách rõ ràng là không cục bộ (sử dụng từ khóa không thuộc địa) để sửa đổi chúng.. Nested functions can access variables of the enclosing scope. In Python, these non-local variables are read-only by default and we must declare them explicitly as non-local (using nonlocal keyword) in order to modify them.