2012-07-06 12 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() 

Sulle prime due righe ho un'idea di cosa sta succedendo, ma voglio essere sicuro di capirlo perfettamente, perché sembra che potrebbe essere importante.Che cosa significa "da ... import ..." in termini di bonehead semplici?

risposta

15

Se si esegue import sys, è possibile accedere alle funzioni e alle variabili nei moduli sys tramite sys.foo o sys.bar(). Questo può fare molta digitazione, specialmente se si usa qualcosa dai sottomoduli (ad esempio, spesso devo accedere a django.contrib.auth.models.User). Per evitare tale ridondanza, è possibile portare una, molte o tutte le variabili e le funzioni nell'ambito globale. from os.path import exists consente di utilizzare la funzione exists() senza doverla anteporre sempre a os.path..

Se si desidera importare più di una variabile o funzione da os.path, è possibile eseguire from os.path import foo, bar.

È possibile importare teoricamente tutte le variabili e le funzioni con from os.path import *, ma in genere è sconsigliato perché si rischia di sovrascrivere variabili o funzioni locali o nascondere quelli importati. Vedi What's the difference between "import foo" and "from foo import *"? per una spiegazione.

+0

si può mettere questo in una sorta di analogia con la cucina? cioè fare i pancakes? –

+4

Da uova di importazione frigorifero. Molto più facile che dire "Aggiungi Kitchen.Fridge.Egg.Yolk [2]" ogni volta – Woody

+0

Quindi da potrebbe essere dispensa, armadio o frigo ... ovunque io voglia ottenere gli ingredienti, l'importazione è esattamente l'ingrediente che voglio - farina di latte e/o uova. Questo è più facile rispetto alla produzione effettiva di ciascuno degli ingredienti al momento della cottura. Sono sulla strada giusta qui? –

7
from module import x 

significa:

Caricare il modulo denominato module, ma solo prendere x nel namespace corrente.

1

In termini Bonehead questo significa,

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

Perché avete bisogno di qualcosa di simile?

considerare questo, senza la dichiarazione di importazione ... il vostro codice sarà simile a questa

import USA 

variableA = USA.iPhone() 

con l'istruzione from ... import sembra,

from USA import iPhone 

variableA = iPhone() 
Problemi correlati