Hướng dẫn how do you pass variables between files in python? - làm thế nào để bạn chuyển các biến giữa các tệp trong python?

Tôi chắc chắn điều này rất đơn giản nhưng tôi đã không thể làm cho nó hoạt động chính xác. Tôi cần phải có tập lệnh python chính của mình gọi một tập lệnh python khác và chuyển các biến từ tập lệnh gốc sang tập lệnh mà tôi đã gọi

Vì vậy, trong một ví dụ đơn giản, tập lệnh đầu tiên của tôi là,

first.py
x = 5
import second

Và kịch bản thứ hai của tôi là,

second.py 
print x

Và tôi mong đợi nó sẽ in X nhưng tôi nhận được

NameError: name 'x' is not defined

Tôi không chắc là nhập khẩu là cách đúng để đạt được điều này, nhưng nếu ai đó có thể làm sáng tỏ nó một cách đơn giản sẽ rất tuyệt!

thanks,


CHỈNH SỬA

Sau khi đọc các bình luận, tôi nghĩ rằng tôi sẽ mở rộng câu hỏi của mình. Aswin Murugesh trả lời khắc phục vấn đề nhập khẩu mà tôi đang gặp phải, tuy nhiên giải pháp không có kết quả mong muốn vì tôi dường như không thể vượt qua các mục trong danh sách theo cách này.

Trong First.py tôi có một danh sách mà tôi xử lý như sau

for insert, (list) in enumerate(list, start =1):
    'call second.py passing current list item'

Tôi muốn chuyển từng mục trong danh sách cho tệp Python thứ hai để xử lý thêm (lần đầu tiên tôi không muốn làm điều này trong đầu tiên. chương trình. Tôi hy vọng điều này bây giờ có ý nghĩa hơn.

Cảm ơn các ý kiến ​​cho đến nay.

Hướng dẫn how do you pass variables between files in python? - làm thế nào để bạn chuyển các biến giữa các tệp trong python?

Tìm hiểu cách tạo các biến toàn cầu có thể được chia sẻ giữa các tệp/mô -đun trong Python.


Các biến toàn cầu được sử dụng trong lập trình để chia sẻ bộ nhớ giữa các phần khác nhau của ứng dụng, điều này cho phép một loạt các chức năng như theo dõi việc sử dụng tài nguyên giữa các lớp, lưu trữ số liệu thống kê về một ứng dụng và nhiều hơn nữa. Trong Python, chúng chủ yếu được sử dụng để chia sẻ các giá trị giữa các lớp và chức năng.

Hiểu các biến toàn cầu trong Python

Trong Python, một biến toàn cầu thông thường chỉ được sử dụng để chia sẻ giá trị trong các lớp và chức năng. Một biến- một lần được tuyên bố là toàn cầu trong một hàm hoặc lớp sau đó có thể được sửa đổi trong phân đoạn.

num = 1 
 
def increment(): 
    global num 
    num += 1 

Mã trên sẽ cho phép biến 'num' được sử dụng trong hàm đó, trong khi nếu bạn bỏ qua tuyên bố toàn cầu, nó sẽ không được xác định.

Tuy nhiên, nếu bạn cố gắng sử dụng logic này để khai báo một biến toàn cầu từ một lớp khác, nó sẽ không hoạt động như trong các ngôn ngữ khác như Java hoặc C ++.

Ví dụ: nếu chúng ta có một lớp có biến cần được truy cập từ trong một lớp nhập khẩu khác, sẽ không có cách nào để chúng tôi truy cập biến này bằng cách sử dụng từ khóa toàn cầu:

main.py

import test 
 
num = 1 
 
test.increment() 

test.py

def increment(): 
    global num 
    num += 1 

Như bạn có thể thấy ở trên, mặc dù chúng tôi cố gắng truy cập 'num' dưới dạng toàn cầu trong hàm tăng () sau khi nó được cung cấp một giá trị trong main.py, nó vẫn sẽ không được xác định và sẽ dẫn đến lỗi.

Chia sẻ các biến toàn cầu giữa các tệp/mô -đun trong Python

Mặc dù từ khóa toàn cầu chỉ được sử dụng để truy cập các biến từ trong cùng một mô -đun, có nhiều cách để sử dụng nó để chia sẻ các biến giữa các tệp. Ví dụ, chúng ta có thể có ảnh hưởng từ PHP và tạo ra một cái gì đó tương tự như các biến "Superglobals".

Để làm điều này, bạn có thể tạo một mô -đun mới đặc biệt để lưu trữ tất cả các biến toàn cầu mà ứng dụng của bạn có thể cần. Đối với điều này, bạn có thể tạo một chức năng sẽ khởi tạo bất kỳ toàn cầu nào trong số các giá trị mặc định này, bạn chỉ cần gọi chức năng này một lần từ lớp chính của mình, sau đó bạn có thể nhập tệp Globals từ bất kỳ lớp nào khác và sử dụng các toàn cầu đó khi cần.

Ví dụ: hãy tạo một hàm tương tự như ví dụ trên sẽ tăng biến toàn cầu. Đối với điều này, chúng tôi sẽ cần 3 lớp để chứng minh khái niệm; Một lớp chính, một lớp chứa chức năng gia tăng của chúng tôi và một lớp chứa các toàn cầu.

globals.py

def initialize(): 
    global num 
    num = 1 

main.py

import globals 
import test 
 
if __name__ == "__main__": 
    globals.initialize() 
    print( globals.num ) 
    test.increment() 
    print( globals.num ) 

test.py

import globals 
   
def increment(): 
    globals.num += 1

Khi chúng ta chạy Main.Py, đầu ra sẽ là:

second.py 
print x
0

Như bạn có thể thấy, một khi chúng tôi đã khởi tạo biến toàn cầu trong Globals.py, sau đó chúng tôi có thể truy cập 'num' dưới dạng thuộc tính từ bất kỳ mô -đun nào khác trong ứng dụng và nó sẽ giữ lại giá trị của nó.

Nếu bạn gặp khó khăn khi hiểu cách thức hoạt động của nó, hãy để lại nhận xét bên dưới!