95% del tempo, si dovrebbe mettere tutti i tuoi importazioni nella parte superiore del file. Un caso in cui si potrebbe voler eseguire un'importazione locale della funzione è se si deve farlo per evitare importazioni circolari. Dì foo.py importa bar.py, e una funzione in bar.py ha bisogno di importare qualcosa da foo.py. Se imposti tutte le tue importazioni nella parte superiore, potresti avere problemi imprevisti nell'importazione di file che si basano su informazioni che non sono ancora state compilate. In questo caso, con un import locale funzione può consentire il codice per tenere a bada sull'importazione l'altro modulo fino a quando il suo codice è stato completamente compilato, e si chiama la funzione in questione.
Tuttavia, sembra che il tuo caso d'uso è di più che lo rende chiaro dove foo() è venuta da. In questo caso, avrei di gran lunga preferire una delle due cose:
In primo luogo, piuttosto che
from prerequisite import foo
importazione prerequisito direttamente, e in seguito si riferiscono ad essa come prerequisite.foo. La verbosità aggiunta si ripaga di picche grazie a una maggiore trasparenza del codice.
In alternativa, (o in combinazione con quanto sopra) se è davvero una distanza così lunga tra l'importazione e il luogo di utilizzo, è possibile che il modulo sia troppo grande. La necessità di un'importazione che nient'altro utilizza potrebbe essere un'indicazione di un luogo in cui il tuo codice potrebbe essere riadattato in un frammento di dimensioni più maneggevoli.
Possibile duplicato di [Python - Import se] (http://stackoverflow.com/questions/12860841/python-import-in-if) – Abhijeet