Существует свойство на UITableViewCell, названном editAction
, который документируется как разрешение Вам изменить действие, используемое для вставки или удаления на отдельных ячейках (это использует ячейку target
свойство также). Я не протестировал его, но это кажется, что могло бы сделать то, что Вы хотите.
Компилятор Python оптимизирует доступ к локальным переменным, распознавая во время компиляции, являются ли простые имена, к которым обращается функция, локальными (т. Е. Простые имена, назначенные или иным образом связанные внутри функции). Итак, если вы кодируете:
def lv1(d):
locals().update(d)
print zap
, компилятор «знает», что barename zap
НЕ является локальным (не назначается в функции lv1
), и поэтому он компилирует код для доступа к нему как к глобальному. - все, что содержит d
, не имеет значения.
Если вы предпочитаете медленный и раздутый код, вы можете отменить оптимизацию, используя exec
внутри функции - когда компилятор видит ключевое слово exec
, он ЗНАЕТ, что вы пытаетесь сделать свой код как можно медленнее, раздутым и содержащим ошибки, и поэтому он взаимодействует, никак не оптимизируя его, примерно.
Итак, следующий код работает так, как вы хотите:
def lv1(d):
exec ""
locals().update(d)
print zap
lv1({'zap': 23})
он излучает 23
, как вы хотите.
Я надеюсь, что из приведенного выше «невозмутимого юмора» ясно, что эта техника не рекомендуется, но я бы лучше изложите это очень четко: за сомнительное синтаксическое удовольствие написания print zap
вместо print locals () ['zap']
, вы платите огромную цену с точки зрения производительности . Тем не менее, как и всевозможные опасные инструменты, которые могут быть полезны в редких случаях для действительно опытных программистов уровня гуру, действительно действительно знающих, что они делают и почему, exec
доступен для вас. (или неправильно использовать) по вашей прихоти: Python НЕ стоит на вашем пути! -)
напечатайте zap
вместо print locals () ['zap']
, вы платите огромную цену с точки зрения производительности. Тем не менее, как и всевозможные опасные инструменты, которые могут быть полезны в редких случаях для действительно опытных программистов уровня гуру, действительно действительно знающих, что они делают и почему, exec
доступен для вас. (или неправильно использовать) по вашей прихоти: Python НЕ стоит на вашем пути! -) Из приведенного выше «невозмутимого юмора» ясно, что эта техника не рекомендуется, но я лучше изложу ее очень подробно: для сомнительного синтаксического удовольствия от написания напечатайте zap
вместо print locals () ['zap']
, вы платите огромную цену с точки зрения производительности. Тем не менее, как и всевозможные опасные инструменты, которые могут быть полезны в редких случаях для действительно опытных программистов уровня гуру, действительно действительно знающих, что они делают и почему, exec
доступен для вас. (или неправильно использовать) по вашей прихоти: Python НЕ стоит на вашем пути! -) за сомнительное синтаксическое удовольствие от написания print zap
вместо print locals () ['zap']
, вы платите огромную цену с точки зрения производительности. Тем не менее, как и всевозможные опасные инструменты, которые могут быть полезны в редких случаях для действительно опытных программистов уровня гуру, действительно действительно знающих, что они делают и почему, exec
доступен для вас. (или неправильно использовать) по вашей прихоти: Python НЕ стоит на вашем пути! -) за сомнительное синтаксическое удовольствие написания print zap
вместо print locals () ['zap']
, вы платите огромную цену с точки зрения производительности. Тем не менее, как и всевозможные опасные инструменты, которые могут быть полезны в редких случаях для действительно опытных программистов уровня гуру, которые действительно действительно знают, что они делают и почему, exec
доступен для вас. (или неправильно использовать) по вашей прихоти: Python НЕ стоит на вашем пути! -) Вы можете использовать замыкания для доступа к области видимости другой функции:
def b():
def a():
print size
size = 20
a()
Уловка состоит в том, чтобы складывать функции, которые принадлежат друг другу. Таким образом, внутренняя функция a может получить доступ к локальным переменным внешней функции b.
Но я не знаю, чем вы действительно занимаетесь, поэтому я не уверен, поможет ли это.
Это вам чем-то помогает?
def print_size(size=None):
print(size)
dict = {'size': 'XXL'}
print_size(**dict)
print size
не может работать, потому что "размер" неизвестен при компиляции кода. Ваш код будет работать, если вы измените его следующим образом:
def a(dict):
locals().update(dict)
print locals()["size"]
def b():
size = 20
a(locals())
Но, как уже следует из комментария к вашему вопросу: это очень странный код. Я уверен, что есть лучшие решения, если вы объясните, чем действительно хотите заниматься.