沒想到吧?這個本已經宣告終結的的系列今天又開始恢複更新。
明哥,你是不是zha屍了?
是這樣的,最近又搜集了幾個還不錯的冷知識,急着與朋友們分享,就開始了 wa 墳了。
肯定有不少人,已經忘了以前寫了些啥,這前六篇傳送門明給你準備好了,還沒閱讀的可以學習一下。
還是老規矩,
一篇隻分享五個
,有時間了就整理
31
不能使用單\結尾
是轉義字元,可以将普通字元轉化為有特殊含義的字元。
'\nhello' #換行
>>> print(str1)
hello
>>> str2=
'\thello' #tab
>>> print(str2)
hello
但是如果你用單
\
結尾是會報文法錯誤的
"\"
File "<stdin>
", line 1
str3="\
"
^
SyntaxError: EOL while scanning string literal
就算你指定它是個 raw 字元串,也不行。
r"\"
File "<stdin>
", line 1
str3=r"\
"
^
SyntaxError: EOL while scanning string literal
32
換行符分割技巧
具體看示例就明白了,這應該算是小技巧。
"a\nb\n"
>>> print(str)
a
b
>>> str.split(
'\n')
[
'a',
'b',
'']
>>>
>>>
>>> str.splitlines()
[
'a',
'b']
33
嵌套上下文管理器的另類寫法
當我們要寫一個嵌套的上下文管理器時,可能會這樣寫
import contextlib
@contextlib.contextmanager
def test_context(name):
print(
'enter, my name is {}'.format(name))
yield
print(
'exit, my name is {}'.format(name))
with test_context(
'aaa'):
with test_context(
'bbb'):
print(
'========== in main ============')
輸出結果如下
is aaa
enter, my name
is bbb
==========
in main ============
exit, my name
is bbb
exit, my name
is aaa
除此之外,你或許不知道,它還有另一種更加簡潔的寫法
with test_context(
'aaa'), test_context(
'bbb'):
print(
'========== in main ============')
34
+= 并不等同于 =+
對清單 進行
+=
操作相當于 extend,而使用
=+
操作是新增了一個清單。
是以會有如下兩者的差異。
# =+
>>> a = [
1,
2,
3,
4]
>>> b = a
>>> a = a + [
5,
6,
7,
8]
>>> a
[
1,
2,
3,
4,
5,
6,
7,
8]
>>> b
[
1,
2,
3,
4]
# +=
>>> a = [
1,
2,
3,
4]
>>> b = a
>>> a += [
5,
6,
7,
8]
>>> a
[
1,
2,
3,
4,
5,
6,
7,
8]
>>> b
[
1,
2,
3,
4,
5,
6,
7,
8]
35
Python 也可以有 end
有不少程式設計語言,循環、判斷代碼塊需要用 end 标明結束(比如 Shell),這樣一定程式上會使代碼邏輯更加清晰一點,其實這種文法在 Python 裡并沒有必要,但如果你想用,也不是沒有辦法,具體你看下面這個例子。

···END···