《瘋狂Python講義》重要筆記--變量


一個Python解釋器

接下來的旅程——你需要下載好Python,Python解釋器通常放在 /usr/local/bin/python3.7 ; 在Unix系統的bash中輸入 where python3 

 

在 Windows 機器上, Python 安裝通常放在 C:\Python37 中,盡管你可以在運行安裝程序時更改此設置。要將此目錄添加到路徑中,可以將以下命令鍵入 命令提示符窗口:

 set path=%path%;C:\python37 

把 /usr/local/bin 放到你 Unix shell 的搜索路徑當中 , 這樣就能鍵入命令 python3 ,進入交互模式(interactive mode),如下:

 

 

 變量

變量就像一個容器,方便存儲數據。常量也可以用於存儲數據。根據名字可以區分兩者的區別:常量保存數據不能更改,變量可以多次更改。

把計算機當做一棟房子,變量就像在這棟房子中的一間房間,擁有自己的地址(id)。變量名就像是房間號,房間的類型就像是變量的類型(type)。

>>> a = 'name'
>>> id(a)
4564940088
>>> type(a)
<class 'str'>
>>> 

 

Python是弱類型語言:

  1. 變量無須聲明即可直接賦值:對一個不存在的變量賦值就相當於定義了一個新變量。
  2. 變量的數據類型可以動態改變:同一個變量可以一會兒被賦值為整數值,一會兒被賦值為字符串。

如果一個變量未定義(未賦值),試圖使用它時會向你提示錯誤:

 

print函數輸出變量

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

 print() 的語法格式如上:

  • *object 代表可以接受不同的對象、任意多個變量或值,因此print()函數完全可以輸出多個值。例如:
>>> user_name = 'Alice'
>>> user_age = '18'
>>> print('女豬腳:', user_name, '的年齡永遠:', user_age)
女豬腳: Alice 的年齡永遠: 18
  • sep參數(取自英文單詞separate)代表分隔符,print()函數默認分隔符為空格,用戶可以自定義設置,例如:
>>> print('女豬腳:', user_name, '的年齡永遠:', user_age, sep='-*-')
女豬腳:-*-Alice-*-的年齡永遠:-*-18
  • end參數的默認值為'\n','\n'代表了換行。如果希望print()函數輸出之后不會換行,用戶可以重設end參數,例如:
>>> print(1);print(2);print(3)
1
2
3
>>> print(1, end='');print(2, end='^*^');print(3,end='oh')
12^*^3oh
  • file參數指定print()函數的輸出目標,file參數的默認值為sys.stdout,該默認值代表了系統標准輸出,也就是屏幕,因此print()函數默認輸出到屏幕。

實際上,完全可以通過改變該參數讓print()函數輸出到指定文件。(這一點好像用的不多,等學了IO模塊我們再看看例子吧。)

  • flush參數用於控制輸出緩存,該參數一般保持為False即可,這樣可以獲得較好的性能。

print()函數會生成可讀性更強的輸出,即略去兩邊的引號,並且打印出經過轉義的特殊字符:

動手試試:

>>> s = 'First line.\nSecond line.'  # \n means newline
>>> s  # without print(), \n is included in the output
'First line.\nSecond line.'
>>> print(s)  # with print(), \n produces a new line
First line.
Second line.

變量的命名規則

Python需要使用標識符給變量命名,標識符就是給程序中的變量、類、方法命名的符號(簡單來說,標識符就是合法的名字)

  1. 標識符可以由字母、數字、下划線(_)組成,不能以數字開頭
  2. 標識符不能是Python關鍵字,但可以包含關鍵字
  3. 標識符不能包含空格

Python的關鍵字和內置函數

Python還包含一系列關鍵字和內置函數,一般不建議使用它們作為變量名。

  • 使用Python關鍵字作為變量名,Python解釋器會報錯
  • 使用內置函數的名字作為變量名,Python解釋器不會報錯,只是改內置函數就被這個變量覆蓋了,該內置函數就不能再使用了。

利用Python程序查看它所包含的關鍵字

>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 
'and', 'as', 'assert', 'async', 
'await', 'break', 'class', 'continue', 
'def', 'del', 'elif', 'else', 
'except', 'finally', 'for', 'from', 
'global', 'if', 'import', 'in', 
'is', 'lambda', 'nonlocal', 'not', 
'or', 'pass', 'raise', 'return', 
'try', 'while', 'with', 'yield']

 

Python 的內置函數和類型。以下按字母表順序列出它們。

   

內置函數

   

abs()

delattr()

hash()

memoryview()

set()

all()

dict()

help()

min()

setattr()

any()

dir()

hex()

next()

slice()

ascii()

divmod()

id()

object()

sorted()

bin()

enumerate()

input()

oct()

staticmethod()

bool()

eval()

int()

open()

str()

breakpoint()

exec()

isinstance()

ord()

sum()

bytearray()

filter()

issubclass()

pow()

super()

bytes()

float()

iter()

print()

tuple()

callable()

format()

len()

property()

type()

chr()

frozenset()

list()

range()

vars()

classmethod()

getattr()

locals()

repr()

zip()

compile()

globals()

map()

reversed()

__import__()

complex()

hasattr()

max()

round()

 

 


 

附知識:三種程序設計中命名規則

一、匈牙利命名法

廣泛應用於Microsoft Windows這類環境中。這種命名技術是由一位能干的 Microsoft 程序員查爾斯·西蒙尼(Charles Simonyi) 提出的。

匈牙利命名法通過在變量名前面加上相應的小寫字母的符號標識作為前綴,標識出變量的作用域,類型等。這些符號可以多個同時使用,順序是先m_(成 員變 量),再指針,再簡單數據類型,再其他。例如:m_lpszStr, 表示指向一個以0字符結尾的字符串的長指針成員變量。
匈牙利命名法關鍵是:標識符的名字以一個或者多個小寫字母開頭作為前綴;前綴之后的是首字母大寫的一個單詞或多個單詞組合,該單詞要指明變量的用途。
例如:bEnable, nLength, hWnd。

匈牙利命名法中常用的小寫字母的前綴:

前綴 類型 描述
a Array 數組
b Bool  布爾
p Point 指針

 

 

 

 

 

二、駝峰命名法

駝峰命名法,正如它的名稱所表示的那樣,指的是混合使用大小寫字母來構成標識符的名字。其中第一個單詞首字母小寫,余下的單詞首字母大寫。例如:

printEmployeePaychecks();

函數名中每一個邏輯斷點都有一個大寫字母來標記。


三、帕斯卡(Pascal)命名法:

與駝峰命名法類似。
只不過駝峰命名法是第一個單詞首字母小寫,而帕斯卡命名法則是第一個單詞首字母大寫。因此這種命名法也有人稱之為“大駝峰命名法”。
例如:
DisplayInfo();
UserName
都是采用了帕斯卡命名法。
在C#中,以帕斯卡命名法和駱駝命名法居多。
事實上,很多程序設計者在實際命名時會將駝峰命名法和帕斯卡結合使用,例如變量名采用駝峰命名法,而函數采用帕斯卡命名法。

四、下划線命名法

下划線法是隨着C語言的出現流行起來的,在UNIX/LIUNX這樣的環境,以及GNU代碼中使用非常普遍。

4.1 函數的命名

函數名使用下划線分割小寫字母的方式命名:
設備名_操作名();

操作名一般采用:謂語(此時設備名作為賓語或者標明操作所屬的模塊)或者謂語 賓語/表語(此時設備名作為主語或者標明操作所屬的模塊) 等形式,如:

tic_init();
adc_is_busy();
uart_tx_char();


中斷函數的命名直接使用 設備名_isr() 的形式命名,如:

timer2_isr();

 

4.2 變量的命名

變量的命名也采用下划線分割小寫字母的方式命名。命名應當准確,不引起歧義,且長度適中。如:

int length;
uint32 test_offset;
  • 單字符的名字也是常用的,如i,j,k等,它們通常可用作函數內的局部變量。tmp常用做臨時變量名。
  • 局部靜態變量,應加s_詞冠(表示static),如:
static int s_lastw;
  • 全局變量(尤其是供外部訪問的全局變量),應加g_詞冠(表示global),如:
void (* g_capture_hook)(void);

 

4.3 常量及宏的命名

采用下划線分割大寫字母的方式命名,一般應以設備名作為前綴,防止模塊間命名的重復。如:

#define TIMER0_MODE_RELOAD 2
#define TIMER2_COUNT_RETRIEVE(val) ((uint16)(65536 - (val)))

當然,看作接口的宏可以按照函數的命名方法命名,例如:

#define timer2_clear() (TF2 = 0)
#define timer0_is_expired() (TF0)

 據考察,沒有一種命名規則可以讓所有的程序員贊同,程序設計教科書一般都不指定命名規則。

命名規則對軟件產品而言並不是“成敗悠關”的事,我們不要化太多精力試圖發明世界上最好的命名規則,而應當制定一種令大多數項目成員滿意的命名規則,並在項目中貫徹實施。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM