2013-01-04 36 views
5

Chúng tôi sử dụng tất cả các cơ chế nhập khẩu của python thời gian để nhập các mô-đun và các biến và các thứ khác .. nhưng, có bất kỳ điều gì hoạt động như xuất khẩu không? như:Có điều gì giống như xuất khẩu Python không?

chúng tôi nhập khẩu công cụ từ một module:

from abc import * 

vì vậy chúng tôi có thể xuất khẩu như ?:

to xyz export * 

hoặc xuất khẩu a, b, c để program.py

Tôi biết câu hỏi này không phải là một loại câu hỏi điển hình để được hỏi ở đây .. nhưng chỉ trong tò mò .. Tôi đã kiểm tra trên giao diện điều khiển python và không có gì tồn tại như 'xuất khẩu' .. có thể nó tồn tại với một số d tên ifferent ..?

+6

Chính xác điều đó hoạt động như thế nào? – NPE

+2

Tại sao bạn muốn điều đó? – delnan

+0

như thay vì xuất bất kỳ biến hoặc phương thức nào từ tệp python hoặc mô-đun..khi chúng tôi không thể xuất từ ​​tệp đó đến đích của chúng tôi để ngay cả khi mã của chúng tôi công khai..không ai biết các biến hoặc phương thức đến từ đâu? đây chỉ là một khía cạnh ... trong quan điểm của tôi .. nếu có một sự nhập khẩu thì có tồn tại một sự xuất khẩu. :-) – khan

Trả lời

7

Trước tiên, hãy nhập mô-đun bạn muốn xuất nội dung vào, do đó bạn có tham chiếu đến nó. Sau đó gán những điều bạn muốn xuất như là thuộc tính của mô-đun:

# to xyz export a, b, c 
import xyz 
xyz.a = a 
xyz.b = b 
xyz.c = c 

Để làm một xuất khẩu ký tự đại diện, bạn có thể sử dụng một vòng lặp:

# to xyz export * 
exports = [(k, v) for (k, v) in globals().iteritems() if not k.startswith("_")] 
import xyz 
for k, v in exports: setattr(xyz, k, v) 

(Lưu ý rằng chúng tôi thu thập danh sách các đối tượng được xuất khẩu trước khi nhập mô-đun, để chúng tôi có thể tránh xuất tham chiếu đến mô-đun mà chúng tôi vừa nhập vào chính nó.)

Về cơ bản đây là hình thức vá khỉ. Nó có thời gian và địa điểm của nó. Tất nhiên, để nó hoạt động, mô-đun thực hiện việc "xuất khẩu" phải được thực thi; chỉ đơn giản là nhập khẩu các mô-đun sẽ được vá sẽ không kỳ diệu nhận ra rằng một số mã khác ở đâu đó sẽ vá nó.

Các vấn đề liên quan