Sök…


Grunderna för utskrift

I Python 3 och högre är print en funktion snarare än ett nyckelord.

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

Du kan också skicka ett antal parametrar att print :

print(foo, bar, baz)
# out: 1 bar 3.14

Ett annat sätt att print flera parametrar är att använda en +

print(str(foo) + " " + bar + " " + str(baz))
# out: 1 bar 3.14

Vad du bör vara försiktig med när du använder + att skriva ut flera parametrar är att typen av parametrar ska vara densamma. Att försöka skriva ut exemplet ovan utan cast till string först skulle resultera i ett fel, eftersom det skulle försöka lägga till numret 1 till strängen "bar" och lägga till det till siffran 3.14 .

# Wrong:
# type:int  str  float
print(foo + bar + baz)
# will result in an error

Detta beror på att innehållet i print kommer att utvärderas först:

print(4 + 5)
# out: 9
print("4" + "5")
# out: 45
print([4] + [5])
# out: [4, 5]

Annars kan användningen av + vara till stor hjälp för en användare att läsa output av variabler. I exemplet nedan är utgången mycket lätt att läsa!

Skriptet nedan visar detta

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))

Du kan förhindra att print från att automatiskt skriva ut en ny rad genom att använda end parameter:

print("this has no newline at the end of it... ", end="")
print("see?")
# out: this has no newline at the end of it... see?

Om du vill skriva till en fil, kan du skicka den som parameter file :

with open('my_file.txt', 'w+') as my_file:
    print("this goes to the file!", file=my_file)

detta går till filen!

Skriv ut parametrar

Du kan göra mer än bara skriva ut text. print har också flera parametrar som hjälper dig.

Argument sep : placera en sträng mellan argument.

Behöver du skriva ut en lista med ord som är separerade med komma eller någon annan sträng?

>>> print('apples','bannas', 'cherries', sep=', ')
apple, bannas, cherries
>>> print('apple','banna', 'cherries', sep=', ')
apple, banna, cherries
>>>

Argumentets end : använd något annat än en ny linje i slutet

Utan end argument all print() funktioner skriva en rad och sedan gå till början av nästa rad. Du kan ändra det för att inte göra någonting (använd en tom sträng med '') eller dubbelavstånd mellan stycken med två nya linjer.

>>> 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 : skicka utdata till annat än sys.stdout någonstans.

Nu kan du skicka din text till antingen stdout, en fil eller StringIO och inte bryr dig vilken du får. Om den kväver som en fil fungerar den som en fil.

>>> 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

>>>

Det finns en fjärde parameter flush som med våld kommer att spola strömmen.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow