Python Language
De afdrukfunctie
Zoeken…
Basisprincipes van afdrukken
In Python 3 en hoger is print
een functie in plaats van een trefwoord.
print('hello world!')
# out: hello world!
foo = 1
bar = 'bar'
baz = 3.14
print(foo)
# out: 1
print(bar)
# out: bar
print(baz)
# out: 3.14
U kunt ook een aantal parameters doorgeven om print
te print
:
print(foo, bar, baz)
# out: 1 bar 3.14
Een andere manier om meerdere parameters print
te print
is door een +
print(str(foo) + " " + bar + " " + str(baz))
# out: 1 bar 3.14
Waar u echter voorzichtig mee moet zijn wanneer u +
gebruikt om meerdere parameters af te drukken, is dat het type parameters hetzelfde moet zijn. Als u het bovenstaande voorbeeld probeert af te drukken zonder eerst de cast naar string
zou dit een fout veroorzaken, omdat het zou proberen het nummer 1
toe te voegen aan de string "bar"
en dat toe te voegen aan het nummer 3.14
.
# Wrong:
# type:int str float
print(foo + bar + baz)
# will result in an error
Dit komt omdat de inhoud van de print
eerst wordt geëvalueerd:
print(4 + 5)
# out: 9
print("4" + "5")
# out: 45
print([4] + [5])
# out: [4, 5]
Anders kan het gebruik van een +
zeer nuttig zijn voor een gebruiker om de uitvoer van variabelen te lezen. In het onderstaande voorbeeld is de uitvoer zeer gemakkelijk te lezen!
Het onderstaande script laat dit zien
import random
#telling python to include a function to create random numbers
randnum = random.randint(0, 12)
#make a random number between 0 and 12 and assign it to a variable
print("The randomly generated number was - " + str(randnum))
U kunt voorkomen dat de print
automatisch een nieuwe regel afdrukt met de parameter end
:
print("this has no newline at the end of it... ", end="")
print("see?")
# out: this has no newline at the end of it... see?
Als u wilt schrijven naar een bestand, kunt u deze doorgeven als parameter file
:
with open('my_file.txt', 'w+') as my_file:
print("this goes to the file!", file=my_file)
dit gaat naar het bestand!
Print parameters
U kunt meer doen dan alleen tekst afdrukken. print
ook verschillende parameters om u te helpen.
Argument sep
: plaats een string tussen argumenten.
Moet u een lijst met woorden afdrukken, gescheiden door een komma of een andere tekenreeks?
>>> print('apples','bannas', 'cherries', sep=', ')
apple, bannas, cherries
>>> print('apple','banna', 'cherries', sep=', ')
apple, banna, cherries
>>>
Argument end
: gebruik aan het einde iets anders dan een nieuwe regel
Zonder het argument end
, schrijven alle functies print()
een regel en gaan dan naar het begin van de volgende regel. U kunt het wijzigen om niets te doen (gebruik een lege string van '') of dubbele afstand tussen alinea's met behulp van twee nieuwe regels.
>>> print("<a", end=''); print(" class='jidn'" if 1 else "", end=''); print("/>")
<a class='jidn'/>
>>> print("paragraph1", end="\n\n"); print("paragraph2")
paragraph1
paragraph2
>>>
Argument file
: stuur uitvoer naar andere dan sys.stdout ergens.
Nu kunt u uw tekst naar stdout, een bestand of StringIO sturen en het kan u niet schelen wat u krijgt. Als het kwaakt als een bestand, werkt het als een bestand.
>>> def sendit(out, *values, sep=' ', end='\n'):
... print(*values, sep=sep, end=end, file=out)
...
>>> sendit(sys.stdout, 'apples', 'bannas', 'cherries', sep='\t')
apples bannas cherries
>>> with open("delete-me.txt", "w+") as f:
... sendit(f, 'apples', 'bannas', 'cherries', sep=' ', end='\n')
...
>>> with open("delete-me.txt", "rt") as f:
... print(f.read())
...
apples bannas cherries
>>>
Er is een vierde parameter- flush
die de stream met geweld doorspoelt.