超基礎(chǔ)復習
關(guān)鍵字 nonlocal

字符串


同一行顯示多條語句

多變量賦值

運算

列表
列表可以用+連接起來

集合、字典和元組
set(value1,value2……)是集合
a={'in','dhfksk'}是集合
a=('d','f')是元組 ——集合用()創(chuàng)建的話會有set關(guān)鍵字
集合像列表一樣,可以使用推導式
注意集合的pop函數(shù)和列表的pop函數(shù)是不一樣的


元組是不可以改變的指的是它的內(nèi)容不可改變,但可以給整個元組重新賦值,這時候這個元組已經(jīng)不是原來的元組(地址不一樣),只是名字一樣而已。
字典
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
也可以用dict()函數(shù)構(gòu)建
dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
dict(Runoob=1, Google=2, Taobao=3) —— (如果關(guān)鍵字只是簡單的字符串,這種方式更加方便,都不用寫''號)
字典常用函數(shù):
clear()、keys()、values()

注意:dict本來是一個內(nèi)置的函數(shù),可以用于定義字典,但是如果前面自定義了dict,那么將調(diào)用自定義的dict,導致原本的dict函數(shù)失效
數(shù)據(jù)類型轉(zhuǎn)換
方法就是要轉(zhuǎn)換的類型()就可以了

repr函數(shù)可以簡單理解為:輸入的都當作字符串來理解,他無關(guān)pyhon語言的語法。使用了eval函數(shù)的字符串就相當于再命令行中輸入這個字符串
舉個例子:

運算符
- 海象運算符
python 3.8新增運算怕符

- is 與 == 區(qū)別
is 用于判斷兩個變量引用對象是否為同一個, == 用于判斷引用變量的值是否相等。

數(shù)字 number

- 數(shù)學函數(shù)
import random

import math

字符串
- 格式化輸出

2.6之后新增 str.format()函數(shù)可用于格式化



str.format() 方法還可以使用 *元組 和 **字典 的形式傳參

還有其他的方式
3.6版本之后可以fstring來表達


最常用的還是format吧
- 三引號
python三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。
可以使用三引號來讓sql語句更清晰

- 轉(zhuǎn)義字符
前面加上r取消轉(zhuǎn)義變單純的字符串
列表
list.extend(seq)
在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)
復制列表時,用list.copy()函數(shù)是重新開辟了新的地址,改變舊的復制的不會改變,但是如果是listA=listB這樣的賦值方式,改變其中一個,另外的都會改變。
列表推導式:



淺拷貝與深拷貝
簡單理解為:復制之后單個對象是不改變的,但是復合對象會改變?因為這個復合的子對象沒有進行深拷貝。


迭代器與生成器
迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結(jié)束。迭代器只能往前不會后退。
迭代器有兩個基本的方法:iter() 和 next()。
在 Python 中,使用了 yield 的函數(shù)被稱為生成器(generator)
迭代器是一個可以記住遍歷的位置的對象。
一個簡單的例子:
import sys
def myfuc(n):
for i in range(n):
yield i
# print(i)
if __name__ == '__main__':
it = myfuc(5)
# 輸出的第一種方式:用for循環(huán)
for i in it:
print(i)
# 輸出的第二種方式:外面一個while循環(huán),里面用next函數(shù)將迭代器的數(shù)一個一個的取出來
# while True:
# try:
# print(next(it), end=' ')
# except StopIteration:
# sys.exit()
函數(shù)
- 可變類型與不可變類型
不可變類型:類似 c++ 的值傳遞,整數(shù)、字符串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。
可變類型:類似 c++ 的引用傳遞,如列表,字典 。如 fun(la),則是將 la 真正的傳過去,修改后fun外部的la也會受影響
- 關(guān)鍵字參數(shù)
Python 解釋器能夠用參數(shù)名匹配參數(shù)值

- 不定長參數(shù)

1顆*是元組,2顆是字典

系列遍歷技巧
- items()方法可以同時得到字典的關(guān)鍵字和對應值
- enumerate() 可以同時得到索引位置和對應值
- zip組合遍歷兩個或兩個以上的序列

- reversed() 反向遍歷一個序列
- sorted排序不修改原值
X,y 位置快速轉(zhuǎn)換
xlst, ylst = polygon.exterior.xy
lst = [[y, x] for x, y in zip(xlst, ylst)]
模塊和包
模塊就是一個py文件,包是一個文件夾,里面可以有很多的py文件。該文件夾(包)下必須存在 init.py 文件
文件I/O



- 重命名和刪除文件
導入os模塊
rename重命名
remove刪除
目錄操作(文件夾操作)
前提是導入os模塊
新建:mkdir
改變當前目錄:chdir
獲取當前的工作目錄:getcwd
刪除目錄:rmdir
異常
try,except語句中:
else是沒異常執(zhí)行
finally是無論有沒有異常都會執(zhí)行的語句。
關(guān)鍵詞 with 語句帶有預定義的清理行為,如:

無論處理過程如何,最后都會將文件關(guān)閉
python中的對象
屬性、方法
對私有方法的理解:如果這個函數(shù)只是類中實現(xiàn)其他功能的一個中間過程,那就定義成私有方法,外部沒有訪問的必要。

這些函數(shù)都可以進行重載:

作用域
作用域有四種:局部、閉包函數(shù)(既非局部也非全局)、全局、內(nèi)置
關(guān)于閉包函數(shù)的理解:函數(shù)A內(nèi)嵌函數(shù)B,函數(shù)B是無法修改B外A內(nèi)的函數(shù)的,如果要修改,要加如nonlocal關(guān)鍵字。參見第一條知識點
標準庫

os:與操作系統(tǒng)相關(guān)聯(lián)的函數(shù)
shutil:日常的文件和目錄管理
glob:通配符搜索文件

sys.argv:獲取命令行參數(shù)(接收外部參數(shù))


sys.exit():程序終止
re:正則表達模塊
math:訪問底層的C函數(shù)庫
random:生成隨機數(shù)的工具
urllib.request:處理從url接收的數(shù)據(jù)smtplib:發(fā)送電子郵件
datetime:日期和時間處理
zlib:壓縮模塊
timeit:性能度量工具
doctest:測試模塊
位置交換

python的語法和C,C++好像不一樣,不需要中間的tmp來進行交換??