Форум сайта python.su
Можно сделать такое
def f(a,b,c,d):
for par in all_parameters:
par = str(par)
print a+b
blabla
Отредактировано (Янв. 9, 2011 17:06:16)
Офлайн
def f(a,b,c):
"""asdsd"""
zz=locals()
Офлайн
А при чем тут перл?
Мне надо перевести все параметры в строки и потом иметь возможность обращаться к ним по именам. А что делать с locals()? Это же копия.
Офлайн
Потому что в перле обычный способ передать все параметры в массивчике, а потом развертывание по именам.
locals это переменные присутствующие в локальном контексте сразу после входа - считай перечень аргументов
Если есть знатоки они может меня поправят.
Значения параметров это zz.values() имена параметров zz.keys() как к a,b,c все равно можете обращаться.
Почитайте документацию по поводу пространств имен в питоне я думаю станет значительно понятнее
Отредактировано (Янв. 9, 2011 17:13:42)
Офлайн
Т.е. ты предлагаешь
def f(a,b,c):
vars = locals()
модифицируем vars
print a+b
locals()И это тот самый словарь, а не копия?
Update and return a dictionary representing the current local symbol table. Free variables are returned by locals() when it is called in function blocks, but not in class blocks.
Note: The contents of this dictionary should not be modified; changes may not affect the values of local and free variables used by the interpreter.
Отредактировано (Янв. 9, 2011 17:24:35)
Офлайн
Модифицировать vars не получится как впрочем и a,b,c И в питоне модифицировать вообще нету в обычном понимании этого процесса.
a=5
это переассоциация
попробуйте этот код чтобы понять особенности
def f(a,b,c):
"""asdsd"""
zz=locals()
print zz
a=33
print a
print zz
print locals()
f(1,2,3)
Офлайн
Вам доступны и имена и значения, а дальше вам решать что с ними делать.
Офлайн
doza_andПереассоциация это тоже модификация .Какая разница
И в питоне модифицировать вообще нету в обычном понимании этого процесса.
a=5
это переассоциация
doza_andИ что мне с ними делать? Как мне записать во все параметры param = str(param)?
Вам доступны и имена и значения, а дальше вам решать что с ними делать.
Офлайн
Разница в том что нет передачи примитивных типов по ссылке. То что вы на меняеете не повлияет на вызывающую процедуру
def f(a,b,c):
"""asdsd"""
params=str(locals().values())
print params
f(1,2,3)
>>>[1, 3, 2]
Офлайн
Уфф. Нет, мне надо, чтобы можно было дальше обращаться к аргументам по именам, а не через mydict.
Офлайн