[oeasy]python0135_變量名與下劃線_dunder_聲明與賦值
變量定義
回憶上次內(nèi)容
變量 就是 能變的量
上次研究了 變量標(biāo)識(shí)符的 規(guī)則
大小寫字母
數(shù)字
下劃線
第一個(gè)字符 應(yīng)該是 字母或下劃線
合法的標(biāo)識(shí)符可以包括
還研究了字符串(str)的函數(shù)
是否為合法標(biāo)識(shí)符
isidentifier
查詢字符串
最后發(fā)現(xiàn)
這個(gè)isidentifier函數(shù)有時(shí)候不好使?

這怎么理解呢????
翻看文檔
and 屬于關(guān)鍵字

如何判斷一個(gè)字符串是否是關(guān)鍵字呢?

判斷是否為關(guān)鍵字

關(guān)鍵字 是不能作為標(biāo)識(shí)符的
dir()查詢模塊的時(shí)候
經(jīng)常會(huì)看到下劃線

這些下劃線如何理解?
下劃線
from module import * 時(shí)
不被其他模塊引用
以下劃線開頭的變量

所以 _a 可以作為模塊內(nèi)部的變量或者函數(shù)
內(nèi)部變量
除非明確點(diǎn)名

指清名字 _pi
是可以導(dǎo)入的
不點(diǎn)名不能用嗎?
不點(diǎn)名

from random import *
無法導(dǎo)入_e

上次的值
在游樂場(chǎng)里
_下劃線 意味著上次的值

后面的下劃線
在后面加上下劃線
一般是為了區(qū)分已經(jīng)有的標(biāo)識(shí)符

使用max
會(huì)把max函數(shù) 屏蔽掉
使用max_
不會(huì)屏蔽 max函數(shù)
兩端雙下劃線(dunder)

系統(tǒng)定義的標(biāo)識(shí)符
模塊名
函數(shù)名
變量名

dunder變量都是有用意的
不要輕易破壞
前有雙下劃線
類里面的私有名
無法直接存取
目的是
避免 和 父類或子類的私有變量 重名

我們?cè)賮砜纯?o 這個(gè)變量標(biāo)識(shí)符
細(xì)節(jié)
o
兩邊并不加引號(hào)如果加了雙引號(hào) 就是字符串了
因?yàn)?這里的
o
是 變量標(biāo)識(shí)符而不是 字符串

在等號(hào)兩端 都保留 有一個(gè)空格
可是 為什么要 加空格呢?
可讀性
增加文檔的可讀性
這
不會(huì)
影響程序的執(zhí)行速度

這兩句話從何說起
加空格的原因
這兩句話來自于python之禪

現(xiàn)在到底有多少變量呢?
locals()
查詢本地變量
有一個(gè)內(nèi)置的函數(shù)叫做 locals

可以查詢關(guān)于 locals 的幫助

返回的是一個(gè)包含當(dāng)前域中所有變量的字典
聲明和賦值都使用等號(hào)
聲明并賦值 變量o 之后
變量o 真的在內(nèi)存里有位置了么?
我們來看看
具體位置

id函數(shù)是什么意思?
help(id)
id返回 對(duì)象o的標(biāo)識(shí)符
但是如果 我們給變量新賦 一個(gè)值
o 確實(shí)在內(nèi)存中 有了位置
那么 存儲(chǔ)變量的位置
還是那個(gè) 內(nèi)存地址 么?
實(shí)踐
雖然 a這個(gè)變量名 沒有變
但是 id(a)變了
也就是說
在內(nèi)存中的位置 變了
a這個(gè)容器的 內(nèi)存位置沒變
但是a所指向的 變量位置
兩次賦值 都是STORE到a這個(gè)NAME里面
有什么區(qū)別嗎?
第二次賦值 和 第一次賦值
區(qū)別
變量的聲明和賦值究竟有什么不同
聲明和賦值是同時(shí)完成的
第一次賦值時(shí)
如果是 第二次賦值 呢?
純賦值
聲明了之后
再有 等號(hào)賦值 就是 第二次賦值
是 純賦值
沒有聲明新的變量
總結(jié)
這次 了解了isidentifier的細(xì)節(jié)
關(guān)于 關(guān)鍵字
關(guān)于 下劃線
如何查詢 變量所指向的地址?
id
如何查詢 已有的各種變量?
locals
如果 用一個(gè)變量a的值
給另一個(gè)變量b 賦值
是什么樣的過程 呢????
我們下次再說!??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython