Найти - Пользователи
Полная версия: Обработать все аргументы функции
Начало » Python для новичков » Обработать все аргументы функции
1 2
asilyator
Можно сделать такое
def f(a,b,c,d):
for par in all_parameters:
par = str(par)
print a+b
blabla
чтобы при этом параметры были по прежнему доступны через имена?
doza_and
def f(a,b,c):
"""asdsd"""
zz=locals()
Вы прям как с перла пришли :)
asilyator
А при чем тут перл?

Мне надо перевести все параметры в строки и потом иметь возможность обращаться к ним по именам. А что делать с locals()? Это же копия.
doza_and
Потому что в перле обычный способ передать все параметры в массивчике, а потом развертывание по именам.
locals это переменные присутствующие в локальном контексте сразу после входа - считай перечень аргументов
Если есть знатоки они может меня поправят.
Значения параметров это zz.values() имена параметров zz.keys() как к a,b,c все равно можете обращаться.
Почитайте документацию по поводу пространств имен в питоне я думаю станет значительно понятнее
asilyator
Т.е. ты предлагаешь
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.
И это тот самый словарь, а не копия?
Edit: копия
doza_and
Модифицировать 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
Вам доступны и имена и значения, а дальше вам решать что с ними делать.
asilyator
doza_and
И в питоне модифицировать вообще нету в обычном понимании этого процесса.
a=5
это переассоциация
Переассоциация это тоже модификация .Какая разница

doza_and
Вам доступны и имена и значения, а дальше вам решать что с ними делать.
И что мне с ними делать? Как мне записать во все параметры param = str(param)?
doza_and
Разница в том что нет передачи примитивных типов по ссылке. То что вы на меняеете не повлияет на вызывающую процедуру
def f(a,b,c):
"""asdsd"""
params=str(locals().values())
print params
f(1,2,3)
>>>[1, 3, 2]
вам это надо?
asilyator
Уфф. Нет, мне надо, чтобы можно было дальше обращаться к аргументам по именам, а не через mydict.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB