我對編程真的很陌生,所以如果這是一個非常愚蠢的問題,請不要感到被冒犯:)。我了解到只有 None 可以是 None。然后在鍛煉時我遇到了這個:
將字串相乘當然會回傳一個字串 - 但是當列印它時,回傳時不帶 '
'9' * 5 -> # '99999'
print('9' * 5) # 99999
我想知道它可能是什么型別,所以我試圖找出 - 它給出了這個結果:
def printer(y): # printer('9' * 5)
y = print(y) # 99999
d = y
print(d) # None
return type(y) # NoneType
我正在使用 Python 3.8.8
uj5u.com熱心網友回復:
該print()函式不回傳任何值,因此當你這樣做時
y = print(y)
你得到y = None. None只是用來定義一個空值。
順便說一句,您可以None通過簡單地獲得型別
print(type(None))
輸出:
<class 'NoneType'>
uj5u.com熱心網友回復:
第一個誤解:
您在解釋器中運行時看到的內容與您'9' * 5在解釋器中看到的內容不同,print('9' * 5)因為其中一個包含在單引號中,而另一個則沒有。
您只是看到了同一種物件的兩種不同表示形式——一個字串。僅僅因為它周圍沒有單引號,print并不意味著它突然變成了不同的型別。當您print將字符發送到 STDOUT 管道以便以人性化的方式顯示時,自然不會顯示僅在源代碼背景關系中有意義的單引號。
第二個誤解:
print通過將結果系結到變數,然后檢查其型別,您將能夠捕獲這個神秘的未參考字串的“型別” 。
print總是回傳None。它只對它的主要副作用有用,即將東西列印到 STDOUT。
uj5u.com熱心網友回復:
也許這可能會有所幫助:
'9' * 5
- 在 repl 控制臺中,下一行是 --> '99999'
- 在程式中沒有顯示或存盤任何內容
print('9' * 5)
- 在這兩種情況下,顯示的下一行都是 --> 99999
y = '9' * 5
- 在這兩種情況下都沒有“輸出”,但變數 y 設定為字串“99999”
def foo(i):
print(i*2)
return "hi"
x = foo(1)
- 在這兩種情況下,顯示的下一行都是 --> 2
- 在這兩種情況下,呼叫函式“回傳”的結果都分配給變數 x
- x 被分配了字串“hi”
def foo(i):
print(i*2)
x = foo(1)
- 在這兩種情況下,下一行都是 --> 2
- 在這兩種情況下,呼叫函式“回傳”的結果都分配給變數 x
- x 被賦值
None為在沒有像前面的例子那樣顯式回傳的情況下在這里隱式回傳
x = print(2)
## and by extension
def foo(i):
return print(i*2)
x = foo(1)
- 在所有情況下,顯示的下一行都是 --> 2
- 在所有情況下,呼叫函式“回傳”的結果都分配給變數 x
- 記住這與顯示的內容無關......
- 在所有情況下,x 都被賦值
None。
牢記以上所有內容:
y = '9' * 5
x = print(y)
print(x)
- 顯示的下一行是 --> 99999
- 之后顯示的行是 --> None
- 無論顯示什么,
print(y)總是會回傳該值,因此已分配。當我們在控制臺上得到文本“None”時。NonexNoneprint(None)
uj5u.com熱心網友回復:
字串的每一端都不包含'or "。這只是向 Python 顯示字串在哪里開始或停止的語法。要在字串中包含引號,您需要自己添加引號:
# these all print the same thing:
print('I said "hello" to you')
print("I said \"hello\" to you")
print("""I said "hello" to you""")
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/427431.html
標籤:Python python-3.x 无类型
上一篇:安裝額外軟體包時請求失敗
