используя переменную set из родительских fct, но не int variable [duplicate]

, чтобы загрузить KeyStore, вам нужно указать ему тип хранилища ключей (вероятно, jceks), предоставить входной поток и пароль. то вы можете загрузить его так:

KeyStore ks  = KeyStore.getInstance(TYPE_OF_KEYSTORE);
ks.load(new FileInputStream(PATH_TO_KEYSTORE), PASSWORD);

это может вызвать исключение KeyStoreException, поэтому вы можете окружать блок try, если хотите, или повторно бросить. Имейте в виду, что хранилище ключей может содержать несколько ключей, поэтому вам нужно найти свой ключ с псевдонимом, вот пример с симметричным ключом:

SecretKeyEntry entry = (KeyStore.SecretKeyEntry)ks.getEntry(SOME_ALIAS,new KeyStore.PasswordProtection(SOME_PASSWORD));
SecretKey someKey = entry.getSecretKey();
6
задан Yuhao Zhang 15 July 2015 в 16:07
поделиться

4 ответа

  • 2 переменные nums различны, и они указывают на один и тот же объект или на два разных объекта, хотя они имеют одинаковое имя.
  • , когда вы вызываете func1(nums), означает, что вы передаете Справка. Теперь переменная 2 nums указывает на тот же объект. (2 переменные, 1 объект)
  • , когда вы назначаете в func1, внутренняя переменная nums будет указывать на новый объект, внешний объект все равно остается неизменным (2 переменные, 2 объекта)
  • , и когда вы вызываете print nums, тогда nums является внешней переменной,
0
ответ дан Hùng Ng Vi 15 August 2018 в 14:37
поделиться

В этом конкретном случае это потому, что list s являются mutable .

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

Если вы попытаетесь сделать то же самое с tuple s это не сработает, поскольку они immutable .

Способ избежать этого - предоставить копию списка функции, а не самому списку:

func2(list[:])

В то же время вы можете сделать это с помощью аргументов по умолчанию, где вы можете указать аргумент по умолчанию как [], и если вы тогда .append() что-то ему, этот аргумент по умолчанию будет навсегда удерживаться этот элемент внутри него для всех будущих вызовов (если вы не удалите его каким-либо образом).

2
ответ дан jonrsharpe 15 August 2018 в 14:37
поделиться
  • 1
    Это не имеет ничего общего с изменчивостью. Речь идет о том, чтобы изменить значение vs и переупорядочить значение переменной. – Aran-Fey 12 August 2018 в 12:26

Я понимаю, что я могу использовать глобальную инструкцию для доступа к глобальным переменным

. Ваше понимание неверно. Вы всегда можете получить доступ к глобальной переменной, если у вас нет локальной переменной с тем же именем. Вам понадобится инструкция global, когда вы собираетесь изменить , к какому объекту относится имя переменной. В вашем func2 вы этого не делаете; вы изменяете только содержимое объекта. nums по-прежнему относится к тому же списку.

7
ответ дан kindall 15 August 2018 в 14:37
поделиться
2
ответ дан jonrsharpe 5 September 2018 в 13:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: