水埗大坑东的路德会协同中学小学部毕业。及后在该校中学部就读中二的暑假期间，他与其兄长和同学聚赌而令兄长被逐出校门，自己则侥倖留下。未几被开除学籍。其后先入读基督教香港信义会信义中学中三至中五年级，再于培圣中学就读至预科毕业。1978年毕业于香港中文大学新亚书院社会科学系，主修经济，副修中文。自1991年起，除在1997年至1998年因中华人民共和国政府另组临时立法会而被迫「落车」外，张文光一直都是循教育界功能组别，担任立法会（局）议员。2012年香港立法会选举，他转战地区直选，参与九龙西选区地区直选