Форум сайта python.su
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png) 
			 
							 0
  0   
								
								Можно ли как-то сделать так чтобы при считывании строки скрипт вызывал ту или иную функцию. Делаю примерно так:
func=raw_input(“Введите команду: ”)
if func=“ls”:
    ls()
elif func=“rm”:
    rm()
else:
    default()
Но может быть есть более лучший метод?
Офлайн
 
							 0
  0   
								
								Может так?
func=raw_input(“Введите команду: ”)
eval('func'+'()')
Офлайн
 
							 0
  0   
								
								Спасибо.
Начал было смотреть уже модуль cmd. Можете объяснить для каких целей он(cmd) вообще нужен и как с ним работать?
Офлайн
 
							 0
  0   
								
								slivlen, может не 
func=raw_input(“Введите команду: ”)а
eval('func'+'()')
func=raw_input(“Введите команду: ”)>>> func=raw_input(“Введите команду: ”)
eval(func+'()')
Офлайн
 
							 0
  0   
								
								pythonwin спасибо что поправил. Это просто описка была.
Офлайн
 
							 1
  1   
								
								В качестве совета из категории tips&tricks: если не стоит задача дать доступ ко всем callable-объектам, то лучше сделать не eval(funcname+'()'), а eval('cmd_'+funcname+'()'), это собственно и гарантирует, что пользователь вызовет не любой callable-объект, а только из заранее предусмотренных (те, которые с префиксом cmd_)
Офлайн
![[RSS Feed] [RSS Feed]](/static/djangobb_forum/img/feed-icon-small.png)