Unable to understand DataBunch code from Lesson 5

I was having a look, on Jeremy’s direction, of the create() method in the DataBunch Class

A lot of things didn’t make sense to me though.

The first line is

datasets = cls._init_ds(train_ds, valid_ds, test_ds)

The definition of _Init_ds is right above the codeblock for DataBunch but I have no idea what it is doing at the level of code

The second line uses ifnone and I can’t find what that is

and the last two lines, well…
dls = [DataLoader(d, b, shuffle=s, drop_last=s, num_workers=num_workers, **dl_kwargs) for d,b,s in zip(datasets, (bs,val_bs,val_bs,val_bs), (True,False,False,False)) if d is not None]
return cls(*dls, path=path, device=device, dl_tfms=dl_tfms, collate_fn=collate_fn, no_check=no_check)

Any help would be highly appreciated