2012-07-06 41 views
5
from sys import argv 
from os.path import exists 

script, from_file, to_file = argv 

print "Copying from %s to %s" % (from_file, to_file) 

# we could two on one line too, how? 
input = open(from_file) 
indata = input.read() 

print "The input file is %d bytes long" % len(indata) 
print "Does the output file exist? %r" % exists(to_file) 
print "Ready, hit return to continue, CTRL-C to abort." 

raw_input() 

output = open(to_file, 'w') 
output.write(indata) 

print "Alright, all done." 

output.close() 
input.close() 

Trên hai dòng đầu tiên, tôi có một số ý tưởng về những gì đang diễn ra, nhưng muốn chắc chắn rằng tôi hoàn toàn hiểu nó, vì điều này có vẻ như nó có thể là quan trọng."Từ ... nhập ..." có nghĩa là gì trong các thuật ngữ đầu xương đơn giản?

Trả lời

15

Nếu bạn làm import sys, bạn sẽ nhận được quyền truy cập các chức năng và biến trong mô-đun hệ thống qua sys.foo hoặc sys.bar(). Điều này có thể nhận được rất nhiều đánh máy, đặc biệt là nếu sử dụng một cái gì đó từ submodules (ví dụ như tôi thường phải truy cập django.contrib.auth.models.User). Để tránh sự thừa này, bạn có thể mang một, nhiều hoặc tất cả các biến và hàm vào phạm vi toàn cục. from os.path import exists cho phép bạn sử dụng chức năng exists() mà không cần phải thêm nó trước os.path. mọi lúc.

Nếu bạn muốn nhập nhiều hơn một biến hoặc hàm từ os.path, bạn có thể làm from os.path import foo, bar. Bạn có thể nhập khẩu về mặt lý thuyết tất cả các biến và chức năng với from os.path import *, nhưng điều này thường không được khuyến khích vì bạn có thể sẽ ghi đè lên các biến hoặc hàm cục bộ hoặc ẩn các biến đã nhập. Xem What's the difference between "import foo" and "from foo import *"? để được giải thích.

+0

Bạn có thể đặt này trong một số loại tương tự nấu ăn? tức là làm bánh kếp? –

+4

Từ Tủ lạnh Nhập trứng. Dễ dàng hơn nhiều so với việc nói "Thêm Kitchen.Fridge.Egg.Yolk [2]" mỗi lần – Woody

+0

Vì vậy, từ có thể là phòng đựng thức ăn, tủ hoặc tủ lạnh ... bất cứ nơi nào tôi muốn lấy nguyên liệu thì nhập khẩu chính là thành phần tôi muốn - sữa bột và/hoặc trứng. Điều này dễ hơn là thực sự sản xuất từng nguyên liệu tại thời điểm nấu. Tôi có đang đi đúng đường không? –

7
from module import x 

có nghĩa là:

tải module tên module, nhưng chỉ lấy x vào namespace hiện hành.

1

Về Bonehead điều này có nghĩa,

from USA import iPhone # instead of importing the whole USA for an iPhone you now will just import the iPhone into your program, 

Tại sao bạn cần một cái gì đó như thế này?

xem xét việc này, nếu không có sự tuyên bố từ ... nhập mã của bạn sẽ trông như thế này

import USA 

variableA = USA.iPhone() 

với tuyên bố từ ... nhập khẩu có vẻ như,

from USA import iPhone 

variableA = iPhone() 
Các vấn đề liên quan