Contents
Version difference
- python 3.x:
print()is function and not a keyword anymore. () must be used
print("hello world")
- python 2.x:
printis considered as a keyword, so () is not necessary.
print "hello world"
The above syntax cannot be used in python 3!
But you can use future module import if you want to use print as a function for python 3 compatibility.
from __future__ import print_function
print("hello world")
Summary: It is better to use print() for future compatibility from now on.
Ref:
Single quotation and double quotation for string
There is no difference between 'word' and "word" in python.
But for triple quoted strings, use double quotation like below to follow PEP 257.
"""abc def """
| 123456 | “””abc def “”” |
In Python, single-quoted strings and double-quoted strings are the same. This PEP does not make a recommendation for this. Pick a rule and stick to it. When a string contains single or double quote characters, however, use the other one to avoid backslashes in the string. It improves readability.
For triple-quoted strings, always use double quote characters to be consistent with the docstring convention in PEP 257 .
Cite from PEP 8 — Style Guide for Python Code
Ref: Is there any difference between “string” and ‘string’ in Python? [duplicate]
print basic functionality
Explains behavior of print function in python 3 (or use from __future__ import print_function in python 2)
comma: , ー variable arguments
print function can take several arguments and they are printed with space (separate word specified by sep)
# default sep=' '
print('ab', 'cd', 'ef') # ab cd ef
optional arguments
sep: specify separator word. default value is' 'end: end of the text. default value is'\n'file: output stream. default value is'sys.stdout'
print('ab', 'cd', 'ef', sep=' ', end='\n', file=sys.stdout) # default arg, same with above
print('ab', 'cd', 'ef', sep='SEP') # abSEPcdSEPef
print('ab', 'cd', 'ef', end='\t') # default end='\n'
print('gh', 'ij', 'kl', end='\t')
print(('ab', 'cd', 'ef')) # ab cd ef gh ij kl ('ab', 'cd', 'ef')
# write to file
f = open('test.txt', 'w')
print('hello world', file=f)
+ - string addition
print('hello' + 'world' + str(3)) # helloworld3
string can be concatenated with +. For number, you need to cast with str().
% and .format() ー formatting string
Refer PyFormat page for detailed explanation and its usage example.
Summary: use .format() since it is newer method than % and supports more functionality (for example center alignment, keyword arguments etc).
Ex.
# % or .format() usage
print('%d %d' % (3, 5)) # 3 5 old style
print('{} {}'.format(3, 5)) # 3 5 new style
Left-align, right-align, truncate
# left align, right align
print('%-10sm%10s' % ('left', 'right',)) # left m right
print('{:<10}m{:>10}'.format('left', 'right')) # left m right
# truncate
print('%.5s' % ('xylophone',)) # xylop
print('{:.5}'.format('xylophone',)) # xylop
These are the examples only .format() supports
# center align
print('{:^10}'.format('test')) # ' test '
# keyword argument
person = {'first': 'Jean-Luc', 'last': 'Picard'}
print('{p[first]} {p[last]} is {age} years old'.format(p=person, age=3))
Conclusion and summary
- Use print() for python 3 compatibility.
writefrom __future__ import print_functionin python 2 - Use
,(multiple argument) when you want to print out several variables. - Use
.format()instead of%for formatting string.