@@ -7,6 +7,7 @@ package py
77import (
88 "errors"
99 "strconv"
10+ "strings"
1011)
1112
1213var (
@@ -88,7 +89,7 @@ func LoadIntsFromList(list Object) ([]int64, error) {
8889 if N <= 0 {
8990 return nil , nil
9091 }
91-
92+
9293 intList := make ([]int64 , N )
9394 for i := Int (0 ); i < N ; i ++ {
9495 item , err := getter .M__getitem__ (i )
@@ -204,3 +205,35 @@ func loadValue(src Object, data interface{}) error {
204205 }
205206 return nil
206207}
208+
209+ // print to gpythons stdout neatly
210+ func Println (self Object , args ... string ) (int , error ) {
211+ sysModule , err := self .(* Module ).Context .GetModule ("sys" )
212+ if err != nil {
213+ return 1 , err
214+ }
215+ stdout := sysModule .Globals ["stdout" ]
216+ write , err := GetAttrString (stdout , "write" )
217+ if err != nil {
218+ return 1 , err
219+ }
220+ for _ , v := range args {
221+ if strings .Contains (v , "\n " ) {
222+ _ , err = Call (write , Tuple {String (v )}, nil ) // do not write a space
223+ if err != nil {
224+ return 1 , err
225+ }
226+ } else {
227+ _ , err = Call (write , Tuple {String (v + " " )}, nil )
228+ if err != nil {
229+ return 1 , err
230+ }
231+ }
232+
233+ }
234+ _ , err = Call (write , Tuple {String ("\n " )}, nil ) // newline
235+ if err != nil {
236+ return 1 , err
237+ }
238+ return 0 , nil
239+ }
0 commit comments