python 基礎(chǔ)知識查缺補漏筆記

超基礎(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來表達

![](https://upload-images.jianshu.io/upload_images/14371927-4998289f029e96f5.png?imageMogr2/auto-

orient/strip%7CimageView2/2/w/1240)

最常用的還是format吧

  • 三引號
    python三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符。
    可以使用三引號來讓sql語句更清晰
  • 轉(zhuǎn)義字符
    前面加上r取消轉(zhuǎn)義變單純的字符串

列表

list.extend(seq)
在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表)

復制列表時,用list.copy()函數(shù)是重新開辟了新的地址,改變舊的復制的不會改變,但是如果是listA=listB這樣的賦值方式,改變其中一個,另外的都會改變。

列表推導式:

其他循環(huán)小技巧

淺拷貝與深拷貝

Python 直接賦值、淺拷貝和深度拷貝解析

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

迭代器與生成器

迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結(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來進行交換??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容