日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python基础:细节问题梳理

發布時間:2025/10/17 python 9 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python基础:细节问题梳理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

基本數據類型


字符串

1. 多行字符串


2. 原始字符串


序列共同特征

  • 字符串

    • index訪問

    • 切片

    • 拼接
    • 數乘

  • 2. 列表
    + index訪問

    • 切片
    • 拼接
    • 數乘


    3. 元組

    • index訪問

    • 切片

    • 拼接
    • 數乘

    注意:序列中不存在減運算

  • 序列的in/len/min/max()
  • 注意:min/mx遵循ascll碼,方法如下:


    集合

    • 無序,不能使用index以及切片
    • 不重復
    • 可以使用in/len/min/max
    • 特有運算符:差集、交集、并集

    注意:序列與集合為空時的表示:


    python基本數據類型歸納

    分類:
    + 值類型:不可改變,包括str,int,float,tuple

    值類型的數據不可改變表現在:數據只可讀不可該,對變量重新賦值是析構原變量后生成新變量,所以從這個意義上來說,值類型數據不允許改變(簡單判斷方法:內存地址沒變就是不可改變)

    復雜情況:

    可以看出:a[3]是引用類型,可以改變,改變后a[3]內存地址未變,相當于未對元組元素進行改變,如果試圖給a[3]賦值,即改變a[3]內存地址,則報錯。所以可證整個元組不可改變

    因此:元組的不可改變指:元祖起始內存ID不變,各個元素的起始ID也不可改變!!!

    • 引用類型:可改變,包括list,set,dict

    可以看出,元素的內存地址改變了,所以可以改變。


    python運算符


    + 算數運算符中的Bool值

    int str list tuple

    set dict

    報錯總結:

    • 廣義的比較運算符

    str

    按ascll碼比較,從左往右比,字符與字符間采用與邏輯

    list tuple

    序列數據類型軍類似

    注意:其他未提到的數據類型如字典等,一般不進行關系運算

    • 邏輯運算符及其擴展

      特征:運算符兩端為bool類型的數值或變量


    對于數值,true/false會自動轉變為數值
    • 成員運算符

    特殊地:字典

    • 身份運算符

    is 判斷依據為內存id

    • 位運算符

    運算優先級

    對象三要素:id、value、type

    對應三個運算符和方法: is == isinstance


    sublime快捷鍵

    • package control : Ctrl+shift+P
    • 運行python命令行:ctrl + ~
    • build:ctrl +B
    • 注釋:Ctrl+ /
    • 縮進:Ctrl+] 撤銷縮進:Ctrl+[

    幾個特殊用法

    • print(str,’字符’)
    • 循環+else


    + 帶步長的切片

    注意:左閉又開
    • 帶步長的range()

    • pass代碼塊的作用:可以代替正式代碼,后想清楚再填充,并且不會報錯


    包、模塊以及導入

    • 概念

    包:文件夾(通俗)

    模塊:某個python文件,里面包含類與函數

    • 模塊導入方法
    • import module_name [as new_name]

      import只能接module_name,后面不能接package_name或者module_name.variable_name…


    所以通過import module_name導入模塊后,要使用variable/function/class…必須是這樣的形式:module_name.variable_name/function_name/class_name
  • from module_name import value/function/class… [as new_name]

    相比于import直接導入模塊,from … import 直接導入模塊內元素

  • from package_name import module_name
    從 某個包導入某個模塊

  • from package_name import * :導入包的所有模塊
  • import package

    import 直接導入包的方法不存在,此寫法實際上會導入package的init模塊,因為init.py本身是一個模塊,他的模塊名叫做package_name

    • 特殊情況舉例
  • 導入子package下的module
  • 正確方式: ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/0BD600C824A84C26934C39EFAF9A2FF0/4145) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/AE1C0D5649A94300A06277585A52569B/4141) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/AE1C0D5649A94300A06277585A52569B/4141) 錯誤方式:不能在單獨的import語句后直接加變量等模塊內元素 ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/303D289C147945BEAE3F4656E48149D6/4158)
  • 導入某個package所有module
  • ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/2FE44D6F7FE149C089C6589F835576FA/4164) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/0D9AACF006154970BA32140EE1642387/4167) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/47A5B4A7183A476EBFB952DFD10D1958/4169) ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/9A8E9B0DD18F4D80A007F55E34866D81/4171)

    要想利用*導入package下的modules,必須在package的init.py中用系統變量all標識。

  • 導入某個package特定module

    類似上一個,在all中標識

  • 導入某個module

  • ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/D43227F960794CD3ADCB6B674482B8B0/4190)
  • 導入某個module中特定元素
  • ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/D43227F960794CD3ADCB6B674482B8B0/4190)
      • all的搭配
      • 從包中導入多個模塊時(上面已經舉例)
      • 從模塊中導入多個元素時

    注意:避免循環導入module,即module1導入module2,module2又導入module1;python有避免重復導入module的機制

    • __init__.py的作用:可以添加某個package下所有module均需要導入的其他module

    上述總結的作用是:在init文件中寫入大量公共import,其他文件或模塊直接 import package_name即可引入所有公共import ,提高工作效率。


    插入:round系統函數

    3:小數點后三位


    序列解包

    在函數中的應用


    函數

    關鍵字參數與默認參數

  • 函數申明時,默認參數必須位于形參的最右邊
  • 對于函數調用時,位置參數與關鍵字參數不可混搭!關鍵字參數全部靠右!!
  • 未完待續。。。


    類與對象

    一、概覽

    二、類變量+實例變量+實例方法+構造函數

    • 含義:

    類變量:不依附于某一個具體的對象,一般為類的多個實例所共有,比如,sum:對類的實例進行計數統計

    實例變量:為對象所特有,如姓名等

    優雅的類須嚴格區分二者!

    實例方法:為實例服務的方法

    構造函數:特殊的實例方法,為對象初始化

    • 具體區分
      1.

    可見,通過系統變量dict,可以查看類或對象的屬性;對象student1不含有類變量sum!!

    2.

    對象既可以訪問實例變量,也可以向上查找類變量;類當然可以訪問類變量,但不能訪問實例變量

    3.

    實例方法訪問類變量的兩種方式

  • 實例方法訪問實例變量:當然

  • 對象調用實例方法:當然;類調用實例方法也可以,但意義不大,很雞肋,只不過python提供了這樣一種靈活的使用方式

  • 雖然比較雞肋,但此處解釋了參數self的含義:實例方法中的self指對象,self名稱可以變!

    可以看到:無報錯

    三、類方法與靜態方法

  • 類方法

    • 類方法定義:@classmethod
  • 對象可以調用類方法,不推薦;類可以調用類方法,推薦;
    類方法當然能調用類變量:cls.variable,類方法不能調用實例變量;當然cls也可以換為其他符號,比如this

    2.靜態方法

    • 靜態方法定義:@staticmethod

      靜態方法本質上就是個普通函數,但放在類里,可以像方法一樣使用。靜態方法為類與實例提供無差別的方法。


    靜態方法不能訪問實例變量,可以通過Student.sum來訪問類變量

    把它當普通函數對待

    四、成員可見性

    1.隱藏變量 ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/DD78FFB410A44E51891DB47F68F6F28D/4423)

    隱藏的變量不可以通過類、對象直接訪問;但實例、類方法可以在類內部訪問隱藏變量,外部類、對象可以借助各自的方法實現對隱藏變量的訪問。

    ![](https://note.youdao.com/yws/public/resource/5eabae31d62fa288e7021d6f89d8468c/xmlnote/WEBRESOURCEe95a87e1822525fe2bf0828722c5ce17/4436)

    五、繼承性與多態性

    • 法1

    • 法2

    可以看出,同名方法會被覆蓋


    正則表達式與JSON

    一、正則概述

    • 兩種實現方法

    • 思維導圖

    • 用法舉例

    • re模塊的方法

    • findall方法
    • re.findall(pattern, string, flags)

    第三個參數:標志位 re.I表示忽略大小寫 re.S表示元字符’.’可以指代換行符

  • sub方法

    re.sub(pattern, repl, string, count, flags)

  • repl:replace替換值,可以是函數

    count:替換個數

    flages:re.I、re.S

    • 參數為函數實現動態替換

    注意:函數名convert1可以自定義;參數value1也可以自定義

    唯一要求:自定義函數參數個數為1,函數必須返回某個替代字符串

    group 為match對象的一個方法,用來取出匹配值!!

  • match與search方法
  • 可以說findall與sub是search函數的高級封裝,封裝了一個一個search的過程

    注意group方法的使用;span方法會返回匹配值在字符串中的index!

    • group方法使用

    直接使用findall更優

    • 坑:正則最好在字符串前加r

    findall()正則中有分組就會只返回分組!!這種情況下使用search+group()可能更靈活

    總結

    以上是生活随笔為你收集整理的python基础:细节问题梳理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。