Python基礎學習總結(一)
1、變量和數據類型
1.1變量
1.每個變量都存儲了一個值——與變量相關聯的信息。
2.變量不僅可以為整數或浮點數,還可以是字符串,可以是任意數據類型。
1.1.1變量的命名和使用
變量名只能包含字母、數字和下劃線,且數字不能打頭。變量名不能包含空格,但可以使用下劃線間隔。不能把python關鍵字和函數名作為變量名。變量名應既簡短又具有描述性。慎用小寫字母l和大寫字母O,因為它們可能被人錯看成數字1和0。
1.1.2使用變量時避免命名錯誤
出現錯誤時解釋器會提供一個traceback(回溯)。Traceback是一條記錄,指出了什麽地方陷入困境。
1.2字符串str
1.字符串就是一系列字符。是一種數據類型,在Python中用引號
2.Unicode標準也在不斷發展,但最常用的是用兩個字節表示一個字符(如果要用到非常偏僻的字符,就需要4個字節)。現代操作系統和大多數編程語言都直接支持Unicode。把Unicode編碼轉化為“可變長編碼”的UTF-8編碼。
3.Python對bytes類型的數據用帶b前綴的單引號或雙引號表示:x = b‘ABC‘。以Unicode表示的str通過encode()方法可以編碼為指定的bytes。
‘ABC‘.encode(‘ascii‘) b‘ABC |
反過來,如果我們從網絡或磁盤上讀取了字節流,那麽讀到的數據就是bytes。要把bytes變為str,就需要用decode()方法:
b‘ABC‘.decode(‘ascii‘) ‘ABC |
4. 對於單個字符的編碼,Python提供了ord()函數獲取字符的整數表示,chr()函數把編碼轉換為對應的字符:
>>> ord(‘A‘) 65 >>> ord(‘中‘) 20013 >>> chr(66) ‘B‘ >>> chr(25991) ‘文‘ |
5.要計算str包含多少個字符,可以用len()函數,len()函數計算的是str的字符數,如果換成bytes,len()函數就計算字節數。可見,1個中文字符經過UTF-8編碼後通常會占用3個字節,而1個英文字符只占用1個字節。
1.2.1對字符串的操作
1.方法是Python可對數據執行的操作。
2.title()以首字母大寫的方式顯示每個單詞,即將每個單詞的首字母都改為大寫。
3.upper()將字符串改為全部大寫。lower()將字符串改為全部小寫。
4.如果字符串至少有一個字母,並且所有字母都是大寫或小寫,isupper()和 islower()方法就會相應地返回布爾值 True。否則,該方法返回 False。
5.salpha()返回 True,如果字符串只包含字母,並且非空;
6.isalnum()返回 True,如果字符串只包含字母和數字,並且非空;
7.sdecimal()返回 True,如果字符串只包含數字字符,並且非空;
8.sspace()返回 True,如果字符串只包含空格、制表符和換行,並且非空;
9.istitle()返回 True,如果字符串僅包含以大寫字母開頭、後面都是小寫字母的單詞。
10.startswith()和 endswith()方法返回 True,如果它們所調用的字符串以該方法傳入 的字符串開始或結束。否則,方法返回 False。
11.join()方法在一個字符串上調用,參數是一個字符串列表,返回一個字符串。
>>> ‘, ‘.join([‘cats‘, ‘rats‘, ‘bats‘]) ‘cats, rats, bats‘ >>> ‘ ‘.join([‘My‘, ‘name‘, ‘is‘, ‘Simon‘]) ‘My name is Simon‘ >>> ‘ABC‘.join([‘My‘, ‘name‘, ‘is‘, ‘Simon‘]) ‘MyABCnameABCisABCSimon‘ |
12.split()方法做的事情正好相反:它針對一個字符串調用,返回一個字符串列表。也可以向split()方法傳入一 個分割字符串,指定它按照不同的字符串分割。
>>> ‘My name is Simon‘.split() [‘My‘, ‘name‘, ‘is‘, ‘Simon‘] |
13.rjust()和 ljust()字符串方法返回調用它們的字符串的填充版本,通過插入空格來 對齊文本。這兩個方法的第一個參數是一個整數長度,用於對齊字符串。rjust()和 ljust()方法的第二個可選參數將指定一個填充字符,取代空格字符。
>>> ‘Hello‘.rjust(20, ‘*‘) ‘***************Hello‘ >>> ‘Hello‘.ljust(20, ‘-‘) ‘Hello---------------‘ |
14.center()字符串方法與 ljust()與 rjust()類似,但它讓文本居中,而不是左對齊或右對齊。
15.sort()將字符串排序。
16.請務必註意,Python程序是大小寫敏感的,如果寫錯了大小寫,程序會報錯。
17.合並——Python使用加號+來合並字符串
|
18.可以在字符串開始的引號之前加上 r,使它成為原始字符串。 “原始字符串”完 全忽略所有的轉義字符,打印出字符串中所有的倒斜杠。
>>> print(r‘That is Carol\‘s cat.‘) That is Carol\‘s cat. |
19.刪除空白:方法rstrip()右 lstrip()左 strip()兩邊
20. 語法錯誤:是一種時不時會遇到的錯誤,在用單引號括起的字符串中,如果包含撇號,就將導致錯誤。雙引號不會。
21.Print() 打印,逗號會空一格。
22.pyperclip 模塊有 copy()和 paste()函數,可以向計算機的剪貼板發送文本,或從 它接收文本。
23.字符串有個replace()方法
>>> a = ‘abc‘ >>> a.replace(‘a‘, ‘A‘) ‘Abc‘ |
1.2.2空值
空值是Python裏一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。
1.2.3常量
常量就是不能變的變量,比如常用的數學常數π就是一個常量。在Python中,通常用全部大寫的變量名表示常量:PI = 3.14159265359
1.2.4賦值
在Python中,等號=是賦值語句,可以把任意數據類型賦值給變量,同一個變量可以反復賦值,而且可以是不同類型的變量:
a = 123 # a是整數 print(a) a = ‘ABC‘ # a變為字符串 print(a) |
賦值語句:a, b = b, a + b
t = (b, a + b) # t是一個tuple a = t[0] b = t[1] |
1.2.5格式化
Python中格式化有兩種,第一種用%實現,第二種{ } format格式。
‘Hello, %s‘ % ‘world’ |
% 運算符就是用來格式化字符串的。在字符串內部,%s表示用字符串替換,%d表示用整數替換,有幾個%?占位符,後面就跟幾個變量或者值,順序要對應好。如果只有一個%?,括號可以省略。常用占位符:
%d 整數 %f 浮點數 %s 字符串 %x 十六進制整數 |
其中,格式化整數和浮點數還可以指定是否補0和整數與小數的位數:
>>> ‘%2d-%02d‘ % (3, 1) ‘ 3-01‘ >>> ‘%.2f‘ % 3.1415926 ‘3.14‘ |
如果你不太確定應該用什麽,%s永遠起作用,它會把任何數據類型轉換為字符串。
有些時候,字符串裏面的%是一個普通字符,需要轉義,用%%來表示一個 % 。
第二種格式化方法,format,通過 {} 來代替 % 。
1、正常使用
>>> print("我叫{},今年{}歲了".format("小李", 20)) 我叫小李,今年20歲了 |
2、還可以通過在括號裏填寫數字,修改格式化的順序
>>> print("我叫{1},今年{0}歲了".format("小李", 20)) 我叫20,今年小李歲了 |
3、通過key取變量
>>> print("我叫{name},今年{age}歲了".format(name="小李", age=20)) 我叫小李,今年20歲了 |
1.2.6轉義字符
空白——泛指任何非打印字符,如空格、制表符和換行符。
轉義字符\可以轉義很多字符 \t 制表符 \n 換行
字符\本身也要轉義,所以\\表示的字符就是\
如果字符串裏面有很多字符都需要轉義,Python中可以用r‘‘表示‘‘內部的字符串默認不轉義:
>>> print(‘\\\t\\‘) \ \ >>> print(r‘\\\t\\‘) \\\t\\ |
1.3數字
1.3.1整數 int
可以進行四則運算。
計算機由於使用二進制,所以,有時候用十六進制表示整數比較方便,十六進制用0x前綴和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等。
整數的除法是精確的。在Python中,有兩種除法,一種除法是/ , /除法計算結果是浮點數,即使是兩個整數恰好整除,結果也是浮點數。還有一種除法是//,稱為地板除,兩個整數的除法仍然是整數。
% 取余數。
1.3.2浮點數float
Python將帶小數的數字都稱為浮點數,之所以稱為浮點數,是因為按照科學記數法表示時,一個浮點數的小數點位置是可變的,比如,1.23x109和12.3x108是完全相等的。
對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5,等。
1.3.3使用函數str()避免錯誤
數據類型檢查可以用內置函數isinstance()實現:
def my_abs(x): if not isinstance(x, (int, float)): raise TypeError(‘bad operand type‘) if x >= 0: return x else: return -x |
1.4註釋
1. 以#開頭的語句是註釋,註釋是給人看的,可以是任意內容,解釋器會忽略掉註釋。其他每一行都是一個語句,當語句以冒號:結尾時,縮進的語句視為代碼塊。
#。。。。。。 |
2.由於Python源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務必指定保存為UTF-8編碼。當Python解釋器讀取源代碼時,為了讓它按UTF-8編碼讀取,我們通常在文件開頭寫上這兩行:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- |
3.文檔字符串的註釋 ””” ”””
1.5Python之禪
The Zen of Python, by Tim Peters
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren‘t special enough to break the rules.
- Although practicality beats purity.
- Errors should never pass silently.
- Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one-- and preferably only one --obvious way to do it.
- Although that way may not be obvious at first unless you‘re Dutch.
- Now is better than never.
- Although never is often better than *right* now.
- If the implementation is hard to explain, it‘s a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- Namespaces are one honking great idea -- let‘s do more of those!
Python基礎學習總結(一)