2013-07-03 18 views
8

Hiện nay khi tôi sử dụng display() chức năng trong máy tính xách tay IPython tôi nhận được dòng mới chèn giữa các đối tượng:IPython Máy tính xách tay: làm thế nào để hiển thị() nhiều vật thể mà không xuống dòng

>>> display('first line', 'second line') 
first line 
second line 

Nhưng tôi muốn các print() hành vi nơi mà mọi thứ được giữ trên cùng một dòng, ví dụ:

>>> print("all on", "one line") 
all onone line 

Có phương pháp thay đổi hành vi display để thực hiện việc này không?

Trả lời

5

Không, display không thể ngăn chặn dòng mới, một phần vì không có dòng mới để ngăn chặn. Mỗi đối tượng được hiển thị sẽ có div riêng để ngồi và các đối tượng này được sắp xếp theo chiều dọc. Bạn có thể điều chỉnh điều này bằng cách tương thích với CSS, nhưng tôi sẽ không đề nghị điều đó.

Cách duy nhất bạn có thể thực sự có hai đối tượng để hiển thị song song là xây dựng đối tượng của riêng bạn, bao gói nhiều đối tượng được hiển thị và hiển thị thay thế.

Ví dụ, trường hợp chuỗi đơn giản của bạn:

class ListOfStrings(object): 
    def __init__(self, *strings): 
     self.strings = strings 

    def _repr_html_(self): 
     return ''.join([ 
      "<span class='listofstr'>%s</span>" % s 
      for s in self.strings 
      ]) 

display(ListOfStrings("hi", "hello", "hello there")) 

example notebook