开发者

Line-breaking Expression in Python

I am beginner in python and facing this problem. So how i can break the below expression in 2-3 lines

totalIncome = (classACost * float(classASeatsSold)) + (classBCost * float(classBSeatsSold)) + (cla开发者_如何转开发ssCCost * float(classCSeatsSold))

Like this.

totalIncome = (classACost * float(classASeatsSold)) +

(classBCost * float(classBSeatsSold)) + 

(classCCost * float(classCSeatsSold))

Basic reason is i wanted to fit the line in 80 columns. And if i am not right about question Title please also suggest suitable title. Thanks in advance.


You always never have to use line continuation characters in python thanks to parentheses:

totalIncome = ( (classACost * float(classASeatsSold)) +
                (classBCost * float(classBSeatsSold)) +
                (classCCost * float(classCSeatsSold)) )

Which gives you the advantage of not having to remove the character in case you join the lines later. Same goes for strings:

longString = ( 'This is the one line '
               'being continued here and '
               'ending with a line break \n' )

You almost always can use parentheses instead of line continuation symbols and it just looks nicer.


Put your expression in parentheses:

totalIncome = ((classACost * float(classASeatsSold)) +
    (classBCost * float(classBSeatsSold)) +
    (classCCost * float(classCSeatsSold)))


I despise breaking a line over into several lines using 'backslashes'. By wrapping the entire expression on the right hand side of the equals character, you can break the lines without worrying about ensuring there is trailing whitespace or not, such as:

totalIncome = ((classACost * float(classASeatsSold)) + 
        (classBCost * float(classBSeatsSold)) + 
        (classCCost + float(classCSeatsSold)))


Just in case you revisit the scene:

You have excessive parentheses already. You also have unnecessary occurrences of float() ... if a cost is a float and a seatsSold is an int, then you don't need float() at all.

Instead of

totalIncome = (classACost * float(classASeatsSold)) + (classBCost * float(classBSeatsSold)) + (classCCost * float(classCSeatsSold))

you could have

totalIncome = classACost * classASeatsSold + classBCost * classBSeatsSold + classCCost * classCSeatsSold

which can be wrapped as

totalIncome = (
       classACost * classASeatsSold
     + classBCost * classBSeatsSold
     + classCCost * classCSeatsSold
    )

or

totalIncome = (classACost * classASeatsSold
     + classBCost * classBSeatsSold
     + classCCost * classCSeatsSold)

or whatever reasonable style takes your fancy. Splitting at some fixed limit is IMHO not reasonable:

totalIncome = (classACost * classASeatsSold + classBCost * classBSeatsSold + 
    classCCost * classCSeatsSold)

I prefer the first because it screams "Generalise me!" ...

total_income = sum(seat_price[c] * seats_sold[c] for c in class_codes)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜