Я использую AVAssetExportSession для экспорта видео из моего приложения iOS, например:
AVAssetExportSession *exportSession=[AVAssetExportSession exportSessionWithAsset:composition presetName:AVAssetExportPresetMediumQuality];
Я хочу загрузить экспортированное видео, поэтому размер имеет значение. Проблема в следующем: среднее качество - это действительно плохое качество, и AVAssetExportPresetHighestQuality в порядке, Оператор assginment объявит новую локальную переменную. foo = 'глобальный' def func1 (): foo = 'func1' def func2 (): foo = 'local variable in func2' использовать глобальное объявление ...
например: Оператор assginment объявит новую локальную переменную.
foo = 'global'
def func1():
foo = 'func1'
def func2():
foo = 'local variable in func2'
Объявление use global будет использовать foo в global:
def func2():
global foo
foo = 'global changed in func2' #changed the foo value in global scope
как я могу изменить переменную foo в области действия func1?
Спасибо за любую помощь.
Редактировать:
Спасибо, Брэндон Крейг Роудс, я наконец понял, что вы имеете в виду.
если имеется более трех вложенных областей, я могу сохранить переменную в списке.
foo = ['global', 'function1', 'function2']
def func1():
foo[1] = 'func1'
def func2():
foo[2] = 'func2'
foo[1] = 'func1 modified in func2'
I просто используйте глобальную переменную.
поэтому, если есть две вложенные функции, мы можем использовать
nonlocal foo
и
global foo
, если есть более трех вложенных функций,
и каждая функция использует переменные в области других функций,
почему бы нам не объявить глобальную переменную списка?
Спасибо за вашу помощь !!!