Можно ли задать аргумент функции после описания самой функции?

def function():
    x = a + 10

a = 5
function()

Важно что одна из переменной, участвующих в функции была задана прямо перед ее использованием, а не перед ее описанием или в нем

Можно ли так? Спасибо!


Ответы (3 шт):

Автор решения: Xander

Нет, так не работает. Примерно то, что вы хотите, можно сделать с помощью функции, возвращающей функцию:

def plus_ten(a):
    def internal():
        x = a + 10
        print(x)
    return internal

function = plus_ten(5)  # Создаёт функцию, для которой a=5
function()
→ Ссылка
Автор решения: c0ol

Можно использовать глобальные переменные. Лично автор не делал-бы таким образом с точки зрения свойства инкапсуляции ООП. Но язык это допускает.

Но глобальные переменные доступы на чтение.

Пометив переменную x как global, можно обращаться к ее изначальному значению, которое было определено вне зоны действия функции.

def sum():
    #Изменять значение можно только с помощью ключевого слова global
    global x
    x = a + 10
  
a = 5
x = 0
sum()    
print("Result: ", x)  # Result:  15
→ Ссылка
Автор решения: Lecron

Не понял вопроса. Это же ведь стандартное использование функций.

def function(a):
    return a + 10

a = 5
function(a)

Если по каким-то причинам вызов должен быть без аргументов, поможет частичное применение, реализуемое функцией partial модуля functools.

from functools import partial

def custom_function(a):
    return a + 10

function = partial(custom_function, 5)
function()
→ Ссылка