Hướng dẫn can the name of a function be a variable python? - tên của một hàm có thể là một biến python không?

Bí quyết là sử dụng Globals []:

globals[]['use_variable_as_function_name'][]

sẽ tương đương với

use_variable_as_function_name[]

Tìm thấy tại: George Sakkis //bytes.com/topic/python/answers/792283-calling-varable-function-name-name

Sau đây là một ứng dụng hữu ích của câu hỏi trên tôi cần ngay bây giờ [đó là lý do tại sao tôi đến đây]: Áp dụng các chức năng đặc biệt cho các URL tùy thuộc vào bản chất của chúng:

l = ['condition1', 'condition2', 'condition3']

tôi từng viết

if 'condition1.' in href:
    return do_something_condition1[]
if 'condition2.' in href:
    return do_something_condition2[]
if 'condition3.' in href:
    return do_something_condition3[]

Và như vậy - Danh sách của tôi có 19 thành viên bây giờ và tiếp tục phát triển.

Trong khi điều tra chủ đề và phát triển, mã chức năng đã hoàn toàn là một phần tự nhiên của chức năng chính khiến nó sớm trở nên kinh khủng khi đọc, vì vậy việc chuyển mã làm việc thành các chức năng là một sự cứu trợ tuyệt vời.

Mã vụng về này có thể được thay thế bằng:

for e in l:              # this is my condition list
    if e + '.' in href:  # this is the mechanism to choose the right function
        return globals[]['do_something_' + e][]

Bằng cách này, mã chính vẫn đơn giản và dễ đọc cho dù danh sách các điều kiện có thể phát triển trong bao lâu.

Tất nhiên, các chức năng tương ứng với các nhãn điều kiện phải được khai báo theo quy ước, tùy thuộc vào bản chất của loại URL trong câu hỏi:

def do_something_condition1[href]:
    # special code 1
    print['========1=======' + href]

def do_something_condition2[href]:
    # special code 2
    print['========2=======' + href]

def do_something_condition3[href]:
    # special code 3
    print['========3=======' + href]

Test:

>>> href = '//google.com'
>>> for e in l:
...     globals[]['do_something_' + e][href]
...
========1=======//google.com
========2=======//google.com
========3=======//google.com

Hoặc, để mô hình hóa nó gần hơn với kịch bản trên:

success = '________processed successfully___________ ' 

def do_something_google[href]:
    # special code 1
    print['========we do google-specific stuff=======']
    return success + href 

def do_something_bing[href]:
    # special code 2
    print['========we do bing-specific stuff=======']
    return success + href 

def do_something_wikipedia[href]:
    # special code 3
    print['========we do wikipedia-specific stuff=======']
    return success + href 

Test:

l = ['google', 'bing', 'wikipedia']

href = '//google.com'

def test[href]:
    for e in l:
        if e + '.' in href:
            return globals[]['do_something_' + e][href]

>>> test[href]
========we do google-specific stuff=======
'________processed successfully___________ //google.com'

Result:

Việc xây dựng thêm về vấn đề bây giờ chỉ là số lượng để tăng cường danh sách điều kiện từng cái một và viết các chức năng tương ứng tùy thuộc vào đối số. Cơ chế trên sẽ chọn đúng sau đó.

Trong Python, các hàm là các đối tượng "hạng nhất '': chúng có thể có các tên biến được gán cho chúng, chúng có thể được truyền dưới dạng đối số cho các chức năng khác và thậm chí có thể được trả lại từ các chức năng khác. , nhưng tên đó có thể được chỉ định lại để giới thiệu một đối tượng khác nếu muốn [đừng làm điều này trừ khi bạn muốn nói!]

Như ví dụ sau đây chứng minh, có thể nhiều hơn một tên biến được gán cho cùng một đối tượng hàm.

>>> def cosec[x]:
...    """Return the cosecant of x, cosec[x] = 1/sin[x]."""
...    return 1./math.sin[x]
...
>>> cosec

>>> cosec[math.pi/4]
1.4142135623730951
>>> csc = cosec
>>> csc

>>> csc[math.pi/4]
1.4142135623730951

Bài tập

use_variable_as_function_name[]
0 liên kết trình định danh [tên biến]
use_variable_as_function_name[]
1 với cùng một đối tượng hàm với định danh
use_variable_as_function_name[]
2: Hàm này sau đó có thể được gọi với
use_variable_as_function_name[]
3 cũng như với
use_variable_as_function_name[]
4.

Chúng ta có thể sử dụng tên hàm làm tên biến không?

Do đó, khi hàm được thực thi, nó sẽ gọi tập lệnh và mã bên trong tập lệnh sẽ được thực thi theo từng dòng.Tuy nhiên, việc sử dụng tên hàm như tên biến không được khuyến khích mạnh mẽ.the use of function names as variable names is strongly discouraged.

Có thể biến tên biến và chức năng giống nhau?

Bạn không thể bởi vì nếu bạn có ví dụ [], 'Ví dụ' là một con trỏ đến hàm đó.Nói rằng "'ví dụ' là một con trỏ cho chức năng đó."không chính xác.Trong trường hợp này 'ví dụ' sẽ cung cấp cho bạn địa chỉ chức năng, nhưng không có biến con trỏ. because if you have example[], 'example' is a pointer to that function. Saying that "'example' is a pointer to that function." is incorrect. In this case 'example' will give you the function address, but there is no pointer variable.

Điều gì không thể là một tên biến trong Python?

Một tên biến không thể bắt đầu với một số.Một tên biến chỉ có thể chứa các ký tự âm alpha và các tên biến [A-Z, 0-9 và _] là nhạy cảm trường hợp [tuổi, tuổi và tuổi là ba biến khác nhau]cannot start with a number. A variable name can only contain alpha-numeric characters and underscores [A-z, 0-9, and _ ] Variable names are case-sensitive [age, Age and AGE are three different variables]

Một phương thức và biến có thể có cùng tên trong Python?

Điểm mấu chốt: Bạn không thể có hai thứ đồng thời cùng tên, có thể là hàm, số nguyên hoặc bất kỳ đối tượng nào khác trong Python.Chỉ cần sử dụng một tên khác.you can't have two things simultaneously with the same name, be it a function, an integer, or any other object in Python. Just use a different name.

Bài Viết Liên Quan

Chủ Đề