前スレの話を蒸し返すようで気が引けますが、
(レベルが低いのも…)
教えて頂けないでしょうか?

下記の通りinput.txtを作り、
Name: Tarou Bob Cheng
Age: 28 34 46
City: Tokyo New_York Beijing

それを読み込み縦横を変換するプログラムを作成
するプログラムでこのスレの先生の模範解答です。
for x in zip(*eval('[line.split()
  for line in file("input.txt")]')):
  print x
O/Pは下記の通りでOKです。
('Name:', 'Age:', 'City:')
('Tarou', '28', 'Tokyo')
('Bob', '34', 'New_York')
('Cheng', '46', 'Beijing')

ところがevalの前の*を消してみたら?
for x in zip(eval('[line.split()
  for line in file("input.txt")]')):
  print x
O/Pは、
(['Name:', 'Tarou', 'Bob', 'Cheng'],)
(['Age:', '28', '34', '46'],)
(['City:', 'Tokyo', 'New_York', 'Beijing'],)
と元通りになってしまう。引数の関数の前に
*をつける意味とその仕組みを教えて下さい。