Cách gọi nhiều biến từ hàm khác python

Có thể khai báo các hàm nhận số lượng đối số thay đổi, sử dụng cú pháp sau

def foo[first, second, third, *therest]:
    print["First: %s" % first]
    print["Second: %s" % second]
    print["Third: %s" % third]
    print["And all the rest.. %s" % list[therest]]

Biến "therest" là một danh sách các biến, nó nhận tất cả các đối số được cấp cho hàm "foo" sau 3 đối số đầu tiên. Vì vậy, gọi

def foo[first, second, third, *therest]:
    print["First: %s" %[first]]
    print["Second: %s" %[second]]
    print["Third: %s" %[third]]
    print["And all the rest.. %s" %[list[therest]]]

foo[1, 2, 3, 4, 5]
8 sẽ in ra

def foo[first, second, third, *therest]:
    print["First: %s" %[first]]
    print["Second: %s" %[second]]
    print["Third: %s" %[third]]
    print["And all the rest.. %s" %[list[therest]]]

foo[1, 2, 3, 4, 5]

Cũng có thể gửi các đối số của hàm theo từ khóa, do đó thứ tự của đối số không quan trọng, sử dụng cú pháp sau. Đoạn mã sau mang lại đầu ra sau.

def foo[first, second, third, *therest]:
    print["First: %s" %[first]]
    print["Second: %s" %[second]]
    print["Third: %s" %[third]]
    print["And all the rest.. %s" %[list[therest]]]

foo[1, 2, 3, 4, 5]
9

def bar[first, second, third, **options]:
    if options.get["action"] == "sum":
        print["The sum is: %d" %[first + second + third]]

    if options.get["number"] == "first":
        return first

result = bar[1, 2, 3, action = "sum", number = "first"]
print["Result: %d" %[result]]

Hàm "bar" nhận 3 đối số. Nếu nhận được một đối số "hành động" bổ sung và nó hướng dẫn tính tổng các số, thì tổng sẽ được in ra. Ngoài ra, hàm cũng biết nó phải trả về đối số đầu tiên, nếu giá trị của tham số "số", được truyền vào hàm, bằng "đầu tiên"

Bài tập

Điền vào các hàm

def bar[first, second, third, **options]:
    if options.get["action"] == "sum":
        print["The sum is: %d" %[first + second + third]]

    if options.get["number"] == "first":
        return first

result = bar[1, 2, 3, action = "sum", number = "first"]
print["Result: %d" %[result]]
0 và
def bar[first, second, third, **options]:
    if options.get["action"] == "sum":
        print["The sum is: %d" %[first + second + third]]

    if options.get["number"] == "first":
        return first

result = bar[1, 2, 3, action = "sum", number = "first"]
print["Result: %d" %[result]]
1 để chúng có thể nhận được số lượng đối số thay đổi [3 hoặc nhiều hơn] Hàm
def bar[first, second, third, **options]:
    if options.get["action"] == "sum":
        print["The sum is: %d" %[first + second + third]]

    if options.get["number"] == "first":
        return first

result = bar[1, 2, 3, action = "sum", number = "first"]
print["Result: %d" %[result]]
0 phải trả về số lượng đối số bổ sung nhận được.
def bar[first, second, third, **options]:
    if options.get["action"] == "sum":
        print["The sum is: %d" %[first + second + third]]

    if options.get["number"] == "first":
        return first

result = bar[1, 2, 3, action = "sum", number = "first"]
print["Result: %d" %[result]]
1 phải trả về
def foo[first, second, third, *therest]:
    print["First: %s" % first]
    print["Second: %s" % second]
    print["Third: %s" % third]
    print["And all the rest.. %s" % list[therest]]
0 nếu đối số có từ khóa
def foo[first, second, third, *therest]:
    print["First: %s" % first]
    print["Second: %s" % second]
    print["Third: %s" % third]
    print["And all the rest.. %s" % list[therest]]
1 có giá trị 7 và ngược lại là
def foo[first, second, third, *therest]:
    print["First: %s" % first]
    print["Second: %s" % second]
    print["Third: %s" % third]
    print["And all the rest.. %s" % list[therest]]
2

Chẳng hạn, hãy tạo một hàm lấy hai số làm đối số. Hàm này trả về tổng, hiệu, nhân và chia giữa hai số này

Đây là cách nó trông trong mã

def operate[a, b]:
    sum = a + b
    diff = a - b
    mul = a * b
    div = a / b
    return sum, diff, mul, div

Bây giờ bạn có thể gọi hàm này cho hai số và gán giá trị trả về cho các biến

n1 = 5
n2 = 10

sum, diff, mul, div = operate[n1, n2]

print[
    f"The sum is {sum}\n"
    f"The difference is {diff}\n"
    f"The multiplication gives {mul}\n"
    f"The division gives {div}\n"
]

Điều này dẫn đến kết quả sau đây được in trong bảng điều khiển

________số 8

Trả về nhiều giá trị hoạt động như thế nào trong Python

Trong phần trước, bạn đã học cách trả về nhiều giá trị bằng cách phân tách các giá trị bằng dấu phẩy

Nhưng tại sao và nó hoạt động như thế nào?

Bộ dữ liệu trong Python

Mã ví dụ hoạt động vì nó trả về một tuple

Trong trường hợp bạn không biết tuple là gì, hãy xem bài viết chuyên sâu này. Tóm lại, một bộ là một nhóm gồm 0 hoặc nhiều phần tử

Chẳng hạn, đây là một ví dụ về bộ ba giá trị đại diện cho một điểm 3D

coords = [1, 1, 3]

Lưu ý rằng các bộ dữ liệu Python không phải lúc nào cũng cần dấu ngoặc đơn

Ví dụ: bạn có thể viết điểm 3D ở trên dưới dạng

def foo[first, second, third, *therest]:
    print["First: %s" %[first]]
    print["Second: %s" %[second]]
    print["Third: %s" %[third]]
    print["And all the rest.. %s" %[list[therest]]]

foo[1, 2, 3, 4, 5]
0

Điều này tạo ra cùng một bộ ba giá trị đại diện cho một điểm 3D

Cách truy cập giá trị Tuple trong Python

Để truy cập và lưu trữ một giá trị từ một bộ dữ liệu, bạn có thể truy cập nó giống như cách bạn truy cập một giá trị từ danh sách. Nói cách khác, sử dụng toán tử [] với chỉ mục

Ví dụ: hãy lưu trữ các điểm 3D vào các biến x, y và z

def foo[first, second, third, *therest]:
    print["First: %s" %[first]]
    print["Second: %s" %[second]]
    print["Third: %s" %[third]]
    print["And all the rest.. %s" %[list[therest]]]

foo[1, 2, 3, 4, 5]
1

Điều này dẫn đến đầu ra sau trong bảng điều khiển

def foo[first, second, third, *therest]:
    print["First: %s" %[first]]
    print["Second: %s" %[second]]
    print["Third: %s" %[third]]
    print["And all the rest.. %s" %[list[therest]]]

foo[1, 2, 3, 4, 5]
2

Điều này hoạt động tốt, nhưng có một cách dễ dàng hơn cho mục đích cụ thể này

Phá hủy Tuple trong Python

Bạn có thể sử dụng phá hủy bộ dữ liệu để truy cập các giá trị bộ dữ liệu và lưu trữ chúng vào các biến

Phá hủy bộ có nghĩa là bạn khai báo một loạt các biến được phân tách bằng dấu phẩy trong một dòng và gán từng giá trị bộ cho biến tương ứng. Điều này giúp bạn tiết kiệm các dòng mã trong khi nó cũng làm cho ý định rất rõ ràng

Hãy để tôi chỉ ra những gì tôi có ý nghĩa

Chẳng hạn, trong ví dụ trước, bạn đã lưu tọa độ 3D x, y và z trên các dòng riêng biệt bằng toán tử []. Thay vì làm theo cách này, bạn có thể sử dụng tuple destructuring như một tốc ký

def foo[first, second, third, *therest]:
    print["First: %s" %[first]]
    print["Second: %s" %[second]]
    print["Third: %s" %[third]]
    print["And all the rest.. %s" %[list[therest]]]

foo[1, 2, 3, 4, 5]
3

Do đó, mỗi tọa độ trong điểm 3D được gán cho một biến riêng

def foo[first, second, third, *therest]:
    print["First: %s" %[first]]
    print["Second: %s" %[second]]
    print["Third: %s" %[third]]
    print["And all the rest.. %s" %[list[therest]]]

foo[1, 2, 3, 4, 5]
2

Như bạn có thể thấy, giá trị đầu tiên của bộ dữ liệu được gắn vào biến x, giá trị thứ hai đến y và giá trị thứ ba đến z

Bây giờ bạn đã hiểu cách các bộ dữ liệu được tạo và cách các giá trị được đọc từ chúng

Cách trả về nhiều giá trị từ một hàm

Để trả về nhiều giá trị từ một hàm, hãy trả về các giá trị dưới dạng một bộ. Để sau đó truy cập/lưu trữ các giá trị này vào các biến, hãy sử dụng tuple destructuring

Nếu bây giờ bạn nhìn vào ví dụ bạn đã thấy trong phần giới thiệu

def operate[a, b]:
    sum = a + b
    diff = a - b
    mul = a * b
    div = a / b
    return sum, diff, mul, div

Bạn nhận ra hàm này trả về một bộ gồm bốn giá trị. Để truy cập bốn giá trị này, bạn sử dụng cấu trúc lại tuple. Đây là giao diện của nó trong mã

n1 = 5
n2 = 10

sum, diff, mul, div = operate[n1, n2]

print[
    f"The sum is {sum}\n"
    f"The difference is {diff}\n"
    f"The multiplication gives {mul}\n"
    f"The division gives {div}\n"
]

đầu ra

________số 8

Bây giờ các giá trị bộ trả về được lưu trữ trong các biến sum, diff, mul và div

Việc hủy cấu trúc một bộ trả về theo cách này rất tiện lợi. Bạn không cần sử dụng toán tử truy cập dấu ngoặc vuông để chọn thủ công các giá trị từ bộ dữ liệu. Thay vào đó, cú pháp phá hủy sẽ giải quyết vấn đề đó

Phần kết luận

Để trả về nhiều giá trị từ một hàm trong Python, hãy trả về một bộ giá trị

Như bạn có thể biết, một bộ là một nhóm các giá trị được phân tách bằng dấu phẩy. Bạn có thể tạo một bộ có hoặc không có dấu ngoặc đơn. Để truy cập/lưu trữ nhiều giá trị được trả về bởi một hàm, hãy sử dụng cấu trúc tuple

Bạn có thể gọi các biến từ các hàm khác trong Python không?

Trong Python và hầu hết các ngôn ngữ lập trình, các biến được khai báo bên ngoài hàm được gọi là biến toàn cục. Bạn có thể truy cập các biến như vậy bên trong và bên ngoài hàm, vì chúng có phạm vi toàn cục .

Làm cách nào để gọi một biến từ hàm này sang hàm khác trong Python?

Biến có thể được gán cho đối tượng hàm bên trong thân hàm . Vì vậy, biến chỉ tồn tại sau khi hàm được gọi. Khi hàm đã được gọi, biến sẽ được liên kết với đối tượng hàm.

Tôi có thể trả về nhiều giá trị từ một hàm trong Python không?

Bạn có thể trả về nhiều giá trị từ một hàm trong Python . Để làm như vậy, hãy trả về cấu trúc dữ liệu chứa nhiều giá trị, chẳng hạn như danh sách chứa số dặm chạy mỗi tuần. Cấu trúc dữ liệu trong Python được sử dụng để lưu trữ các bộ sưu tập dữ liệu, có thể được trả về từ các hàm.

Làm cách nào để truy cập biến từ một hàm khác trong cùng một lớp trong Python?

Các biến được định nghĩa bên trong lớp nhưng bên ngoài phương thức có thể được truy cập trong lớp [bao gồm tất cả các phương thức] bằng cách sử dụng thể hiện của một lớp. Ví dụ – bản thân. var_name. Nếu bạn muốn sử dụng biến đó ngay cả bên ngoài lớp, bạn phải khai báo biến đó là biến toàn cục.

Chủ Đề