Я аспирант физики с некоторыми базовыми знаниями Python, и я сталкиваюсь с некоторыми проблемами, которые бросают вызов моим способностям.
Я пытаюсь передать некоторые переменные как фиктивные, а некоторые нет.У меня есть функция, которая получает функцию в качестве первого аргумента, но мне нужно, чтобы некоторые значения были объявлены "апостериори".
Я пытаюсь сказать следующее:
lead0 = add_leads(lead_shape_horizontal(W, n), (0, 0, n), sym0)
Функция "add_leads" принимает некоторую функцию, а также кортеж и третий аргумент, что нормально.Но n пока не имеет определения.Я хочу, чтобы n имел реальный смысл при вводе "add_leads".
Вот фактическая функция add_leads
def add_leads(shape, origin_2D, symm):
lead_return = []
lead_return_reversed = []
for m in range(L):
n = N_MIN + m
origin_3D = list(origin_2D)+[n]
lead_return.append(kwant.Builder(symm))
lead_return[m][red.shape(shape(n), tuple(origin_3D))] = ONN + HBAR*OMEGA*n
lead_return[m][[kwant.builder.HoppingKind(*hopping) for
hopping in hoppings_leads]] = HOPP
lead_return[m].eradicate_dangling()
Обратите внимание, что n определенпод для , поэтому я хочу поместить значение n в shape (n) (в этом случае приводит_shape_horizontal с фиксированным значением для W, а не для n).
Мне нужно, чтобы это было так, потому что в конечном итоге функция, которая является аргументом для lead_shape , может иметь более 2 входных значений, но все равно просто должна варьироваться n
Могу ли я добиться этого в Python?Если я могу, как это сделать?Помощь будет по достоинству оценена.Извините за мой английский!Заранее спасибо