Hàm void trong python là gì

Khi xác định một hàm Python không có tham số, dấu ngoặc đơn theo sau tên hàm là tùy chọn Chọn một Đúng Sai?

4 Hàm có thể chỉ trả về biểu thức Boolean không?

5 Hàm void trả về giá trị gì?

6 Khi hàm void được gán cho một biến, nó sẽ hiển thị?

7 Có bao nhiêu loại dữ liệu trong Python?

8 Điều nào sau đây không đúng về khóa từ điển Mcq?

9 Khóa () trong Python là gì?

10 Khi một hàm Python được gọi Bên trong hàm, các đối số được gán cho các biến được gọi là?

Nếu bạn gán kết quả một hàm trống cho một biến trong Python, bạn sẽ nhận được. Với các ví dụ về mã

Chúc các bạn một ngày tốt lành. Trong bài đăng này, chúng ta sẽ xem xét cách giải quyết vấn đề Nếu bạn gán kết quả một hàm vô hiệu cho một biến trong Python, bạn sẽ nhận được. câu đố lập trình

def void():
    print("Bla Bla")

x = void

print(x)

#OUTPUTS: 


#Hope this helps!

Như chúng ta đã thấy, rất nhiều ví dụ đã được sử dụng để giải quyết vấn đề Nếu bạn gán kết quả một hàm trống cho một biến trong Python, bạn sẽ nhận được. vấn đề

Hàm void trong Python là gì?

Trong Python, có thể soạn một hàm mà không cần câu lệnh trả về. Các hàm như thế này được gọi là void và chúng trả về Không, đối tượng đặc biệt của Python cho "không có gì"

Loại nào sau đây được phép cho khóa từ điển python?

Thứ hai, khóa từ điển phải thuộc loại không thay đổi. Ví dụ: bạn có thể sử dụng số nguyên, số float, chuỗi hoặc Boolean làm khóa từ điển. Tuy nhiên, cả danh sách và từ điển khác đều không thể đóng vai trò là khóa từ điển vì danh sách và từ điển có thể thay đổi

Khi xác định một hàm Python không có tham số, dấu ngoặc đơn theo sau tên hàm là tùy chọn Chọn một Đúng Sai?

'ĐÚNG VẬY'. Khi xác định hàm Python không có tham số, dấu ngoặc đơn theo sau tên hàm là tùy chọn. Toán tử % hoặc mô đun trả về phần còn lại từ phép chia hai số

Các chức năng chỉ có thể trả về các biểu thức Boolean?

Hàm chỉ có thể trả về biểu thức boolean. Phản hồi Câu trả lời đúng là 'Sai'

Hàm void trả về cái gì?

Các hàm trống được tạo và sử dụng giống như các hàm trả về giá trị ngoại trừ chúng không trả về giá trị sau khi hàm thực thi. Thay cho kiểu dữ liệu, hàm void sử dụng từ khóa "void. " Hàm void thực hiện một tác vụ, sau đó quyền điều khiển trả về trình gọi–nhưng, nó không trả về giá trị

Khi hàm void được gán cho một biến, nó sẽ hiển thị?

Trong ví dụ trên, chúng ta đã chuyển hai giá trị cho hàm đã cho, hàm này sau đó trả về tổng của các giá trị đó cho hàm chính bằng cách sử dụng từ khóa return. Ở chế độ tập lệnh, hàm trên không trả về giá trị và không được sử dụng. Khi bạn cố gắng gán một hàm void cho một biến, nó sẽ hiển thị một giá trị đặc biệt được gọi là Không có. 04-09-2020

Có bao nhiêu kiểu dữ liệu trong Python?

Mỗi giá trị trong Python đều có một kiểu dữ liệu và mỗi kiểu dữ liệu là một lớp lưu trữ một biến (đối tượng). Trong một ngôn ngữ lập trình như Python, chủ yếu có 4 loại dữ liệu. Chuỗi – Đó là tập hợp các ký tự Unicode (chữ cái, số và ký hiệu) mà chúng ta thấy trên bàn phím

Điều nào sau đây không đúng về khóa từ điển Mcq?

11. Điều nào sau đây không đúng về khóa từ điển? . Các khóa của từ điển có thể là bất kỳ loại dữ liệu nào không thay đổi. 12

Khóa () trong Python là gì?

Phương thức keys() trong Từ điển Python, trả về một đối tượng dạng xem hiển thị danh sách tất cả các khóa trong từ điển theo thứ tự chèn bằng Python. cú pháp. mệnh lệnh. keys() Tham số. Không có tham số. trả lại. Một đối tượng xem được trả về hiển thị tất cả các phím. 10-Aug-2022

Cho đến giờ trong khóa học này, chúng ta đã sử dụng các hàm dựng sẵn đi kèm với Python. Trong bài học này, chúng ta sẽ học cách tạo các chức năng của riêng mình. Nhưng trước khi làm điều đó, hãy dành thời gian tìm hiểu lý do tại sao chúng ta cần chúng ngay từ đầu

Giả sử bạn muốn tạo một chương trình cho phép người dùng tính tổng giữa hai số. Tại thời điểm này, bạn sẽ không gặp vấn đề gì khi viết những chương trình như vậy;

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)

Thử ngay bây giờ

Chương trình này tính tổng của tất cả các số từ

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
7 đến
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
8. Nếu chúng ta muốn tính tổng các số từ
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
9 đến
Hello !
Today is 2017-06-20 13:20:45.281651
0, chúng ta cần cập nhật chương trình như sau

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)

Như bạn có thể thấy cả hai phiên bản của chương trình gần như giống hệt nhau, điểm khác biệt duy nhất là ở giá trị của biến

Hello !
Today is 2017-06-20 13:20:45.281651
1 và
Hello !
Today is 2017-06-20 13:20:45.281651
2. Vì vậy, mỗi khi chúng ta muốn tính tổng của hai số, chúng ta cần cập nhật mã nguồn của chương trình. Sẽ tốt hơn nếu bằng cách nào đó chúng ta chỉ sử dụng lại toàn bộ mã mà không thực hiện bất kỳ sửa đổi nào. Chúng ta có thể làm điều đó bằng cách sử dụng các chức năng

Chức năng là gì

Một chức năng được đặt tên là nhóm các câu lệnh, thực hiện một nhiệm vụ cụ thể. Cú pháp định nghĩa một hàm như sau

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    

Một chức năng bao gồm hai phần. tiêu đề và cơ thể. Tiêu đề hàm bắt đầu bằng từ khóa

Hello !
Today is 2017-06-20 13:20:45.281651
3, theo sau là tên của hàm, theo sau là các đối số và kết thúc bằng dấu hai chấm (
Hello !
Today is 2017-06-20 13:20:45.281651
4)

Hello !
Today is 2017-06-20 13:20:45.281651
3 là từ khóa dành riêng, vì vậy bạn không nên sử dụng nó làm tên biến hoặc tên hàm trong chương trình của mình.
Hello !
Today is 2017-06-20 13:20:45.281651
6 có thể là bất kỳ số nhận dạng hợp lệ nào. Sau tên hàm, chúng ta có một danh sách các đối số bên trong dấu ngoặc đơn được phân tách bằng dấu phẩy (
Hello !
Today is 2017-06-20 13:20:45.281651
7). Chúng tôi sử dụng các đối số này để truyền dữ liệu cần thiết cho hàm. Một hàm có thể nhận bất kỳ số lượng đối số nào hoặc không có đối số nào. Nếu hàm không chấp nhận bất kỳ đối số nào thì dấu ngoặc đơn được để trống

Trong dòng tiếp theo, chúng ta có một khối câu lệnh hoặc thân hàm. Thân hàm chứa các câu lệnh định nghĩa chức năng làm gì. Như thường lệ, Python sử dụng thụt lề câu lệnh để xác định thời điểm khối bắt đầu và kết thúc. Tất cả các câu lệnh trong phần thân của hàm hàm phải được thụt lề bằng nhau nếu không bạn sẽ gặp lỗi cú pháp

Đặc biệt chú ý đến câu lệnh cuối cùng trong thân hàm i. e

Hello !
Today is 2017-06-20 13:20:45.281651
8. Câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9 được sử dụng để trả về một giá trị từ hàm. Câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9 là không bắt buộc, một số hàm trả về giá trị trong khi hàm khác thì không. Nếu một hàm không có câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9 trong phần thân thì từ khóa dành riêng
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92 sẽ tự động được trả về.
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92 thực sự là một đối tượng có kiểu dựng sẵn
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
94. Đừng lo lắng nếu bạn thấy câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9 khó hiểu;

Đây là chức năng nhỏ in ngày giờ hiện tại cùng với lời chào

python101/Chương-13/first_function. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
4

Thử ngay bây giờ

Hàm

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97 không chấp nhận bất kỳ đối số nào, đó là lý do tại sao dấu ngoặc đơn được để trống. Thân hàm chứa hai câu lệnh
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
98. Hai câu lệnh này sẽ được thực thi khi chúng ta gọi hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97. Hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97 không trả về bất kỳ giá trị nào

Chức năng gọi

Một định nghĩa hàm tự nó không làm gì cả. Để sử dụng một chức năng, chúng ta phải gọi nó. Cú pháp gọi hàm như sau

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
9

Nếu hàm không chấp nhận bất kỳ đối số nào thì hãy sử dụng cú pháp sau

Đoạn mã sau gọi hàm

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
1

python101/Chương-13/calling_first_function. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()

Thử ngay bây giờ

đầu ra

Hello !
Today is 2017-06-20 13:20:45.281651

Lời gọi hàm phải xuất hiện sau khi hàm được định nghĩa, nếu không, bạn sẽ gặp phải ngoại lệ

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
42. Ví dụ

python 101/Chương-13/gọi trước khi định nghĩa. py

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
9

Thử ngay bây giờ

đầu ra

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
4

Khi một hàm được gọi, điều khiển chương trình sẽ nhảy tới định nghĩa hàm đó và thực thi các câu lệnh bên trong thân hàm. Sau khi thực hiện phần thân của hàm, điều khiển chương trình sẽ nhảy trở lại phần chương trình được gọi là hàm và tiếp tục thực hiện tại thời điểm đó

Ví dụ sau minh họa điều gì sẽ xảy ra khi một hàm được gọi

python101/Chương-13/transfer_of_control. py

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
0

Thử ngay bây giờ

đầu ra

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
1

Trong các dòng 3-5, chúng ta đã định nghĩa một câu lệnh

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97. Câu lệnh
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
98 ở dòng 7, in chuỗi
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
45 ra bàn điều khiển. Ở dòng 8, chúng ta đang gọi hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97. Tại thời điểm này, việc thực hiện các câu lệnh sau lệnh gọi tới
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97 tạm dừng và điều khiển chương trình chuyển sang định nghĩa của hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97. Sau khi thực hiện phần thân của hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97, điều khiển chương trình lại nhảy trở lại điểm mà nó dừng lại và tiếp tục thực hiện từ đó

Hàm void trong python là gì

Chương trình trước đây của chúng tôi chỉ có chức năng. Không có gì lạ khi các chương trình có hàng trăm, thậm chí hàng nghìn chức năng. Trong python, quy ước chung là định nghĩa một hàm có tên là

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
00, hàm này được gọi khi chương trình bắt đầu. Hàm
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
00 này sau đó tiếp tục gọi hàm khác khi cần. Chương trình sau minh họa luồng điều khiển chương trình khi chúng ta có hai chức năng trong một chương trình

python101/Chương-13/hai_func_program_control. py

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
2

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
3

Thử ngay bây giờ

Trong các dòng 3-5 và 8-11, chúng ta đã định nghĩa hai hàm

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97 và
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
00. Hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97 hiện được cập nhật để chấp nhận một đối số có tên là
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
05, sau đó hàm này sẽ sử dụng trong dòng tiếp theo để chào người dùng

Hàm

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
00 không chấp nhận bất kỳ đối số nào và có ba câu lệnh bên trong phần thân

Câu lệnh ở dòng 13, gọi hàm

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
00. Điều khiển chương trình nhảy đến phần thân của hàm
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
00. Câu lệnh đầu tiên bên trong chuỗi ________ 600 in chuỗi ________ 610 ra bàn điều khiển. Câu lệnh ở dòng 10, gọi hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97 với đối số
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
12 sẽ được gán cho biến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
05 trong tiêu đề hàm. Tại thời điểm này, việc thực thi các câu lệnh sau lệnh gọi tới
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97 tạm dừng và điều khiển chương trình nhảy tới phần thân của hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97. Sau khi thực hiện phần thân của hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97, điều khiển chương trình nhảy trở lại nơi nó dừng lại và thực hiện câu lệnh
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
98 trong dòng 11. Vì không còn câu lệnh nào để thực thi trong hàm
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
00 và điều khiển chương trình sẽ nhảy trở lại nơi nó dừng lại để thực hiện các câu lệnh sau lệnh gọi hàm (dòng 13)

Biến cục bộ, biến toàn cục và phạm vi

Phạm vi biến đổi. Phạm vi của một biến đề cập đến một phần của chương trình mà nó có thể được truy cập

Biến chúng ta tạo bên trong hàm được gọi là biến cục bộ. Các biến cục bộ chỉ có thể được truy cập bên trong phần thân của hàm mà nó được định nghĩa. Nói cách khác, phạm vi của biến cục bộ bắt đầu từ thời điểm chúng được xác định và tiếp tục cho đến khi kết thúc hàm. Các biến cục bộ có thể được thu gom rác ngay sau khi chức năng kết thúc. Do đó, cố gắng truy cập một biến cục bộ bên ngoài phạm vi của nó sẽ dẫn đến lỗi

Ở đầu kia của quang phổ, chúng ta có các biến Toàn cầu. Biến toàn cục là các biến được định nghĩa bên ngoài bất kỳ hàm nào. Phạm vi của biến toàn cục bắt đầu từ thời điểm chúng được xác định và tiếp tục cho đến khi chương trình kết thúc

Bây giờ hãy xem xét các ví dụ sau

ví dụ 1

python101/Chương-13/biến_scope. py

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
4

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
5

Thử ngay bây giờ

đầu ra

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
6

Ở dòng 1, chúng ta đã tạo một biến toàn cục tên là

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
19. Sau đó, nó được truy cập ở dòng 12, bên trong hàm
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
20 và ở dòng 17, bên ngoài hàm. Chúng tôi cũng đã khai báo một biến cục bộ có tên là
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
21 bên trong hàm
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
20. Sau đó, nó được truy cập bên trong hàm ở dòng 9

Hãy xem điều gì xảy ra, nếu chúng ta cố gắng truy cập một biến cục bộ bên ngoài hàm. Để làm như vậy, bỏ ghi chú mã trong dòng 19 và chạy lại chương trình

đầu ra

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
7

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
23 cho chúng ta biết rằng không có biến nào tên là
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
21 tồn tại trong phạm vi này

Điều gì xảy ra nếu chúng ta có các biến cục bộ và biến toàn cục cùng tên?

ví dụ 2

python 101/Chương-13/cùng _global_ và_local. py

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
8

Thử ngay bây giờ

đầu ra

Ở đây chúng ta có một biến toàn cục

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
25 ở dòng 1 và một biến cục bộ cùng tên bên trong hàm ở dòng 4. Bất cứ khi nào có xung đột giữa biến cục bộ và biến toàn cục bên trong hàm, biến cục bộ sẽ được ưu tiên. Đây là lý do tại sao hàm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
98 (dòng 5) in ra giá trị của biến cục bộ
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
25. Tuy nhiên, bên ngoài hàm
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
25 đề cập đến biến toàn cục
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
25

Chúng ta cũng có thể sử dụng các tên biến giống nhau trong các hàm khác nhau mà không xung đột với nhau

python101/Chương-13/same_variable_names_in_different_functions. py

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
9

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
0

Thử ngay bây giờ

đầu ra

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
1

Vượt qua đối số

Đối số không là gì ngoài một phần dữ liệu được truyền cho hàm, khi nó được gọi. Như đã nói trước đây, một hàm có thể nhận bất kỳ số lượng đối số nào hoặc không có đối số nào. Ví dụ: hàm

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
98 chấp nhận một hoặc nhiều đối số nhưng hàm
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
31 không chấp nhận

Muốn một hàm nhận đối số thì khi gọi nó trước tiên ta phải định nghĩa một hoặc nhiều tham số. Tham số hoặc biến tham số chỉ đơn giản là một biến trong tiêu đề hàm nhận đối số khi hàm được gọi. Cũng giống như biến cục bộ, phạm vi của biến tham số chỉ giới hạn trong phần thân của hàm. Đây là một ví dụ về một hàm chấp nhận một đối số duy nhất

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
2

Khi hàm

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
32 được gọi với một đối số, giá trị của đối số được gán cho biến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
25 và câu lệnh
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
98 in ra giá trị của
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
25 sau khi thêm
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
9 vào nó

Chương trình sau minh họa cách gọi một hàm có đối số

python 101/Chương-13/đối số chức năng. py

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
3

Thử ngay bây giờ

đầu ra

Ở dòng 6, hàm

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
32 được gọi với đối số
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
9. Giá trị của đối số sau đó được gán cho biến tham số
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
25

ví dụ 2. Hàm tính giai thừa của một số

python101/Chương-13/giai thừa. py

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
4

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
5

Thử ngay bây giờ

đầu ra

Giai thừa của một số

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
40 được định nghĩa là phép nhân của tất cả các chữ số từ
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
41 đến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
40

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
6

trong đó

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
43 biểu thị giai thừa của
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
40. Dưới đây là một số ví dụ

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
7

Bây giờ, hãy xem vòng lặp for hoạt động như thế nào khi giá trị của

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
40 là
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
46

Trước khi vòng lặp for bắt đầu

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
47 không được xác định
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
48
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
49Sau lần lặp đầu tiên
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
50
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
51
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
52Sau lần lặp thứ 2
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
53
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
54
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
55Sau lần lặp thứ 3
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
56
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
57
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
58Sau lần lặp thứ 4
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
59
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
60
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
61

Sau khi vòng lặp thứ 4 kết thúc và hàm

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
98 in giai thừa của số

ví dụ 3. Truyền nhiều đối số cho hàm

python 101/Chương-13/nhiều đối số. py

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
8

Thử ngay bây giờ

đầu ra

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
9

Khi hàm

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
63 được gọi ở dòng 8, đối số
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
7 được truyền cho biến tham số
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
65 và
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
66 được truyền cho biến tham số
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
67

Thứ tự của các đối số được truyền trong khi gọi hàm phải khớp với thứ tự của các tham số trong tiêu đề hàm, nếu không, bạn có thể nhận được kết quả không mong muốn

Vượt qua giá trị

Nhớ lại rằng mọi thứ trong Python đều là đối tượng. Vì vậy, một biến cho một đối tượng, thực sự là một tham chiếu đến đối tượng. Nói cách khác, một biến lưu trữ địa chỉ mà một đối tượng được lưu trữ trong bộ nhớ. Nó không chứa chính đối tượng thực tế

Khi một hàm được gọi với các đối số, nó là địa chỉ của đối tượng được lưu trữ trong đối số được truyền cho biến tham số. Tuy nhiên, để đơn giản, chúng tôi nói rằng giá trị của đối số được truyền cho tham số trong khi gọi hàm. Cơ chế này được gọi là Pass By Value. Xem xét ví dụ sau

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
40

Thử ngay bây giờ

đầu ra

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
41

Lưu ý rằng các giá trị

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
68 giống nhau. Điều này có nghĩa là biến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
69 và
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
70 tham chiếu đến cùng một đối tượng. Nói cách khác, cả
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
69 và
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
70 đều trỏ đến cùng một vị trí bộ nhớ nơi đối tượng
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
73 (
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
9) được lưu trữ

Hàm void trong python là gì

Hành vi này có hai hậu quả quan trọng

  1. Nếu đối số được truyền cho hàm là bất biến, thì những thay đổi được thực hiện đối với biến tham số sẽ không ảnh hưởng đến đối số

  2. Tuy nhiên, nếu đối số được truyền cho hàm có thể thay đổi, thì những thay đổi được thực hiện đối với biến tham số sẽ ảnh hưởng đến đối số

Hãy kiểm tra hành vi này bằng cách lấy một số ví dụ

ví dụ 1. Truyền các đối tượng không thay đổi để hoạt động

python101/Chương-13/passing_immutable_objects. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
42

Thử ngay bây giờ

đầu ra

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
43

Trong dòng 7,

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
20 được gọi với một đối số
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
69 (trỏ đến một đối tượng không thể thay đổi là
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
73). Giá trị của
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
69 được truyền cho tham số
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
70. Bên trong giá trị hàm của
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
70 được tăng thêm bởi
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
9 (dòng 3). Khi chức năng kết thúc, câu lệnh in ở dòng 8 được thực thi và chuỗi
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
82 được in ra bàn điều khiển. Điều này chứng minh rằng bất kể chức năng nào thực hiện với
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
70, giá trị của
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
69 vẫn giữ nguyên

Nếu bạn nghĩ về nó, hành vi này có ý nghĩa hoàn hảo. Nhớ lại rằng không thể thay đổi nội dung của các đối tượng bất biến. Vì vậy, bất cứ khi nào chúng ta gán một giá trị số nguyên mới cho một biến, về cơ bản, chúng ta đang tạo một đối tượng

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
73 hoàn toàn mới và đồng thời gán tham chiếu của đối tượng mới cho biến đó. Đây chính xác là những gì đang xảy ra bên trong hàm
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
20

ví dụ 2. Truyền các đối tượng có thể thay đổi để hoạt động

python101/Chương-13/passing_mutable_objects. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
44

Thử ngay bây giờ

đầu ra

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
45

Mã gần như giống nhau, nhưng ở đây chúng tôi đang chuyển một danh sách cho hàm thay vì một số nguyên. Vì danh sách là một đối tượng có thể thay đổi, do đó, những thay đổi được thực hiện bởi hàm

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
20 ở dòng 2, sẽ ảnh hưởng đến đối tượng được trỏ bởi biến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
69

Đối số vị trí và từ khóa

Các đối số cho một hàm có thể được truyền theo hai cách

  1. đối số vị trí
  2. Đối số từ khóa

Trong phương thức đầu tiên, chúng ta truyền các đối số cho một hàm theo thứ tự như các tham số tương ứng của chúng trong tiêu đề hàm. Chúng tôi đã sử dụng phương thức này để truyền đối số cho các hàm của mình. Ví dụ

python 101/Chương-13/bộ ba pythagore. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
46

Thử ngay bây giờ

Câu lệnh

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
89 chuyển
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
90 đến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
91,
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
46 đến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
93 và
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
94 đến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
95, và in ra
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
96. Tuy nhiên, câu lệnh
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
97, chuyển
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
90 sang cơ sở,
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
94 đến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
93 và
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
46 đến
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
95 và in ra
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
03, sai. Vì vậy, khi sử dụng các đối số vị trí, hãy luôn đảm bảo rằng thứ tự của các đối số trong lệnh gọi hàm và thứ tự của các tham số trong tiêu đề hàm khớp với nhau. Nếu không, bạn có thể nhận được kết quả mong đợi

Một cách khác để truyền đối số cho hàm là sử dụng Đối số từ khóa. Trong phương thức này, chúng tôi chuyển từng đối số theo mẫu sau

trong đó

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
04 là tên của biến tham số trong tiêu đề hàm và
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
05 là giá trị bạn muốn chuyển đến biến tham số. Bởi vì, chúng tôi đang liên kết tên tham số với các giá trị, thứ tự của các đối số trong lệnh gọi hàm không quan trọng

Dưới đây là một số cách khác nhau để chúng ta có thể gọi hàm

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
06 bằng các đối số từ khóa

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
47

Thử ngay bây giờ

Các đối số từ khóa hơi linh hoạt vì chúng ta không phải nhớ thứ tự của các tham số trong tiêu đề hàm

Trộn các đối số Vị trí và Từ khóa

Chúng ta cũng có thể kết hợp các đối số vị trí và đối số từ khóa trong một lệnh gọi hàm. Khi làm như vậy, yêu cầu duy nhất là các đối số vị trí phải xuất hiện trước bất kỳ đối số từ khóa nào. Điều đó có nghĩa là hai lệnh gọi sau hoàn toàn hợp lệ vì trong cả hai lệnh gọi, các đối số vị trí xuất hiện trước các đối số từ khóa

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
48

Thử ngay bây giờ

Tuy nhiên, chúng ta không thể làm điều này

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
49

Thử ngay bây giờ

Vấn đề ở đây là đối số vị trí (

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
94) xuất hiện sau đối số từ khóa (
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
08). Cố gắng gọi
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
06 theo cách này dẫn đến lỗi sau

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
90

Giá trị trả về

Cho đến thời điểm này, chúng tôi đã tạo các hàm không trả về bất kỳ giá trị nào, các hàm như vậy còn được gọi là hàm void

Để trả về giá trị từ một hàm, chúng ta sử dụng câu lệnh

Hello !
Today is 2017-06-20 13:20:45.281651
9. Cú pháp của nó là

Dấu ngoặc vuông (

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
11) xung quanh
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
12 chỉ ra rằng nó là tùy chọn. Nếu bỏ qua một giá trị đặc biệt
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92 được trả về

Khi gặp câu lệnh

Hello !
Today is 2017-06-20 13:20:45.281651
9 bên trong một hàm, hàm đó sẽ kết thúc và giá trị của
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
12 theo sau từ khóa
Hello !
Today is 2017-06-20 13:20:45.281651
9 được gửi trở lại phần chương trình đã gọi hàm đó. Câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9 có thể xuất hiện ở bất kỳ đâu trong phần thân của hàm. Các hàm trả về giá trị được gọi là hàm trả về giá trị

Đây là một ví dụ

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
91

Một hàm có thể được gọi theo hai cách, tùy thuộc vào việc chúng có trả về giá trị hay không

Nếu một hàm trả về một giá trị thì lời gọi hàm đó có thể được sử dụng làm toán hạng trong bất kỳ biểu thức nào trong chương trình. Ví dụ

Thử ngay bây giờ

Trong biểu thức trên, trước tiên chúng ta gọi hàm

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
18, sau đó gán giá trị trả về của hàm cho biến
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
19. Nếu chúng tôi không sử dụng câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9 trong hàm
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
18, chúng tôi sẽ không thể viết mã này. Dưới đây là một số cách khác mà chúng ta có thể gọi hàm
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
18

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
92

Thử ngay bây giờ

Chúng tôi không bị ràng buộc sử dụng giá trị trả về từ hàm. Nếu chúng ta không muốn sử dụng giá trị trả về, chỉ cần gọi hàm dưới dạng câu lệnh. Ví dụ

Trong trường hợp này, giá trị trả về của

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
18 đơn giản là bị loại bỏ

Hãy viết lại chương trình giai thừa của chúng ta để trả về giai thừa thay vì in nó

python 101/Chương-13/trả về giai thừa. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
93

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
94

Thử ngay bây giờ

đầu ra

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
95

Trong ví dụ trên, chúng tôi đang trả về một giá trị số nguyên từ hàm, nhưng chúng tôi có thể sử dụng bất kỳ loại dữ liệu nào

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
73,
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
25,
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
26,
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
27; . Chương trình sau minh họa cách trả về loại
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
27 từ hàm

python101/Chương-13/is_even_or_odd. py

sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
2

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
97

Thử ngay bây giờ

Đầu ra lần chạy đầu tiên

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
98

Lần chạy thứ 2

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
99

Nếu biểu thức theo sau là từ khóa

Hello !
Today is 2017-06-20 13:20:45.281651
9 bị bỏ qua thì giá trị đặc biệt
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92 được trả về

python 101/Chương-13/không trả về. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
10

Thử ngay bây giờ

đầu ra

Chúng ta cũng có thể sử dụng câu lệnh

Hello !
Today is 2017-06-20 13:20:45.281651
9 nhiều lần bên trong hàm nhưng ngay khi gặp câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9 đầu tiên, hàm sẽ kết thúc và tất cả các câu lệnh theo sau nó không được thực thi. Ví dụ

python 101/Chương-13/máy tính lớp. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
11

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
12

Thử ngay bây giờ

Đầu ra chạy đầu tiên

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
13

Đầu ra lần chạy thứ hai

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
14

Hàm Void trả về Không có

Trong Python, các hàm void hơi khác so với các hàm trong C, C++ hoặc Java. Nếu thân hàm không có bất kỳ câu lệnh

Hello !
Today is 2017-06-20 13:20:45.281651
9 nào thì một giá trị đặc biệt
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92 được trả về khi hàm kết thúc. Trong Python,
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92 là một chữ của loại
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
94 được sử dụng để biểu thị sự vắng mặt của một giá trị. Nó thường được gán cho một biến để chỉ ra rằng biến đó không trỏ đến bất kỳ đối tượng nào

Chương trình sau đây chứng minh rằng các hàm void trả về

sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92

python 101/Chương-13/hàm void. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
15

Thử ngay bây giờ

đầu ra

Đảm bảo đủ. Hàm

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
18 thực sự trả về
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92. Vì vậy, chúng ta có thể nói rằng trong Python, tất cả các hàm đều trả về giá trị cho dù bạn có sử dụng câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9 hay không. Tuy nhiên, điều này không có nghĩa là bạn có thể sử dụng hàm void giống như hàm trả về giá trị. Xem xét ví dụ sau

python101/Chương-13/using_void_function_as_non_void_function. py

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
16

Thử ngay bây giờ

đầu ra

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
17

Trong dòng 5, chúng tôi đang cố gắng thêm giá trị được trả về từ

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
18 i. e
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
92 vào số nguyên
import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
9, nhưng thao tác không thành công vì thao tác
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
44 không thể thêm
sum = 0
start = 10
end = 30
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
94 vào
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
73

Đó là lý do tại sao một hàm void thường được gọi dưới dạng một câu lệnh như thế này

Trả về nhiều giá trị

Để trả về nhiều giá trị từ một hàm, chỉ cần chỉ định từng giá trị được phân tách bằng dấu phẩy (

Hello !
Today is 2017-06-20 13:20:45.281651
7) sau từ khóa
Hello !
Today is 2017-06-20 13:20:45.281651
9

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
18

Khi gọi một hàm trả về nhiều giá trị, số lượng biến ở vế trái của toán tử

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
49 phải bằng số lượng giá trị được trả về bởi câu lệnh
Hello !
Today is 2017-06-20 13:20:45.281651
9. Vì vậy nếu một hàm trả về 2 giá trị thì bạn phải sử dụng 2 biến ở vế trái của toán tử
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
49. Đây là một ví dụ

python 101/Chương-13/trả về nhiều giá trị. py

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
4

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
0

Thử ngay bây giờ

đầu ra

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
1

Lưu ý cách các giá trị được gán trong khi gọi hàm. tuyên bố

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
2

gán số nhỏ hơn cho biến

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
52 và số lớn hơn cho biến
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
53

Đối số mặc định

Trong Python, chúng ta có thể định nghĩa một hàm với các giá trị tham số mặc định, giá trị mặc định này sẽ được sử dụng khi một hàm được gọi mà không có bất kỳ đối số nào. Để chỉ định giá trị mặc định cho tham số, chỉ cần chỉ định giá trị bằng toán tử gán theo sau là tên tham số. Xem xét ví dụ sau

python 101/Chương-13/thiết lập giá trị _default_. py

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
4

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
4

Thử ngay bây giờ

đầu ra

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
93

import datetime

def greet():
    print("Hello !")
    print("Today is", datetime.datetime.now())

greet()
6

Trong dòng 7, chúng tôi đang gọi hàm

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
54 mà không có bất kỳ đối số nào, vì vậy các giá trị mặc định
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
55 và
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
90 sẽ được gán cho các tham số
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
57 và
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
58 tương ứng

Trong dòng 8, chúng tôi đang gọi

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
54 bằng cách chuyển
sum = 0
start = 100
end = 200
for i in range(start, end+1):
    sum += i    

print("Sum is", sum)
46 đến
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
57 và
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
62 đến
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
58. Vì các giá trị cho cả hai tham số được cung cấp trong khi gọi hàm, giá trị mặc định sẽ không được sử dụng trong trường hợp này. Điều này cũng đúng với cuộc gọi
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
54 ở dòng 9, ngoại trừ ở đây chúng tôi đang sử dụng đối số từ khóa

Trong dòng 10, chúng tôi chỉ cung cấp giá trị cho tham số

def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
57 bằng cách sử dụng đối số từ khóa, do đó, giá trị mặc định cho tham số
def function_name(arg1, arg2, arg3 .. argN):
    # function body
    
    
    ...
    
    
58 sẽ được sử dụng

Hàm void là gì?

Các hàm trống được tạo và sử dụng giống như các hàm trả về giá trị ngoại trừ việc chúng không trả về giá trị sau khi hàm thực thi . Thay cho kiểu dữ liệu, hàm void sử dụng từ khóa "void. " Hàm void thực hiện một tác vụ và sau đó điều khiển trả về trình gọi--nhưng, nó không trả về giá trị.

ví dụ về hàm void là gì?

Hơn nữa, nó thường được gán cho một biến để biểu thị rằng biến đó không trỏ đến bất kỳ đối tượng nào . Thông qua chương trình được đưa ra dưới đây, bạn có thể thấy nó cho thấy các hàm void trả về Không có như thế nào. sao chép mã. Thêm 1 lần xác định (num1, num2). 2 print("Tổng là", num1 + num2) 3 4 return_val = add(300, 500) 5 print(return_val)

Hàm void và non void trong Python là gì?

Hàm không trả về bất kỳ giá trị nào được gọi là hàm void và hàm trả về một số giá trị được gọi là hàm non void . Hàm void có thể hoặc không thể sử dụng từ khóa return và câu lệnh in chỉ được viết bên trong định nghĩa hàm. #

Chức năng hiệu quả và vô hiệu trong Python là gì?

4. 10 Hàm hiệu quả và hàm void . Các hàm khác, như print_twice, thực hiện một hành động nhưng không trả về giá trị. Chúng được gọi là hàm void. Some of the functions we are using, such as the math functions, yield results; for lack of a better name, I call them fruitful functions. Other functions, like print_twice, perform an action but don't return a value. They are called void functions.