Hướng dẫn how do you transfer data from one function to another in python? - làm thế nào để bạn chuyển dữ liệu từ chức năng này sang chức năng khác trong python?

Một trong những sự thật nuôi tóc nhiều hơn mà chúng tôi học được trong các khóa đào tạo Python giới thiệu của tôi là bạn có thể chuyển các chức năng vào các chức năng khác. Bạn có thể vượt qua các chức năng xung quanh vì trong Python, các hàm là đối tượng.you can pass functions into other functions. You can pass functions around because in Python, functions are objects.

Bạn có thể không cần phải biết về điều này trong tuần đầu tiên sử dụng Python, nhưng khi bạn đi sâu hơn vào Python, bạn sẽ thấy rằng có thể rất thuận tiện để hiểu cách chuyển chức năng vào một chức năng khác.

Đây là phần 1 của những gì tôi mong đợi là một chuỗi về các thuộc tính khác nhau của các đối tượng chức năng của Cameron. Bài viết này tập trung vào những gì một lập trình viên Python mới nên biết và đánh giá cao về tính chất đối tượng của các chức năng Python.the object-nature of Python’s functions.

    Các chức năng có thể được tham chiếu

    Nếu bạn cố gắng sử dụng một chức năng mà không đặt dấu ngoặc đơn sau khi nó python giành được khiếu nại nhưng nó cũng đã giành được bất cứ điều gì hữu ích:

    1
    2
    3
    4
    5
    
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    

    Điều này cũng áp dụng cho các phương thức [các phương thức là các hàm sống trên các đối tượng]:

    1
    2
    3
    
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    

    Python đang cho phép chúng ta tham khảo các đối tượng chức năng này, giống như cách chúng ta có thể đề cập đến một chuỗi, một số hoặc đối tượng

    1
    2
    
    8:

    1
    2
    3
    4
    5
    6
    
    >>> "hello"
    'hello'
    >>> 2.5
    2.5
    >>> range[10]
    range[0, 10]
    

    Vì chúng ta có thể tham khảo các chức năng như bất kỳ đối tượng nào khác, chúng ta có thể trỏ một biến vào một hàm:

    1
    2
    
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    

    Biến

    1
    2
    
    9 đó hiện chỉ vào phương thức
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    0 trong danh sách
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    1 của chúng tôi. Vì vậy, nếu chúng ta gọi
    1
    2
    
    9, nó sẽ làm điều tương tự mà việc gọi
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    3 sẽ làm:

    ________số 8
    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    

    Lưu ý rằng chúng tôi đã làm một chức năng mới. Chúng tôi đã chỉ tên biến

    1
    2
    
    9 vào hàm
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    3:didn’t make a new function. We’ve just pointed the
    1
    2
    
    9 variable name to the
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    3 function:

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    0
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    1

    Bạn thậm chí có thể lưu trữ các chức năng bên trong các cấu trúc dữ liệu và sau đó tham chiếu chúng sau:

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    2
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    3

    Nó không phổ biến lắm để lấy một chức năng và đặt cho nó một tên khác hoặc lưu trữ nó bên trong cấu trúc dữ liệu, nhưng Python cho phép chúng tôi làm những việc này vì các chức năng có thể được truyền xung quanh, giống như bất kỳ đối tượng nào khác.functions can be passed around, just like any other object.

    Các chức năng có thể được chuyển vào các chức năng khác

    Các chức năng, giống như bất kỳ đối tượng nào khác, có thể được truyền như một đối số cho một hàm khác.

    Ví dụ: chúng ta có thể xác định một hàm:

    1
    2
    3
    4
    5
    6
    
    >>> "hello"
    'hello'
    >>> 2.5
    2.5
    >>> range[10]
    range[0, 10]
    

    Vì chúng ta có thể tham khảo các chức năng như bất kỳ đối tượng nào khác, chúng ta có thể trỏ một biến vào một hàm:

    1
    2
    3
    4
    5
    
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    

    Điều này cũng áp dụng cho các phương thức [các phương thức là các hàm sống trên các đối tượng]:

    1
    2
    
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    

    Biến

    1
    2
    
    9 đó hiện chỉ vào phương thức
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    0 trong danh sách
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    1 của chúng tôi. Vì vậy, nếu chúng ta gọi
    1
    2
    
    9, nó sẽ làm điều tương tự mà việc gọi
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    3 sẽ làm:

    ________số 8

    1
    2
    3
    4
    5
    6
    
    >>> "hello"
    'hello'
    >>> 2.5
    2.5
    >>> range[10]
    range[0, 10]
    

    Vì chúng ta có thể tham khảo các chức năng như bất kỳ đối tượng nào khác, chúng ta có thể trỏ một biến vào một hàm:

    1
    2
    

    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    Biến
    1
    2
    
    9 đó hiện chỉ vào phương thức
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    0 trong danh sách
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    1 của chúng tôi. Vì vậy, nếu chúng ta gọi
    1
    2
    
    9, nó sẽ làm điều tương tự mà việc gọi
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    3 sẽ làm:

    ________số 8

    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    

    1
    2
    3
    4
    5
    6
    
    >>> "hello"
    'hello'
    >>> 2.5
    2.5
    >>> range[10]
    range[0, 10]
    

    Vì chúng ta có thể tham khảo các chức năng như bất kỳ đối tượng nào khác, chúng ta có thể trỏ một biến vào một hàm:

    1
    2
    

    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    lambda expression the object you get back is called a lambda function.

    1
    2
    3
    4
    5
    
    Biến
    1
    2
    
    9 đó hiện chỉ vào phương thức
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    0 trong danh sách
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    1 của chúng tôi. Vì vậy, nếu chúng ta gọi
    1
    2
    
    9, nó sẽ làm điều tương tự mà việc gọi
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    3 sẽ làm:

    ________số 8

    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    

    1
    2
    3
    4
    5
    6
    
    >>> "hello"
    'hello'
    >>> 2.5
    2.5
    >>> range[10]
    range[0, 10]
    

    Vì chúng ta có thể tham khảo các chức năng như bất kỳ đối tượng nào khác, chúng ta có thể trỏ một biến vào một hàm:

    1
    2
    

    1
    2
    3
    4
    5
    
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    

    Biến

    1
    2
    
    9 đó hiện chỉ vào phương thức
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    0 trong danh sách
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    1 của chúng tôi. Vì vậy, nếu chúng ta gọi
    1
    2
    
    9, nó sẽ làm điều tương tự mà việc gọi
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    3 sẽ làm:

    1
    2
    3
    4
    5
    6
    
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    3

    Các biểu thức Lambda là khi chúng tôi muốn xác định một hàm và chuyển nó vào một chức năng khác ngay lập tức.pass it into another function immediately.

    Ví dụ, ở đây, chúng tôi sử dụng

    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    7 để có được số chẵn, nhưng chúng tôi sử dụng biểu thức Lambda để chúng tôi không phải xác định hàm
    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    
    5 trước khi chúng tôi sử dụng nó:

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    0
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    5

    Đây là cách sử dụng các biểu thức Lambda thích hợp nhất: chuyển một hàm vào một hàm khác trong khi xác định chức năng được truyền tất cả trên một dòng mã.

    Như tôi đã viết về việc lạm dụng các biểu thức Lambda, tôi đã không phải là một fan hâm mộ của cú pháp biểu hiện Python Lamb Lambda. Cho dù bạn có thích cú pháp này hay không, bạn nên biết rằng cú pháp này chỉ là một lối tắt để tạo hàm.

    Bất cứ khi nào bạn nhìn thấy các biểu thức

    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    
    2, hãy nhớ rằng:

    1. Biểu thức Lambda là một cú pháp đặc biệt để tạo hàm và chuyển nó cho một hàm khác trên một dòng mã
    2. Các hàm Lambda cũng giống như tất cả các đối tượng chức năng khác: không đặc biệt hơn đối tượng khác và cả hai đều có thể được truyền xung quanh

    Tất cả các chức năng trong Python có thể được truyền như một đối số cho một hàm khác [đó chỉ là mục đích duy nhất của các hàm Lambda].

    Một ví dụ phổ biến: các chức năng chính

    Bên cạnh chức năng

    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    7 tích hợp, bạn sẽ thấy một hàm được truyền vào một chức năng khác ở đâu? Có lẽ nơi phổ biến nhất mà bạn sẽ thấy điều này trong chính Python là với một chức năng chính.key function.

    Nó có một quy ước phổ biến cho các chức năng chấp nhận một sự phân biệt/được sắp xếp/ra lệnh cũng chấp nhận một đối số được đặt tên gọi là

    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    
    8. Đối số
    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    
    8 này phải là một hàm hoặc một người khác có thể gọi được.

    Các hàm được sắp xếp, tối thiểu và tối đa đều tuân theo quy ước chấp nhận hàm

    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    
    8:

    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    6
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    7

    Hàm khóa đó được gọi cho mỗi giá trị trong số đó đã cho và giá trị trả về được sử dụng để đặt hàng/sắp xếp từng mục có thể lặp lại. Bạn có thể nghĩ về chức năng khóa này như tính toán một khóa so sánh cho từng mục trong ITEBELLE.a comparison key for each item in the iterable.

    Trong ví dụ trên, khóa so sánh của chúng tôi trả về một chuỗi thấp hơn, do đó, mỗi chuỗi được so sánh bởi phiên bản thấp hơn của nó [dẫn đến thứ tự không nhạy cảm trường hợp].

    Chúng tôi đã sử dụng chức năng

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    01 để thực hiện việc này, nhưng điều tương tự có thể được thực hiện bằng cách sử dụng
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    02:

    1
    2
    3
    
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    9

    Lưu ý: Thủ thuật

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    02 đó hơi kỳ lạ nếu bạn không quen thuộc với cách các lớp hoạt động. Các lớp lưu trữ các phương thức không liên kết sẽ chấp nhận một thể hiện của lớp đó khi được gọi. Chúng tôi thường nhập
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    04 nhưng
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    05 là những gì Python dịch nó thành. Đó là một câu chuyện cho một thời gian khác.
    : That
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    02 trick is a bit odd if you aren’t familiar with how classes work. Classes store the unbound methods that will accept an instance of that class when called. We normally type
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    04 but
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    05 is what Python translates that to. That’s a story for another time.

    Ở đây, chúng tôi tìm thấy chuỗi với nhiều chữ cái nhất trong đó:

    1
    2
    
    1
    2
    3
    4
    5
    6
    
    1

    Nếu có nhiều tối đa hoặc tối thiểu, thì lần đầu tiên sẽ thắng [đó là cách mà ____ 106/________ 107 hoạt động]:

    1
    2
    3
    4
    5
    
    1
    2
    3
    4
    5
    6
    
    3

    Ở đây, một hàm sẽ trả về một bộ 2 mục chứa độ dài của một chuỗi đã cho và phiên bản bình thường hóa của chuỗi đó:

    1
    2
    3
    
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    9

    Lưu ý: Thủ thuật

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    02 đó hơi kỳ lạ nếu bạn không quen thuộc với cách các lớp hoạt động. Các lớp lưu trữ các phương thức không liên kết sẽ chấp nhận một thể hiện của lớp đó khi được gọi. Chúng tôi thường nhập
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    04 nhưng
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    05 là những gì Python dịch nó thành. Đó là một câu chuyện cho một thời gian khác.

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    0
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    5

    Đây là cách sử dụng các biểu thức Lambda thích hợp nhất: chuyển một hàm vào một hàm khác trong khi xác định chức năng được truyền tất cả trên một dòng mã.

    Như tôi đã viết về việc lạm dụng các biểu thức Lambda, tôi đã không phải là một fan hâm mộ của cú pháp biểu hiện Python Lamb Lambda. Cho dù bạn có thích cú pháp này hay không, bạn nên biết rằng cú pháp này chỉ là một lối tắt để tạo hàm.

    Bất cứ khi nào bạn nhìn thấy các biểu thức

    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    
    2, hãy nhớ rằng:

    Biểu thức Lambda là một cú pháp đặc biệt để tạo hàm và chuyển nó cho một hàm khác trên một dòng mã

    Các hàm Lambda cũng giống như tất cả các đối tượng chức năng khác: không đặc biệt hơn đối tượng khác và cả hai đều có thể được truyền xung quanh

    1
    2
    3
    4
    5
    6
    
    Tất cả các chức năng trong Python có thể được truyền như một đối số cho một hàm khác [đó chỉ là mục đích duy nhất của các hàm Lambda].

    Một ví dụ phổ biến: các chức năng chính

    1
    2
    
    1
    2
    3
    4
    5
    6
    
    1

    Nếu có nhiều tối đa hoặc tối thiểu, thì lần đầu tiên sẽ thắng [đó là cách mà ____ 106/________ 107 hoạt động]:

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    0
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    5

    Đây là cách sử dụng các biểu thức Lambda thích hợp nhất: chuyển một hàm vào một hàm khác trong khi xác định chức năng được truyền tất cả trên một dòng mã.: as I noted in my article on overusing lambda, I personally prefer to use generator expressions instead of the

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    15 and
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    7 functions.

    Như tôi đã viết về việc lạm dụng các biểu thức Lambda, tôi đã không phải là một fan hâm mộ của cú pháp biểu hiện Python Lamb Lambda. Cho dù bạn có thích cú pháp này hay không, bạn nên biết rằng cú pháp này chỉ là một lối tắt để tạo hàm.

    Bất cứ khi nào bạn nhìn thấy các biểu thức
    >>> gimme[]
    29
    >>> numbers
    [2, 1, 3, 4, 7, 11, 18]
    >>> gimme[0]
    2
    >>> numbers
    [1, 3, 4, 7, 11, 18]
    >>> gimme[]
    18
    
    2, hãy nhớ rằng:
    Biểu thức Lambda là một cú pháp đặc biệt để tạo hàm và chuyển nó cho một hàm khác trên một dòng mã

    Các hàm Lambda cũng giống như tất cả các đối tượng chức năng khác: không đặc biệt hơn đối tượng khác và cả hai đều có thể được truyền xung quanh

    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    6
    >>> numbers = [1, 2, 3]
    >>> numbers.pop
    
    
    7

    Hàm khóa đó được gọi cho mỗi giá trị trong số đó đã cho và giá trị trả về được sử dụng để đặt hàng/sắp xếp từng mục có thể lặp lại. Bạn có thể nghĩ về chức năng khóa này như tính toán một khóa so sánh cho từng mục trong ITEBELLE.

    1
    2
    3
    4
    5
    6
    
    >>> "hello"
    'hello'
    >>> 2.5
    2.5
    >>> range[10]
    range[0, 10]
    
    9

    Lớp

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    26 này chấp nhận một cuộc gọi [chức năng hoặc lớp] sẽ được gọi để tạo giá trị mặc định bất cứ khi nào một khóa bị thiếu được truy cập.

    Mã trên hoạt động vì

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    29 trả về
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    30 khi được gọi không có đối số:

    1
    2
    
    1
    2
    
    1

    Ở đây, giá trị mặc định là

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    6, trả về một danh sách mới khi được gọi không có đối số.

    1
    2
    3
    4
    5
    
    1
    2
    
    3

    Hàm một phần trong mô -đun

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    32 là một ví dụ khác.
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    33 chấp nhận một hàm và bất kỳ số lượng đối số nào và trả về một hàm mới [về mặt kỹ thuật, nó trả về một đối tượng có thể gọi được].

    Ở đây, một ví dụ về

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    33 được sử dụng để liên kết với đối số từ khóa
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    35 với hàm
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    36:

    1
    2
    
    4
    1
    2
    
    5

    Hàm

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    37 được trả về bây giờ làm điều tương tự như thể
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    36 được gọi với
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    39:

    ________số 8
    1
    2
    
    7

    Bạn cũng sẽ tìm thấy các chức năng-các chức năng chấp nhận trong các thư viện của bên thứ ba, như trong Django và trong Numpy. Bất cứ khi nào bạn thấy một lớp hoặc một chức năng với tài liệu nói rằng một trong những đối số của nó phải là một đối tượng có thể gọi được hoặc một đối tượng có thể gọi được, điều đó có nghĩa là bạn có thể chuyển trong một chức năng ở đây.callable or a callable object, that means “you could pass in a function here”.

    Một chủ đề tôi đã bỏ qua: các chức năng lồng nhau

    Python cũng hỗ trợ các chức năng lồng nhau [các chức năng được xác định bên trong các chức năng khác]. Các chức năng lồng nhau Power Python từ trang trí cú pháp.

    Tôi sẽ không thảo luận về các chức năng lồng nhau trong bài viết này bởi vì các chức năng lồng nhau đảm bảo thăm dò các biến không cục bộ, đóng cửa và các góc kỳ lạ khác của Python mà bạn không cần biết khi nào bạn mới bắt đầu với các chức năng đối xử như các đối tượng.

    Tôi dự định viết một bài viết tiếp theo về chủ đề này và liên kết đến nó ở đây sau. Trong khi đó, nếu bạn quan tâm đến các chức năng lồng nhau trong Python, việc tìm kiếm các chức năng bậc cao hơn trong Python có thể hữu ích.

    Đối xử với các chức năng như đối tượng là bình thường

    Python có các chức năng hạng nhất, có nghĩa là:

    1. Bạn có thể gán các hàm cho các biến
    2. Bạn có thể lưu trữ các chức năng trong danh sách, từ điển hoặc các cấu trúc dữ liệu khác
    3. Bạn có thể chuyển các chức năng vào các chức năng khác
    4. Bạn có thể viết các chức năng trả về các chức năng

    Nó có vẻ kỳ lạ khi coi các chức năng là đối tượng, nhưng nó không phải là bất thường trong Python. Theo tính toán của tôi, khoảng 15% các bản dựng Python có nghĩa là chấp nhận các chức năng như các đối số [

    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    06,
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    07,
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    10,
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    15,
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    7,
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    45,
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    46,
    >>> def greet[]:
    ...     print["Hello world!"]
    ...
    >>> greet
    
    
    47,
    >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
    >>> gimme = numbers.pop
    
    7, ____149].

    Việc sử dụng quan trọng nhất của các chức năng hạng nhất Python, là:

    1. Chuyển hàm
      >>> gimme[]
      29
      >>> numbers
      [2, 1, 3, 4, 7, 11, 18]
      >>> gimme[0]
      2
      >>> numbers
      [1, 3, 4, 7, 11, 18]
      >>> gimme[]
      18
      
      8 cho các chức năng
      >>> def greet[]:
      ...     print["Hello world!"]
      ...
      >>> greet
      
      
      10,
      >>> def greet[]:
      ...     print["Hello world!"]
      ...
      >>> greet
      
      
      06 và
      >>> def greet[]:
      ...     print["Hello world!"]
      ...
      >>> greet
      
      
      07 tích hợp
    2. Chuyển các chức năng vào những người trợ giúp vòng lặp như
      >>> numbers = [2, 1, 3, 4, 7, 11, 18, 29]
      >>> gimme = numbers.pop
      
      7 và
      >>> def greet[]:
      ...     print["Hello world!"]
      ...
      >>> greet
      
      
      55
    3. Chuyển một chức năng nhà máy tạo giá trị mặc định của người Viking đến các lớp như
      >>> def greet[]:
      ...     print["Hello world!"]
      ...
      >>> greet
      
      
      26
    4. “Các chức năng đánh giá một phần của các chức năng bằng cách chuyển chúng vào
      >>> def greet[]:
      ...     print["Hello world!"]
      ...
      >>> greet
      
      
      57

    Các chủ đề này đi sâu hơn nhiều so với những gì tôi đã thảo luận ở đây, nhưng cho đến khi bạn thấy mình viết các chức năng trang trí, có lẽ bạn không cần phải khám phá chủ đề này nữa.

    Làm thế nào để bạn truyền dữ liệu từ chức năng này sang chức năng khác trong Python?

    Làm thế nào để bạn truyền dữ liệu từ chức năng này sang chức năng khác trong Python ?..
    Khởi tạo 'danh sách' như một danh sách trống; Gọi chính [điều này, ít nhất, tôi biết tôi đã có đúng].
    Trong DEFINEALIST [], gán các giá trị nhất định vào danh sách; Sau đó chuyển danh sách mới trở lại chính [].
    Trong Main [], gọi Usethelist [Danh sách].

    Làm thế nào để bạn truyền dữ liệu giữa các chức năng?

    Khi có nhiều chức năng [hầu hết thời gian], cần phải có một cách để truyền dữ liệu giữa các chức năng. Điều này được thực hiện bằng cách truyền các giá trị trong ngoặc đơn: myfeft [MyData]. Ngay cả khi không có dữ liệu được truyền, chúng tôi vẫn phải khai báo và thực thi các chức năng bằng cách sử dụng dấu ngoặc đơn: myfunction [].passing values in parenthesis: myFunction[myData]. Even when there is no data to be passed, we still have to declare and execute functions by using parenthesis: myFunction[].

    Làm thế nào để bạn sử dụng đầu ra của một hàm từ một hàm khác trong Python?

    Hiển thị hoạt động trên bài đăng này ...
    Trả về đầu ra của hàm A. def A [num1, num2]: num3 = num1+num2 return num3 ..
    Khi bạn gọi chức năng A, lưu trữ kết quả trong một biến khác.Kết quả = A [12,14] ....
    Khi gọi hàm B, thay cho NUM3, vượt qua giá trị được lưu trữ trong 'Kết quả'.Đối số thứ hai có thể là bất kỳ số nào ..

    Làm thế nào để bạn truy cập một biến từ một chức năng khác trong Python?

    Sử dụng cú pháp thuộc tính đối tượng để truy cập một biến bên ngoài hàm.Trong một chức năng có tên Func, sử dụng Func cú pháp.Biến = giá trị để lưu trữ giá trị trong biến như một thuộc tính của func.Để truy cập giá trị bên ngoài func, sử dụng func [] để chạy func, sau đó sử dụng chức năng cú pháp_name.. In a function named func , use the syntax func. variable = value to store value in variable as an attribute of func . To access value outside of func , use func[] to run func , then use the syntax function_name.

    Bài Viết Liên Quan

    Chủ Đề