Python3 基礎知識整理

Part I: 安裝和使用Anaconda

1. What and Why Anacanda?

Anaconda是包管理器和環境管理器

(1)附帶很多常用科學數據包;

(2)可以更好的管理包,包括安裝、卸載和更新包。

(3)可以幫助管理環境。

2. 安裝中的常見問題:

zhuanlan.zhihu.com/p/34

3. 管理包:

安裝包conda install package_name: conda install pandas

同時安裝多個包:conda install pandas numpy

安裝指定的版本號:conda install numpy=1.10

conda還會自動為你安裝依賴項

卸載包:

conda remove package_names: conda remove pandas

更新包:

conda update package_name: conda update --all

列出已經安裝的包:

conda list

如果不知道要找的包的確切名稱,可以嘗試使用conda search search_term進行搜索。

4. 管理環境:

(1)安裝nb_conda用於notebook自動關聯nb_conda的環境

(2)創建環境:conda create -n env_name package_names [=version]

(3)進入環境:activate my_env

(4)離開環境: deactivate

(5)共享環境:

導出環境:conda env export > environment.yaml

進入環境:activate env_name.

更新環境:conda env update -f=/path/to/environment.yml

(6)列出環境: conda env list; 默認環境root, 當前環境*.

(7)刪除環境:conda env remove -n env_name

5. Conda官方文檔:conda.io/docs/user-guid

Part II: 安裝和使用Jupyter Notebook

1. What and Why

Jupyter notebook 可以將數據分析的代碼、圖像和文檔全部組合到一個web文檔中。

2. 安裝:conda/pip install jupyter notebook

安裝常見問題:zhuanlan.zhihu.com/p/34

3. 啟動: jupyter notebook

4. 使用:

(1) prerequistiion:

安裝環境自動關聯包:conda install nb_conda

安裝代碼自動補全包: conda install pyreadline

(2)自動補全:定義變數的cell運行以後,notebook才能識別。

(3) 共享:

客戶:HTML

項目:Python

知乎:Markdown

Part III: Python基礎

1. Python 3基礎語法:

(1)Python 3放棄了向下兼容。

(2)編碼:源碼文件以UTF-8編碼 ,字元串是unicode形式 。

(3)標識符:

第一個字元必須是字母表中字母或下劃線 _ 。

標識符的其他的部分由字母、數字和下劃線組成。

標識符對大小寫敏感。

(4)保留字:

import keyword

keyword.kwlist

(5)注釋:

單行:#

多行:多個#, , .

(6)行與縮進:縮進的空格數是可變的,但是同一個代碼塊的語句必須包含相同的縮進空格數。

(7)同一條語句顯示在多行:使用來實現多行語句,也可以使用 """...""" 或者 ... 跨越多行。 在 [], {}, 或 () 中的多行語句,不需要使用反斜杠()。

(8)同一行顯示多條語句:用分號;分割。

(9)空行: 函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。

(10)等待用戶輸入:

input("

按下 enter鍵後退出。")

以上代碼中 ,"

"在結果輸出前會輸出兩個新的空行。一旦用戶按下 enter 鍵時,程序將退出。

(11)代碼組:

縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。

像if、while、def和class這樣的複合語句,首行以關鍵字開始,以冒號( : )結束,該行之後的一行或多行代碼構成代碼組。

我們將首行及後面的代碼組稱為一個子句(clause)。

(12)運算符:

算數運算符:+ - * / % ** //

比較運算符:== !<> > < >= <=

賦值運算符:= += -+ *= /= %= **= //=

位運算符:& | ^ ~ << >>

邏輯運算符: and or not

成員運算符:in not in

(13)變數:Python 中的變數就是變數,沒有類型,我們所說的"類型"是變數所指的內存中對象的類型,故python中的變數不需要聲明。變數賦值以後就會被創建。

多變數賦值: a = b = c = 1

a, b, c = 1, 2, "runoob"

(14)print輸出: print輸出是換行的,如果要實現不換行需要在變數末尾加上 end=" ".

(15)標準數據類型:

· Number(數字)- 不可變

· String(字元串)- 不可變

· List(列表) - 可變

· Tuple(元組)- 不可變

· Sets(集合)- 不可變

· Dictionary(字典)- 可變

2. Number:

(1)int(long int)、float、bool、complex

(2)type and isinstance

type: print(type(a))

isinstance: isinstance(a,int)

區別: type()不會認為子類是一種父類類型。 isinstance()會認為子類是一種父類類型。

class A: pass

class B(A): pass

isinstance(B(), A) # returns True

type(B()) == A # returns False

(3) del

del var1[,var2[,var3[....,varN]]]]

del vardel var_a, var_b

(4) 常用函數:數學函數、隨機數函數、三角函數(略)。

(5) 數學常量:pi e

3. 字元串

(1)Python中的字元串用單引號()或雙引號(")括起來。

(2) 轉義符:使用反斜杠()轉義特殊字元,如果你不想轉義,可在字元串前面添加一個 r,表示原始字元串。

(3)用方括弧來截取字元串,索引值以 0 為開始值,-1 為從末尾的開始位置。

(4)字元串運算符: + * [] [:] in not in r/R

(5)字元串格式化: 最基本的用法是將一個值插入到一個有字元串格式符 %s 的字元串中。與C類似。

(6)python三引號允許一個字元串跨多行,字元串中可以包含換行符、製表符以及其他特殊字元。

(7)python字元串內建函數(略)。

4. 列表list:[a,b]

(1) 列表中元素的類型可以不相同,它支持數字,字元串甚至可以包含列表(所謂嵌套)。

(2)列表寫在方括弧([])之間、用逗號分隔開。

(3)列表索引值以 0 為開始值,-1 為從末尾的開始位置。

(4)列表操作:

基本:len + * in

迭代: for x in [1,2,3]: print(x, end=" ")

新增: append

修改:list_name[index]=

刪除元素 :del list_name[index]

刪除列表:del list_name[:]

(5)列表嵌套(類數組):

>>> a = [a, b, c]

>>> n = [1, 2, 3]

>>> x = [a, n]

>>> x

[[a, b, c], [1, 2, 3]]

>>> x[0]

[a, b, c]

>>> x[0][1]

b

(6)列表方法與函數(略)

(7)列表推導式:

常應用程序將一些操作應用於某個序列的每個元素,用其獲得的結果作為生成新列表的元素,或者根據確定的判定條件創建子序列。 >>> vec = [2, 4, 6]

>>> [3*x for x in vec]

[6, 12, 18]

>>> [3*x for x in vec if x > 3]

[12, 18]

>>> [3*x for x in vec if x < 2]

[]

5. 元組tuple:(a,b)

(1)元組元素寫在小括弧里,並用逗號分開。或者不用小括弧也可以。

>>> tup1 = (Google, Runoob, 1997, 2000);

>>> tup3 = "a", "b", "c", "d"; # 不需要括弧也可以

(2)元組索引值以 0 為開始值,-1 為從末尾的開始位置。

(3)元組操作:

基本:len + * in

迭代: for x in (1,2,3): print(x, end=" ")

更新: 不允許

刪除元素 :不允許

刪除元組: del tuple_name

創建空元組:tup1 = ();

元組中只包含一個元素時,需要在元素後面添加逗號,否則括弧會被當作運算符使用。

(4)元組內置函數(略)。

6. 集合set: {a,b}

(1)集合(set)是一個無序不重複元素的序列。基本功能是進行成員關係測試(a-b a|b a&b a^b) 和刪除重複元素。

print(a - b) # a和b的差集, 在a中不在b中 print(a | b) # a和b的並集,在a or b中 print(a & b) # a和b的交集,在a且在b中 print(a ^ b) # a和b中不同時存在的元素

(2)可以使用大括弧 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典。

創建格式:parame = {value01,value02,...}或者set(value)

(3)集合操作:

增加update:setname.update([騰訊,『阿里巴巴』,『京東』])

刪除discard: setname.discard(京東)

(4)集合推導式:

>>> a = {x for x in abracadabra if x not in abc} >>> a {r, d}

7. 字典dic:{key1:value1,key2:value2}

(1)字典的每個鍵值對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括弧({})中。

(2)鍵必須是唯一的,但值則不必。值可以取任何數據類型,但鍵必須是不可變的,如字元串,數字或元組。

(3)字典操作:

創建空字典:dic_name = {}

訪問:dict_name[key]

修改/增加:dict_name[key]=value

刪除鍵:del dict_name[key]

清空字典:dict.clear()

刪除字典: del dict_name

(4) 內置函數與方法:略。

(5) 字典推導式:

>>> {x: x**2 for x in (2, 4, 6)}{2: 4, 4: 16, 6: 36}

8. 條件控制: if - elif - else.

(1) 語法:

if condition_1:

statement_block_1

elif condition_2:

statement_block_2

else: statement_block_3

(2) if常用操作符: < <= > >= == !<> and or not

9. 循環語句:

(1) while 循環:

Note: Python中沒有do ... while循環。

1)語法:

while 判斷條件:

語句

2)無限循環:

使用 CTRL+C 來退出當前的無限循環。

3)while循環使用else語句:

count = 0

while count < 5:

print (count, " 小於 5")

count = count + 1

else:

print (count, " 大於或等於 5")

4)簡單語句組: 如果你的while循環體中只有一條語句,你可以將該語句與while寫在同一行中。

flag = 1

while (flag): print (歡迎訪問菜鳥教程!)

print ("Good bye!")

注意:以上的無限循環你可以使用 CTRL+C 來中斷循環。

歡迎訪問菜鳥教程!

歡迎訪問菜鳥教程!

……

(2)for循環:

1)語法:

for循環可以遍歷任何序列的項目,如一個列表或者一個字元串。

for <variable> in <sequence>:

<statements>

else:

<statements>

2) for 循環與range ()函數:

如果你需要遍曆數字序列,可以使用內置range()函數。它會生成數列。

可以使用range指定區間的值:

>>>for i in range(5,7) :

print(i)

5 6

也可以使range以指定數字開始並指定不同的增量(甚至可以是負數,有時這也叫做步長):

>>>for i in range(-10, -50, -30) :

print(I)

-10 -40

也可以結合range()和len()函數以遍歷一個序列的索引,如下所示:。

>>>a = [Google, Baidu, Runoob, Taobao, QQ]

>>> for i in range(len(a)):

... print(i, a[i])

...

0 Google

1 Baidu

2 Runoob

3 Taobao

4 QQ

還可以使用range()函數來創建一個列表:

>>>list(range(5))

[0, 1, 2, 3, 4]

3)for循環與pass語句: pass是空語句,是為了保持程序結構的完整性。

pass 不做任何事情,一般用做佔位語句。

for letter in Runoob:

if letter == o:

pass

print (執行 pass 塊)

print (當前字母 :, letter)

print ("Good bye!")

當前字母 : R

當前字母 : u

當前字母 : n

執行 pass 塊

當前字母 : o

執行 pass 塊

當前字母 : o

當前字母 : b

Good bye!

4)for循環的遍歷技巧

A: 在字典中遍歷時,關鍵字和對應的值可以使用items()方法同時解讀出來

>>> knights = {gallahad: the pure, robin: the brave}

>>> for k, v in knights.items():

... print(k, v)

...

gallahad the pure

robin the brave

B:在序列中遍歷時,索引位置和對應值可以使用 enumerate() 函數同時得到:

>>> for i, v in enumerate([tic, tac, toe]):

... print(i, v)

...

0 tic

1 tac

2 toe

C: 同時遍歷兩個或更多的序列,可以使用 zip() 組合:

>>> questions = [name, quest, favorite color]

>>> answers = [lancelot, the holy grail, blue]

>>> for q, a in zip(questions, answers):

... print(What is your {0}? It is {1}..format(q, a))

...

What is your name? It is lancelot.

What is your quest? It is the holy grail.

What is your favorite color? It is blue.

D: 要反向遍歷一個序列,首先指定這個序列,然後調用 reversed() 函數:

>>> for i in reversed(range(1, 6, 2)):

... print(i)

...

5

3

1

E: 要按順序遍歷一個序列,使用 sorted() 函數返回一個已排序的序列,並不修改原值:

>>> basket = [apple, orange, apple, pear, orange, banana]

>>> for f in sorted(set(basket)):

... print(f)

...

apple

banana

orange

pear

(3)for和while循環語句中的break和continue語句以及循環中的else子句。

break: 跳出整個循環體。如果你從 for 或 while 循環中終止,任何對應的循環 else 塊將不執行。 (下例:查找到蘋果即跳出循環,會列印 所有之前查找的紀錄及蘋果) number=0

gafataDict={騰訊:『HK:00700』,蘋果:Apple, 谷歌:『:GOOGLE』}

for key,value in gafataDict.items():

number=number+1

if (key==蘋果):

print(查找:,key, 公司的股票代碼:,value)

break

print(當前公司:,key, 當前股票代碼:,value)

當前公司:騰訊,當前股票代碼:HK:00700

查找:蘋果,公司的股票代碼:Apple

continue: 跳過當前循環塊中的剩餘語句,然後繼續進行下一輪循環。 (下例:查找到蘋果即跳出當前循環的 剩餘語句,繼續下一輪循環,會列印 所有之前查找的紀錄及之後查找的紀錄)

gafataDict={騰訊:『HK:00700』,『阿里巴巴』:『baba』, 蘋果:Apple, 谷歌:『:GOOGLE』}

for key,value in gafataDict.items():

if (key==蘋果):

continue

print(當前公司:,key, 當前股票代碼:,value)

當前公司:騰訊,當前股票代碼:HK:00700

當前公司:阿里巴巴,當前股票代碼:baba

當前公司:谷歌,當前股票代碼:GOOGLE

循環語句可以有 else 子句,它在窮盡列表(以for循環)或條件變為 false (以while循環)導致循環終止時被執行,但循環被break終止時不執行。

10. 函數

(1)內建函數和用戶自定義函數。

(2)函數定義:

def 函數名(參數列表):

函數體

(3)參數:

1)必須參數:必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。

2)關鍵字參數:使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 Python 解釋器能夠用參數名匹配參數值。

3)默認參數:

#可寫函數說明

def printinfo( name, age = 35 ):

"列印任何傳入的字元串"

print ("名字: ", name);

print ("年齡: ", age);

return;

#調用printinfo函數

printinfo( name="runoob" );

名字: runoob

年齡: 35

4)不定長參數:

def functionname([formal_args,] *var_args_tuple ):

"函數_文檔字元串"

function_suite

return [expression]

加了星號(*)的變數名會存放所有未命名的變數參數。

(4)參數傳遞:

不可變類型:類似 c++ 的值傳遞,如 整數、字元串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內部修改 a 的值,只是修改另一個複製的對象,不會影響 a 本身。

可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響。

(5)匿名函數:

python 使用 lambda 來創建匿名函數。lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間里的參數。

lambda [arg1 [,arg2,.....argn]]:expression。

(6)Return語句:

return [表達式] 語句用於退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None。

(7)變數作用域:

1) L / E / G / B

L (Local) 局部作用域

E (Enclosing) 閉包函數外的函數中

G (Global) 全局作用域

B (Built-in) 內建作用域

以 L –> E –> G –>B 的規則查找,即:在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內建中找。

x = int(2.9) # 內建作用域

g_count = 0 # 全局作用域

def outer():

o_count = 1 # 閉包函數外的函數中

def inner():

i_count = 2 # 局部作用域

2) Python 中只有模塊(module),類(class)以及函數(def、lambda)才會引入新的作用域,其它的代碼塊(如 if/elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這些語句內定義的變數,外部也可以訪問.

3) global和nonlocal關鍵字

以下實例修改全局變數 num:

num = 1

def fun1():

global num # 需要使用 global 關鍵字聲明

print(num)

num = 123

print(num)

fun1()

以上實例輸出結果:

1

123

如果要修改嵌套作用域(enclosing 作用域,外層非全局作用域)中的變數則需要 nonlocal 關鍵字了,如下實例:

def outer():

num = 10

def inner():

nonlocal num # nonlocal關鍵字聲明

num = 100

print(num)

inner()

print(num)

outer()

以上實例輸出結果:

100

100

另外有一種特殊情況,假設下面這段代碼被運行:

a = 10

def test():

a = a + 1

print(a)

test()

以上程序執行,報錯信息如下:

錯誤信息為局部作用域引用錯誤,因為 test 函數中的 a 使用的是局部,未定義,無法修改。

11. 數據結構:

集合(collections): 雙向鏈表queue (對列,棧)、排序字典 (OrderedDict) 、計數器 (Counter)

(1)隊列:先進先出(叫號系統)

入隊(隊列尾部,往隊列里添加元素):queue.append()

出隊(隊列首部 ,從隊列里刪除元素):queue.popleft()

將列表做隊列使用:(效率不高)

(2)堆棧:後進先出(網頁前進與後退)

入棧 (加入新的元素放在最上面):stack.appendleft()

出棧 (移出元素,移出最上面的元素,棧頂元素):stack.pop()

將列表做堆棧使用:

(3) 排序字典:

Python默認的字典鍵是無序的。

排序字典的鍵是按照插入順序來排序的 。

(4)計數器:

from collections import Counter

cDict=Counter(ABAABAABC)

cDict

Counter ({A:5,B:3,C:1})

cDict.most_common(2)

[A:5,B:3]

12. 模塊:

模塊是一個包含所有你定義的函數和變數的文件,其後綴名是.py。

(1)語句

1)import module1[, module2[,... moduleN]

2)from modname import name1[, name2[, ... nameN]]

3)from modname import *

(2)搜索路徑

一個模塊只會被導入一次,不管你執行了多少次import。 搜索路徑被存儲在sys模塊中的path變數。 >>> import sys

>>> sys.path

[, /usr/lib/python3.4, /usr/lib/python3.4/plat-x86_64-linux-gnu, /usr/lib/python3.4/lib-dynload, /usr/local/lib/python3.4/dist-packages, /usr/lib/python3/dist-packages]

sys.path 輸出是一個列表,其中第一項是空串,代表當前目錄(若是從一個腳本中列印出來的話,可以更清楚地看出是哪個目錄),亦即我們執行python解釋器的目錄(對於腳本的話就是運行的腳本所在的目錄)。

(3)深入模塊

模塊除了方法定義,還可以包括可執行的代碼。這些代碼一般用來初始化這個模塊,只有在第一次被導入時才會被執行

(4)__name__屬性

1) 一個模塊被另一個程序第一次引入時,其主程序將運行。如果我們想在模塊被引入時,模塊中的某一程序塊不執行,我們可以用__name__屬性來使該程序塊僅在該模塊自身運行時執行。

2) 每個模塊都有一個__name__屬性,當其值是__main__時,表明該模塊自身在運行,否則是被引入。主模塊的名字永遠是__main__.

3) __name____main__ 底下是雙下劃線, _ _ 是這樣去掉中間的那個空格。#!/usr/bin/python3# Filename: using_name.py I

f __name__ == __main__:

print(程序自身在運行)else:

print(我來自另一模塊)

(5)__path__屬性

這是一個目錄列表,裡面每一個包含的目錄都有為這個包服務的__init__.py,你得在其他__init__.py被執行前定義。可以修改這個變數,用來影響包含在包裡面的模塊和子包。一般用來擴展包裡面的模塊。

(6)dir()函數

內置的函數 dir() 可以找到模塊內定義的所有名稱。以一個字元串列表的形式返回:

</p><pre>>>> import fibo

>>> dir(fibo)

[__name__, fib, fib2]

(7)包

1)包是一種管理 Python 模塊命名空間的形式,採用"點模塊名稱"。比如一個模塊的名稱是 A.B, 那麼他表示一個包 A中的子模塊 B 。

2)在導入一個包的時候,Python 會根據 sys.path 中的目錄來尋找這個包中包含的子目錄。

目錄只有包含一個叫做 __init__.py 的文件才會被認作是一個包,

sound/ 頂層包 __init__.py 初始化 sound 包 formats/ 文件格式轉換子包 __init__.py wavread.py wavwrite.py aiffread.py aiffwrite.py auread.py auwrite.py ... effects/ 聲音效果子包 __init__.py echo.py surround.py reverse.py ... filters/ filters 子包 __init__.py equalizer.py vocoder.py karaoke.py ...

3)導入包的方式:

A: import sound.effects.echo

這種情況需要使用全名去訪問 sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

B:from sound.effects import echo - 推薦的方式

這種情況不需要使用冗長的全名去訪問

echo.echofilter(input, output, delay=0.7, atten=4)

C: 直接導入 一個函數或變數 (包-〉模塊-〉函數或變數)

from sound.effects.echo import echofilter

(sound.effects是包,echo是模塊,echofilter是函數或變數)

D:from sound.effects import *

導入語句遵循如下規則:在包定義文件 __init__.py 中維護 __all__ 的列表變數,從而把列表中的所有名字作為包內容導入。如果沒有更新__all__, 就不會導入包里的任何子模塊,只是把包和它裡面定義的所有內容導入進來(可能運行__init__.py里定義的初始化代碼)。

這裡有一個例子,在:file:sounds/effects/__init__.py中包含如下代碼:

__all__ = ["echo", "surround", "reverse"]

這表示當你使用from sound.effects import *這種用法時,你只會導入包裡面這三個子模塊。

13. 迭代器與生成器:

(1)迭代器是一個可以記住遍歷的位置的對象。

迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。字元串,列表或元組對象都可用於創建迭代器。

迭代器有兩個基本的方法:iter()next()

迭代器對象可以使用常規for語句進行遍歷:

list=[1,2,3,4] it = iter(list) # 創建迭代器對象 for x in it:

print (x, end=" ")

1 2 3 4

也可以使用 next() 函數: import sys # 引入 sys 模塊

list=[1,2,3,4] it = iter(list) # 創建迭代器對象

while True:

try:

print (next(it),end=" ")

except StopIteration:

sys.exit()

1 2 3 4

(2)生成器

在 Python 中,使用了 yield 的函數被稱為生成器(generator)。生成器是一個返回迭代器的函數,只能用於迭代操作。

14. Python解釋器

查看Python版本:

python -V

以上命令執行結果如下:

Python 3.3.2

(1)互動式編程

在命令提示符中輸入"Python"命令來啟動Python解釋器:

$ python3

執行以上命令後,出現如下窗口信息:

$ python3

Python 3.4.0 (default, Apr 11 2014, 13:05:11)

[GCC 4.8.2] on linux

Type "help", "copyright", "credits" or "license" for more information.

在 python 提示符中輸入以下語句,然後按回車鍵查看運行效果:

print ("Hello, Python!");

以上命令執行結果如下:

Hello, Python!

(2)腳本式編程

將如下代碼拷貝至 hello.py文件中:

print ("Hello, Python!");

通過以下命令執行該腳本:

python3 hello.py

輸出結果為:

Hello, Python!

15. Python3輸入和輸出

(1)輸出格式美化

1)將輸出的值轉成字元串:

str(): 返回一個用戶易讀的表達形式,單引號顯示。

repr(): 返回一個解釋其器易讀的表達形式,雙引號+單引號顯示。

>>> s = Hello, Runoob

>>> str(s)Hello, Runoob

>>> repr(s)"Hello, Runoob"

2)補0:

rjust()方法 :將字元串靠右,並在左邊填充空格。

ljust()方法:

center()方法:

zfill()方法: 在數字的左邊填充0.

3) str.format():

A: 基本使用

>>> print({}網址: {}!.format(菜鳥教程, www.runoob.com))

菜鳥教程網址: www.runoob.com!

B:{}中的數字用於指向傳入對象在format()中的位置 。

>>> print({0} 和 {1}.format(Google, Runoob)) Google 和 Runoob

C:如果format()中使用了關鍵字參數,那麼它們的值會指向使用該名字的參數。

>>> print({name}網址: {site}.format(name=菜鳥教程, site=www.runoob.com)) 菜鳥教程網址: www.runoob.com

D:位置及關鍵字參數可以任意的結合

>>> print(站點列表 {0}, {1}, 和 {other}。.format(Google, Runoob, other=Taobao)) 站點列表 Google, Runoob, 和 Taobao。

E: !a/!s/!r可以用於在格式化某個值之前對其進行轉化

!a: 使用ascii()

!s: 使用str()

!r: 使用repr()

>>> import math >>> print(常量 PI 的值近似為: {!r}。.format(math.pi)) 常量 PI 的值近似為: 3.141592653589793。

F: 可選項 : 和格式標識符可以跟著欄位名。可選項 : 和格式標識符可以跟著欄位名。

>>> import math >>> print(常量 PI 的值近似為 {0:.3f}。.format(math.pi)) 常量 PI 的值近似為 3.142。

G: 在 : 後傳入一個整數, 可以保證該域至少有這麼多的寬度。 用於美化表格時很有用。

>>> table = {Google: 1, Runoob: 2, Taobao: 3} >>> for name, number in table.items(): ... print({0:10} ==> {1:10d}.format(name, number)) ... Runoob ==> 2 Taobao ==> 3 Google ==> 1

(2)舊式字元串格式化:%操作符,功能與str.format類似。

>>> import math >>> print(常量 PI 的值近似為:%5.3f。 % math.pi) 常量 PI 的值近似為:3.142。

(3)讀取鍵盤輸入:input()函數

input() 內置函數從標準輸入讀入一行文本,默認的標準輸入是鍵盤。

str = input("請輸入:"); print ("你輸入的內容是: ", str)

(4)讀和寫文件: open ()

open (filename, mode)

mode:

r: 只讀

rb: 二進位值只讀

r+: 讀寫

w: 只寫,寫覆蓋

wb: 二進位值只寫,寫覆蓋

w+: 讀寫

a: 只寫,附加

ab: 二進位值只寫,寫附加

a+: 讀寫,寫附加

(5)文件對象的方法 :

1) f.read()

f.read(size)將讀取一定數目的數據, 當 size 被忽略了或者為負, 那麼該文件的所有內容都將被讀取並且返回。

2) f.readline()

f.readline() 會從文件中讀取單獨的一行。換行符為

3) f.readlines()

f.readlines() 將返回該文件中包含的所有行。如果設置可選參數 sizehint, 則讀取指定長度的位元組, 並且將這些位元組按行分割。

4) f.write()

f.write(string) 將 string 寫入到文件中, 然後返回寫入的字元數。

5) f.tell()

f.tell() 返迴文件對象當前所處的位置.

6) f.seek()

如果要改變文件當前的位置, 可以使用 f.seek(offset, from_what) 函數。

from_what 的值, 如果是 0 表示開頭, 如果是 1 表示當前位置, 2 表示文件的結尾,例如:

seek(x,0) : 從起始位置即文件首行首字元開始移動 x 個字元

seek(x,1) : 表示從當前位置往後移動x個字元

seek(-x,2):表示從文件的結尾往前移動x個字元

7) f.close()

關閉文件並釋放系統的資源.

16. Others

(1) Useful Links:

google: busca.uol.com.br/

python3教材:runoob.com/python3/pyth

(2) 如何使用搜索引擎:找到報錯的第一行和最後一行,將這些關鍵字複製到搜索引擎中。


推薦閱讀:

測試的道理
讓我們做個簡單的解釋器(一)
前端開發學習路線分享,學前端要學哪些內容?
PAT團體程序設計天梯賽-練習集答案
React Native開源項目如何運行?

TAG:Python | 編程 | 編程語言 |