NumPy – 2 – Help e documentazione di IPython

fworks

Continuo da qui, seguendo Jake, qui.

Help e documentazione di IPython
If you read no other section in this chapter, read this one: I find the tools discussed here to be the most transformative contributions of IPython to my daily workflow.

Sì ci sono, e funzionano, i soliti sistemi, per esempio Stack Overflow e amici e conoscenti (anche via Web), ma dice Jake:

One of the most useful functions of IPython/Jupyter is to shorten the gap between the user and the type of documentation and search that will help them do their work effectively. While web searches still play a role in answering complicated questions, an amazing amount of information can be found through IPython alone. Some examples of the questions IPython can help answer in a few keystrokes:

  • How do I call this function? What arguments and options does it have?
  • What does the source code of this Python object look like?
  • What is in this package I imported? What attributes or methods does this object have?

Here we’ll discuss IPython’s tools to quickly access this information, namely the ? character to explore documentation, the ?? characters to explore source code, and the Tab key for auto-completion.

Documentazione con ?
Credo basti un esempio:

np3

E funziona anche con le funzioni che si definiscono, a patto di usare la docstring:

np4

Accedere al codice con ??

np5

Esplorare i moduli con <TAB>
IPython’s other useful interface is the use of the tab key for auto-completion and exploration of the contents of objects, modules, and name-spaces. È un po’ diverso da come indicato da Jake (e il tab che inserisco alla fine del comando non si vede):

np6

e

np7

si può anche scrivere l’inizio del metodo, verranno visualizzati solo quelli corrispondenti:

np8

Vale anche per i metodi privati/interni:

np9

Vale anche per gli imports

np10

e anche

np11

insomma sempre.

Oltre al TAB completion: wildcard matching
Tab completion is useful if you know the first few characters of the object or attribute you’re looking for, but is little help if you’d like to match characters at the middle or end of the word. For this use-case, IPython provides a means of wildcard matching for names using the * character.

For example, we can use this to list every object in the namespace that ends with Warning:

np12

come si vede vale anche per casi più generali.

Insomma, non so voi ma per me IPython è la mia nuova REPL 😀
Non sono ancora partito con NumPy? No, ma si sa che Ankh-Morpork non è stata costruita in un giorno 😉
:mrgreen:

Annunci
Post a comment or leave a trackback: Trackback URL.

Commenti

  • vinnie  On 27 aprile 2017 at 13:45

    Stavo provicchiando ma questa funzionalità a me non va, ho installato anaconda 3-4.3.1 con annessi jupyter 4.2.1 e ipython 5.1.0 ma la wildcard non va come gli esempi:

    In [1]: *Warning?
    %%! any AttributeError bin


    Per il resto è veramente carino, l’ho conosciuto qua 🙂

    • juhan  On 27 aprile 2017 at 14:48

      Appena verificato e –come da tradizione– da me funziona. Proprio come da cit. 😯
      Però se il problema è solo quello non credo sia così grave, o no?

      • vinnie  On 30 aprile 2017 at 02:02

        No, assolutamente non è grave, anche se vista la mia pessima memoria era una funzionalità carina 😛
        Sto usando in questi giorni per la prima volta jupyter e mi sembra carino anche se poi devo vedere se riesco veramente a usarlo in modo efficiente oppure no, per ora ho installato un po’ di plugin https://github.com/ipython-contrib/jupyter_contrib_nbextensions e alcuni sono molto utili secondo me come quello per bloccare l’esecuzione e la modifica delle celle (utile quando non si vuole cancellare qualcosa pur non volendo modificarla) e quello per collassare le celle in base all’ordine gerarchico conferito con gli header in markdown.
        Ora volevo provare quello per evidenziare il testo per vedere se funziona bene.
        È talmente carino che mi piacerebbe poter vedere i miei notebook anche su android anche se non so ancora come fare, ho visto che in qualche modo si può installare anche su android, utilizzo già termux (è veramente carino), anche se la procedura mi sembra un po’ lunga e non so se proverò:
        http://www.leouieda.com/blog/scipy-on-android.html

      • juhan  On 30 aprile 2017 at 09:07

        A proposito di memoria forse mi ripeto (come dice –falsamente– qualcuno che mi conosce e non sa che le cose importanti devono essere rimarcate) e non so te l’ho già detto. Se del caso porta pazienza.
        Se stai facendo prove con Jupyter e vuoi pubblicarle il blog è a tua disposizione 😁 Sarebbero interessantissime le cose nel browser (dove io non ci traffio più) e sui dispositivi mobile, specialmente Android.
        Sono convinto che il futuro sia quello, anche se personalmente mi sto occupando di tutt’altro (credo ne parlerò nel post programmatico in occasione del compleanno del blog venerdì prossimo –forse).
        Ma sarebbero OK anche tutte le altre alternative, github, blog personale, e finanche /dev/null (anche se 😡)
        In ogni caso che 💥 la forza sia con te! 🚀

      • vinnie  On 1 maggio 2017 at 01:45

        Allora, visto che un po’ di prove ne ho fatte e ne stiamo parlando ti dico cosa ho provato, così tanto per comunicare.
        1) ho provato il sito sagemath, carino, sembrava funzionare, poi però ho avuto problemi a installare le estensioni (non ho capito se e un problema con pip), allora mi sono annoiato e ho lasciato perdere (però per il resto funzionava bene)
        2) ho pensato che lo stesso sito di anaconda (che è il metodo con cui ho installato jupyter) permettesse di usare i notebook ma mi è parso di starmi sbagliando, ora non ricordo cosa non è andato ma mi sembra che non si potesse neanche editare i notebook, altra prova saltata
        3) ho letto che github ha una certa compatibilità con i .ipynb , è vero li renderizza, ma non li fa modificare, però c’è un servizio che si chiama mybinder che consente di editarli in una sessione temporanea che non modifica il repository. Nel peggior dei casi quindi si può aprire il collegamento di github contenente i notebook con questo servizio, editarli (non so quante e quali librerie siano disponibili), scaricarli modificati e alla fine ricaricarli su github.
        È abbastanza indolore dato che non bisogna neanche avere nessuna autorizzazione da github, se è pubblico si può linkare e mybinder li interpreta, l’unica cosa è che si collega a quella specifica versione del repository, quindi se si fanno cambiamenti bisogna rifarlo collegare di nuovo. Esempio: http://mybinder.org/repo/vinniec/test_jupyter
        4) ultima prova, forse quella più interessante (anche se relativamente utile), si può servire le pagine pubblicamente, ho fatto un po’ di ricerche in modo ignorante e sono arrivato a questa soluzione:
        4.1) creare dei certificati ssl:
        openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /path/mykey.key -out /path/mycert.pem -subj “/C=IT/ST=Italy/L=ITALY/O=FF/OU=IT/CN=www.example.com”
        4.2) creare un file di configurazione apposito per la versione pubblica contenente la password, decommentare la seconda riga per chi ha il gestore di estensioni, senza quello non funziona:
        c.NotebookApp.password = u’password’
        #c.NotebookApp.setdefault(‘nbserver_extensions’, {})[‘jupyter_nbextensions_configurator’] = True
        4.3) avviare la configurazione personalizzata con:
        jupyter notebook config=/path/configurazione.py –certfile=/path/mycert.pem –keyfile /path/mykey.key –ip=0.0.0.0
        4.4) adesso aprendo l’indirizzo https://0.0.0.0:8888 in locale e https://ip_host:8888 da un altro pc in rete e inserendo la password scelta si potrà accedere anche da cellulare.
        Da cellulare si vede abbastanza bene, certo è pìù scomodo ma installando hacker’s keyboard si dovrebbe lo stesso controllo.

        Ho fatto anche un altra prova propedeutica a tentare di installare jupyter su termux, ho provato a installare jupyter su un virtualenv. Con pip non ho chiesto nessun pacchetto oltre jupyter, mi ha comunque installato un po’ di cose, ma non troppe, ora non so se ne avrebbe installate di più in un sistema senza già altre librerie, comunque mi ha fatto un ambiente di circa 35mb, quindi se tutto va bene, senza installare pacchetti scientifici, non dovrebbe occupare tanto.

        Ok non mi viene più niente in mente, eccetto “ciao juhan” 🙂

      • juhan  On 1 maggio 2017 at 13:11

        Uh! kwanta roba 😁
        Per roba Anaconda-like puoi installare via conda, funziona (per me).
        Non insisto più con la mia offerta, ma se vuoi 😉

      • vinnie  On 1 maggio 2017 at 13:16

        Se ti riferivi a sagemath non ricordo perché non avevo provato con conda, forse proprio non c’era!
        Se invece ti riferisci al cloud di anaconda, è proprio il cloud che non fa quello che mi serve 😛
        Per la proposta, non è che non l’apprezzi, è che io non mi sento affatto in grado di scrivere post di blog perché sono poco professionale e non mi va di prendermi la responsabilità di scrivere cose che potrebbero essere incomplete/sbagliate XD

  • vinnie  On 1 maggio 2017 at 03:18

    Ok, piccola integrazione, si possono scrivere tutte le opzioni della riga di comando dentro al file di configurazione (ovvio, dovevo pensarci prima), così da poter avviare jupyter notebook solamente specificando il file di configurazione, per completezza inserisco il mio file di configurazione attuale:

    c.NotebookApp.browser = ‘chromium-browser’
    c.NotebookApp.notebook_dir = ‘/home/vinnie/Documenti/jupyter’

    #non si può usare la ~ per i path
    c.NotebookApp.password = ‘password’
    c.NotebookApp.certfile = ‘./mycert.pem’
    c.NotebookApp.keyfile = ‘./mykey.key’
    c.NotebookApp.ip = ‘*’
    c.NotebookApp.port = 8888

    c.NotebookApp.setdefault(‘nbserver_extensions’, {})[‘jupyter_nbextensions_configurator’] = True

Trackbacks

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: