Làm cách nào để nhập một biến từ tệp này sang tệp khác trong python?

Nhưng trước khi chúng ta bắt đầu, đây là một mẫu đơn giản mà bạn có thể sử dụng để chạy một tập lệnh Python từ một tập lệnh khác (đối với các tập lệnh Python được lưu trữ trong cùng một thư mục)

import script_name_to_call

Các bước để chạy một tập lệnh Python từ một tập lệnh khác

Bước 1. Đặt các tập lệnh Python trong cùng một thư mục

Để bắt đầu, hãy đặt các tập lệnh Python của bạn vào cùng một thư mục

Ví dụ: giả sử rằng hai tập lệnh Python (được gọi là python_1 và python_2) được lưu trữ trong cùng một thư mục

trăn_1
trăn_2

Mục tiêu cuối cùng là chạy tập lệnh python_2 từ tập lệnh python_1

Bước 2. Thêm cú pháp

Tiếp theo, thêm cú pháp vào từng tập lệnh của bạn

Chẳng hạn, hãy thêm cú pháp sau vào tập lệnh python_1

import python_2
print('what are you up to?')

Ở đâu

  • Dòng đầu tiên của 'nhập python_2' trong tập lệnh python_1, sẽ gọi tập lệnh python_2 thứ hai
  • Dòng thứ hai của mã chỉ in biểu thức 'bạn định làm gì?'

Bây giờ hãy thêm cú pháp vào tập lệnh python_2

print('hello world')

Trong trường hợp này, biểu thức 'hello world' sẽ được in khi chạy tập lệnh thứ hai

Lưu ý rằng trước tiên bạn phải lưu cú pháp đã được ghi trong tập lệnh python_2 trước khi gọi nó từ tập lệnh khác

Bước 3. Chạy một tập lệnh Python từ một tập lệnh khác

Bây giờ, bạn sẽ cần chạy tập lệnh từ hộp python_1 để gọi tập lệnh thứ hai

Lưu ý rằng kết quả của tập lệnh python_2 sẽ được hiển thị trước và chỉ sau đó kết quả của tập lệnh python_1 mới được hiển thị

hello world
what are you up to?

Gọi một biến cụ thể từ một tập lệnh Python này sang tập lệnh khác

Bây giờ chúng ta hãy xem cách gọi một biến cụ thể (mà chúng ta sẽ gọi là 'x') từ tập lệnh python_2 vào tập lệnh python_1

Trong trường hợp đó, bạn sẽ cần chỉnh sửa cú pháp trong tập lệnh python_1 thành như sau

import python_2 as p2
print(p2.x)

Tiếp theo, gán một giá trị (e. g. , 'hello world') thành biến 'x' trong tập lệnh python_2

x = 'hello world'

Đừng quên lưu các thay đổi trong tập lệnh python_2

Cuối cùng, hãy chạy cú pháp từ tập lệnh python_1 và bạn sẽ nhận được '7', đây thực sự là tổng của hai biến

Xin chào, tôi đang cố chuyển một biến toàn cục từ tệp python này sang tệp python khác. Biến toàn cục hoạt động như một nút chặn, nó trả về kiểu dữ liệu boolean và được khởi tạo là Sai. Trong cuộc gọi lại của tôi trong tệp đầu tiên, tôi thay đổi giá trị của biến toàn cục thành True nhưng khi tôi cố gắng nhập nó vào tệp khác, nó chỉ trả về giá trị khởi tạo là Sai. Ai đó có thể giúp tôi với cái này không?

Đây là bên trong tập tin của tôi

stop = False #global initialization

chức năng gọi thuê bao

def follow():
    ground_truth_state_subscriber = rospy.Subscriber('/ground_truth/state/', Odometry, get_rotation)
    r = rospy.Rate(10)
    rospy.spin()

hàm thay đổi giá trị của biến

________số 8_______

Và hàm ném giá trị của biến toàn cục

def check_stop():
   global stop
   return stop

Bây giờ trên tệp thứ hai của tôi, tôi vừa nhập tệp đầu tiên như thế này

from file1 import check_stop

print(check_stop())

Có cách nào chúng ta có thể chuyển giá trị của các biến giữa các tệp python trong ROS không. Tôi đã thử điều này chỉ bằng python và nó hoạt động nhưng khi tôi đã tích hợp nó với một số ROS. Nó dường như không hoạt động. Tôi có thể chuyển một giá trị từ tệp Python này sang tệp Python khác

chỉnh sửa thẻ nhớ lại gắn cờ xúc phạm đóng xóa hợp nhất

Bình luận

Không phải giải pháp nhưng có thể là giải pháp thay thế nhưng bạn đã cố xuất bản biến đó dưới dạng chủ đề và lắng nghe chủ đề đó từ mã khác của mình chưa?

Làm cách nào để nhập một biến từ tệp này sang tệp khác trong python?
FurkanEdizkan  ( 2022-04-19 01. 23. 26 -0600 ) chỉnh sửa

Xin chào, tôi đã thử điều đó và đã cố xuất bản thông báo ngay trước rospy. signal_shutdown nhưng tệp khác không thể nhận được thông báo nhưng tôi đã sử dụng Bool cho thông báo đó, sẽ thử sử dụng Chuỗi

mgrallos  ( 2022-04-19 04. 04. 36 -0600 ) chỉnh sửa

Tôi không biết điều đó có giải quyết được không, bạn có thể thử sử dụng cấu trúc dịch vụ ros không, vì bạn muốn xem phản hồi của tin nhắn trước khi tắt máy, có thể với cấu trúc dịch vụ khi bạn yêu cầu phản hồi, hệ thống sẽ đợi nó trước khi tắt máy

Làm cách nào để nhập một biến từ tệp này sang tệp khác trong python?
FurkanEdizkan  ( 2022-04-19 04. 47. 11 -0600 ) chỉnh sửa

Tôi có thể chạy song song nhiều dịch vụ không? . một cái đi theo một loạt các điểm tham chiếu, một cái tránh chướng ngại vật và cái còn lại là cái có cờ cho biết thông báo nào sẽ xuất bản. Và những gì tôi đang cố gắng làm là gửi một tiêu chí dừng xuất phát từ nút theo các điểm tham chiếu giống như khi nút đến điểm tham chiếu cuối cùng thì nó sẽ tắt. Và tôi cũng muốn tất cả hai nút còn lại tắt máy. Tôi nghĩ nó sẽ hoạt động chỉ bằng cách chuyển cờ nhưng không phải vậy. huhu

mgrallos  ( 2022-04-19 05. 47. 52 -0600 ) chỉnh sửa

Đây sẽ là triển khai của tôi nhưng bạn có thể tự do thay đổi bất cứ điều gì bạn muốn. Vì vậy, bạn có 3 nút, 1. đi theo way_points, 2. tránh chướng ngại vật 3. Xuất bản cờ. Nút 1 đang điều khiển hệ thống, 2 chỉ là cảnh báo, idk khoảng 3. Vì vậy, nút 2 sẽ bắt đầu với nút 1 nhưng chỉ xuất bản cảnh báo về chướng ngại vật, dừng lại, tín hiệu di chuyển có thể. 1 nghe 2, 2 sẽ đăng cảnh báo. Bây giờ chúng tôi có 3, tôi không hiểu 3 làm gì, nhưng có vẻ như 3 cần nghe 1 và trả lời lại. Biến 3 thành một dịch vụ và gọi nó từ 1, tùy thuộc vào phản hồi của 3, đây có thể là thông tin cờ được nâng lên. Tôi nghĩ rằng nó sẽ làm việc