I think I've got my head pretty much wrapped around all of this. I figured
I'd recap just in case anyone else comes across any of the issues discussed.
import DataFrames # Like "import DataFrames" in Python, requires
DataFrames.foo for all methods
using DataFrames # Like "import DataFrames; from DataFrames import *" in
Python, imports all exported methods
import DataFrames: nrow # Like "import DataFrames; from DataFrames import
nrow" in Python
# The last line above is the only way to add methods to an existing
function without explicitly specifying
# the module name (e.g., DataFrames.nrow(s::String) = ...). For example,
this works:
import DataFrames: nrow
nrow(s::String) = display("Hello " * s)
# But this doesn't (you will get an error that DataFrames.nrow must be
explicitly imported to be extended):
using DataFrames
nrow(s::String) = display("Hello " * s)