Hướng dẫn turn variable name into string python - biến tên biến thành chuỗi python

TL; DR: Không thể. Xem 'Kết luận' ở cuối.

Có một kịch bản sử dụng mà bạn có thể cần điều này. Tôi không ngụ ý có những cách tốt hơn hoặc đạt được chức năng tương tự.

Điều này sẽ hữu ích để 'kết xuất' một danh sách từ điển tùy ý trong trường hợp lỗi, trong các chế độ gỡ lỗi và các tình huống tương tự khác.

Điều cần thiết, là mặt trái của chức năng

random_function[argument_data]
4:

get_indentifier_name_missing_function[]

sẽ lấy một tên định danh ['biến', 'từ điển', v.v.] làm đối số và trả về một chuỗi chứa tên định danh.

Hãy xem xét tình trạng hiện tại sau đây:

random_function[argument_data]

Một người đang truyền một tên định danh ['hàm', 'biến', 'từ điển', v.v.]

random_function[argument_data]
5 sang
random_function[argument_data]
6 [một tên định danh khác], người ta thực sự chuyển một định danh [ví dụ:
random_function[argument_data]
7] cho một định danh khác [ví dụ:
random_function[argument_data]
8] :

[]

Theo hiểu biết của tôi, chỉ có địa chỉ bộ nhớ được chuyển đến hàm:

[]

Do đó, người ta sẽ cần chuyển một chuỗi làm đối số cho

random_function[argument_data]
6 để chức năng đó có tên định danh của đối số:

random_function['argument_data']

Bên trong Random_Function []

def random_function[first_argument]:

, người ta sẽ sử dụng chuỗi đã được cung cấp

[]
0 để:

  1. Phục vụ như một 'Tên định danh' [để hiển thị, nhật ký, chia chuỗi/concat, bất cứ điều gì]

  2. Thức ăn chức năng

    random_function[argument_data]
    
    4 để có được tham chiếu đến định danh thực tế và do đó, tham chiếu đến dữ liệu thực:

    print["Currently working on", first_argument]
    some_internal_var = eval[first_argument]
    print["here comes the data: " + str[some_internal_var]]
    

Thật không may, điều này không hoạt động trong mọi trường hợp. Nó chỉ hoạt động nếu

random_function[argument_data]
6 có thể giải quyết chuỗi
[]
0 cho một định danh thực tế. I E. Nếu
random_function[argument_data]
5 Tên định danh có sẵn trong không gian tên của ____ 16.

Điều này không phải lúc nào cũng như vậy:

# main1.py
import some_module1

argument_data = 'my data'

some_module1.random_function['argument_data']


# some_module1.py
def random_function[first_argument]:
    print["Currently working on", first_argument]
    some_internal_var = eval[first_argument]
    print["here comes the data: " + str[some_internal_var]]
######

Kết quả dự kiến ​​sẽ là:

Currently working on: argument_data
here comes the data: my data

Bởi vì tên định danh

random_function[argument_data]
5 không có sẵn trong không gian tên của ____ 16, điều này sẽ mang lại thay thế: thay vào đó:

Currently working on argument_data
Traceback [most recent call last]:
  File "~/main1.py", line 6, in 
    some_module1.random_function['argument_data']
  File "~/some_module1.py", line 4, in random_function
    some_internal_var = eval[first_argument]
  File "", line 1, in 
NameError: name 'argument_data' is not defined

Bây giờ, hãy xem xét việc sử dụng hạ huyết áp của

[]
8 sẽ hoạt động như mô tả ở trên.

Đây là mã Python 3.0 giả:.

random_function[argument_data]
0

Kết quả dự kiến ​​sẽ là:

random_function[argument_data]
1

Bởi vì tên định danh

random_function[argument_data]
5 không có sẵn trong không gian tên của ____ 16, điều này sẽ mang lại thay thế: thay vào đó:

Bây giờ, hãy xem xét việc sử dụng hạ huyết áp của

[]
8 sẽ hoạt động như mô tả ở trên.

random_function[argument_data]
2

Đây là mã Python 3.0 giả:.

Thật không may,

[]
8 sẽ không thấy tên định danh 'gốc' [________ 30, ________ 31, ________ 32]. Nó sẽ chỉ thấy tên định danh
[]
3.

random_function[argument_data]
3

Do đó, kết quả thực sự sẽ là:

  • Vì vậy, mặt trái của hàm
    random_function[argument_data]
    
    4 sẽ không hữu ích trong trường hợp này.
  • Hiện tại, người ta sẽ cần phải làm điều này:
  • Tóm lại là:
  • Python chỉ chuyển địa chỉ bộ nhớ dưới dạng các đối số cho các chức năng.
    1. Các chuỗi đại diện cho tên của một định danh, chỉ có thể được tham chiếu lại cho định danh thực tế bởi hàm
      random_function[argument_data]
      
      4 nếu định danh tên có sẵn trong không gian tên hiện tại.
    2. Một mặt trái giả định của hàm
      random_function[argument_data]
      
      4, sẽ không hữu ích trong các trường hợp tên định danh không được 'nhìn thấy' trực tiếp bởi mã gọi. Ví dụ. bên trong bất kỳ chức năng được gọi là.

Hiện tại một người cần phải chuyển đến một chức năng:

Một tên biến có thể là một chuỗi?

Một biến chuỗi là một biến chứa một chuỗi ký tự.Đó là một phần của bộ nhớ đã được lập trình viên đặt tên.Tên trông giống như những tên biến mà bạn đã thấy cho đến nay, ngoại trừ tên của một biến chuỗi kết thúc bằng một dấu hiệu đô la, $.$ Là một phần của tên.. It is a section of memory that has been given a name by the programmer. The name looks like those variable names you have seen so far, except that the name of a string variable ends with a dollar sign, $. The $ is part of the name.

Python __ tên __ là gì?

Trong Python, tên đặc biệt __main__ được sử dụng cho hai cấu trúc quan trọng: tên của môi trường cấp cao nhất của chương trình, có thể được kiểm tra bằng cách sử dụng biểu thức __name__ == '__main__';và.Tệp __main__.py trong các gói Python.the name of the top-level environment of the program, which can be checked using the __name__ == '__main__' expression; and. the __main__.py file in Python packages.

Chủ Đề