[英]Python: What is the difference between these two import statements?
它們在功能上對我來說都是一樣的。 使用一個在另一個上有任何差異和優勢嗎?
>>> from datetime import datetime, timedelta
>>> from datetime import (datetime, timedelta)
如果在parens中包裝導入,如果在import語句中放置換行符,則不必使用反斜杠進行換行,這是首選樣式。 從功能上講,它們是相同的,如果在一條線上,那么將它們排除在外是更清潔的。
兩者都是一樣的:
In [17]: import dis
In [18]: def func1():
....: from datetime import datetime, timedelta
....:
In [19]: def func2():
....: from datetime import (datetime, timedelta)
....:
In [20]: dis.dis(func1)
2 0 LOAD_CONST 1 (-1)
3 LOAD_CONST 2 (('datetime', 'timedelta'))
6 IMPORT_NAME 0 (datetime)
9 IMPORT_FROM 0 (datetime)
12 STORE_FAST 0 (datetime)
15 IMPORT_FROM 1 (timedelta)
18 STORE_FAST 1 (timedelta)
21 POP_TOP
22 LOAD_CONST 0 (None)
25 RETURN_VALUE
In [21]: dis.dis(func2)
2 0 LOAD_CONST 1 (-1)
3 LOAD_CONST 2 (('datetime', 'timedelta'))
6 IMPORT_NAME 0 (datetime)
9 IMPORT_FROM 0 (datetime)
12 STORE_FAST 0 (datetime)
15 IMPORT_FROM 1 (timedelta)
18 STORE_FAST 1 (timedelta)
21 POP_TOP
22 LOAD_CONST 0 (None)
25 RETURN_VALUE
@ sr2222答案的補充。 通常,如果要繼續在下一行寫入,則只需要這些括號。 例如,您可以使用括號在以下兩種方式中在兩行上聲明字符串:
In [1]: s1 = 'abc' \
...: 'def'
In [2]: s1
Out[2]: 'abcdef'
In [3]: s2 = ('abc'
...: 'def')
In [4]: s2
Out[4]: 'abcdef'
例如,if語句也是如此。 使用括號將表達式拆分為多行:
In [6]: if 1 in \
...: [1,2,3]:
...: pass
In [7]: if (1 in
...: [1,2,3]):
...: pass
兩個版本的功能相同。 但是使用括號而不是反斜杠是一種更好的風格。 導入語句也是如此。 如果整個表達式適合一行,則根本不需要括號。
不,沒有任何區別 。 逗號和括號是元組文字的通用Python語法。 你可能會在任何地方看到它 正如您所發現的,語法有兩種變體,因為括號是可選的。 兩種選擇都返回相同的值:
>>> 4,5
(4, 5)
>>> (4,5)
(4, 5)
但是在一些更復雜的上下文中,解析器以不同的方式理解逗號,因此如果你真的想要一個元組,就必須使用括號。 例如, f(3,4)
不等於f((3,4))
。
請參閱http://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange和http://docs.python.org/上的文檔。 2 / reference / grammar.html (hardcore)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.