Tại sao Python in dấu ngoặc đơn

Bộ não logic của tôi nói rằng một chức năng là bất kỳ "thứ" nào có một bộ tham số và dữ liệu xác định. Ví dụ: một biến được xác định bởi dấu = và dữ liệu cũng sẽ là một hàm vì nó có thể được gọi bằng một hành động

Bạn có thể tưởng tượng một hàm là một khối mã có thể nhận dữ liệu đầu vào của nó dưới dạng đối số, có thể trả về dữ liệu và bạn có thể gọi. Trong Python mọi thứ đều là đối tượng nên hàm cũng là đối tượng

Bất kỳ biến nào không phải là một hàm (hoặc có thể gọi được) vì một biến nói chung không xác định cách hành xử khi được gọi

Tôi tưởng tượng sự khác biệt duy nhất là không thể thay đổi chức năng “def” so với nội dung ban đầu của nó và do đó sẽ tốt hơn cho các “cuộc gọi” lặp lại thông qua một chương trình

Bạn không thể (dễ dàng) thay đổi một chức năng hiện có nhưng bạn chắc chắn có thể liên kết một chức năng khác với một tên hiện có

def greeting():
    print('Hello')

def greeting():  # This binds a new function to the existing name greeting
    print('Hi')

def greeting3():
    print('Good morning')

greeting = greeting3  # assignment like for any other variable
# again binds a different function to the existing name

# You can even create a function using an expression (without def):
greeting = lambda: print('Bye')
# Do not use this in production code to create named functions, there are some important differences.

Tôi vẫn đang cố gắng tìm xem “map()” làm gì

list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
5 xử lý
list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
6 (như
list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
7,
list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
8,
list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
9…) bằng cách xử lý mọi mục của nó bằng cách sử dụng
x = 1  # This is not a function.
0 được cung cấp. Kết quả là một lần lặp (cụ thể hơn là một trình vòng lặp) của các mục đã xử lý (giá trị trả về là
x = 1  # This is not a function.
0)

list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]


  1. điều này được thực hiện bằng cách triển khai phương pháp

    x = 1  # This is not a function.
    
    2

Chào Brad,

Không, bài tập không phải là một chức năng

x = 1  # This is not a function.

Trong Python, phép gán là một câu lệnh

Ngôn ngữ lập trình Python có một số loại mã riêng biệt, có thể chia thành hai nhóm cơ bản. tuyên bố và biểu thức

Một “câu lệnh” là một lệnh Python đơn. Một số trong số họ là một lớp lót

import math  # load the `math` module and allow it to be used

Một số yêu cầu một khối mã theo sau chúng

for x in ['one', 'two', 'three']:
    # block of code follows here
    print(x)

Biểu thức là một loại câu lệnh đặc biệt có giá trị. Giá trị có thể là số, chuỗi, danh sách và những thứ phức tạp hơn

1 + 2  # has the value 3
"Hello world"
[1+2, "Hello", "Goodbye"]  # A list.

Lưu ý rằng các biểu thức có thể chứa các biểu thức khác

Chuyển nhượng hoặc "ràng buộc tên" là một tuyên bố

value = 1 + 2

(mặc dù cũng có một dạng biểu hiện của điều đó, nhưng đừng lo lắng về điều đó lúc này)

Khi chúng ta nói từ “chức năng”, chúng ta có thể hiểu nó theo hai nghĩa. Theo nghĩa thứ nhất, chúng tôi muốn nói đến một loại giá trị đặc biệt

  • Các con số là những thứ mà bạn có thể thực hiện các phép tính số học;
  • Chuỗi là những thứ có thể chứa các từ và câu, v.v.;
  • Danh sách là các thùng chứa có thể chứa những thứ khác bên trong chúng;

và hàm là những thứ chứa mã mà bạn chạy bằng cách gọi hàm, tùy chọn bằng cách truyền đối số cho nó

Vì vậy, trong ý nghĩa đó, một chức năng là một điều. Giống như những thứ khác, bạn có thể đặt các hàm bên trong danh sách, bạn có thể in chúng, bạn có thể gán chúng cho một biến, xóa chúng, v.v.

Nhân tiện, trong Python, chúng tôi gọi mọi thứ là "đối tượng"

Ý nghĩa khác của “hàm” là một câu lệnh *tạo một đối tượng hàm

def myfunction(arg):
    # block of code goes here.
    return ["Hello", arg, 999]

tuyên bố chắc chắn này

  1. tạo một đối tượng chức năng;
  2. và gán nó cho biến “myfunction”

Bây giờ bạn đã gán một hàm (ý nghĩa 1) cho một biến, bạn có thể làm bất cứ điều gì bạn muốn với nó

print(myfunction)

Điều đó sẽ in một cái gì đó như


Trong trường hợp này, chúng ta đang xử lý đối tượng hàm, một vật, như một giá trị. chúng tôi muốn in giá trị. Bản in không thú vị lắm. Nó cho chúng ta biết rằng đó là một chức năng, tên của nó và một vị trí duy nhất trong bộ nhớ gần như hoàn toàn vô dụng

Nếu chúng ta muốn coi đối tượng hàm là một hàm, chúng ta cần gọi nó bằng cách đặt dấu ngoặc tròn (dấu ngoặc đơn) sau nó và cung cấp bất kỳ đối số cần thiết nào

list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
0

Đó là một biểu thức, vì vậy nó tạo ra một giá trị mà chúng ta có thể gán cho một biến, hoặc in hoặc bất cứ thứ gì cần thiết

list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
1

Chức năng có thể được thay đổi?

Đúng vậy, về mặt kỹ thuật, các đối tượng chức năng có thể được tháo rời, chẳng hạn như động cơ ô tô, và ghép lại với nhau bằng các bộ phận được thay thế, loại bỏ hoặc thêm vào, nhưng điều đó không phổ biến hoặc dễ thực hiện

Trong thực tế, 99% thời gian chúng ta tạo các hàm bằng câu lệnh

x = 1  # This is not a function.
3, và sau đó chỉ gọi chúng, không có gì khác

Để hiểu

x = 1  # This is not a function.
4, chúng ta phải hiểu ý tưởng về các hàm bậc cao hơn, xuất phát từ mô hình lập trình hàm

Chúng tôi tìm hiểu về các chức năng thông thường cũ đơn giản từ toán học ở trường. Một hàm nhận một giá trị, chẳng hạn như một số và xử lý nó bằng cách nào đó, trả về (giả sử) một số mới

list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
2

Trong bài viết trước của tôi, tôi đã nói về thực tế là trong Python, bản thân các hàm là các giá trị, giống như chuỗi, số và danh sách. Vậy điều gì sẽ xảy ra nếu chúng ta viết một hàm dự kiến ​​sẽ nhận một hàm khác làm đối số?

Chúng sẽ được gọi là các hàm bậc cao hơn và kỹ thuật này có thể được sử dụng để tự động hóa việc tạo các hàm. Đây là một ví dụ cơ bản

list(map(function, [1, 2]))
# gives the same result as:
[function(1), function(2)]
3

Bạn có đoán được hàm

x = 1  # This is not a function.
5,
x = 1  # This is not a function.
6 và
x = 1  # This is not a function.
7 làm gì không?

Điều này đưa chúng ta trở lại

x = 1  # This is not a function.
4. Đây là một hàm tiêu chuẩn, đơn giản, bậc cao hơn, lấy một hàm khác làm đối số và danh sách các giá trị, sau đó gọi đối số đầu vào đó với từng giá trị trong danh sách

Bạn có thể in mà không có dấu ngoặc đơn trong Python không?

Mặc dù bạn cần một cặp dấu ngoặc đơn để in trong Python 3, nhưng bạn không cần khoảng trắng sau print nữa, bởi vì đó là một hàm . Vì vậy, đó chỉ là một nhân vật phụ duy nhất. Nếu bạn vẫn thấy việc nhập một cặp dấu ngoặc đơn là "tốn thời gian không cần thiết", bạn có thể thực hiện p = print và lưu một vài ký tự theo cách đó.

print() có nghĩa là gì trong Python?

Hàm print() in thông báo đã chỉ định ra màn hình hoặc thiết bị đầu ra tiêu chuẩn khác . Thông báo có thể là một chuỗi, hoặc bất kỳ đối tượng nào khác, đối tượng sẽ được chuyển thành chuỗi trước khi ghi ra màn hình.