<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一篇超級最全的python基礎(chǔ)篇

          共 14675字,需瀏覽 30分鐘

           ·

          2024-04-11 01:02

          GPT-4 Plus賬號又降價了!
          Sora社群,正式上線!
          最新版Pycharm 2022.3最新激活教程,有效期到2099年!

          數(shù)據(jù)類型和變量
          • Python使用縮進來組織代碼塊,一般使用4個空格的縮進.使用#來注釋一行,其他每一行都是一個語句,當(dāng)語句以冒號:結(jié)尾時,縮進的語句視為代碼塊.Python對大小寫敏感.

          1.1 整數(shù)

          • Python可以處理任意大小的整數(shù),包括負(fù)整數(shù),寫法與數(shù)學(xué)上寫法一致,例如:-100.如果用十六進制表示,則用前綴為0x和0-9,a-f表示,例如:0xff00.

          1.2 浮點數(shù)

          • 浮點數(shù)的表示方法:3.14,-9.01.若是科學(xué)技術(shù)法表示,則10用e代替,例如:1.23$\times10^9$表示為1.23e9.
          • 整數(shù)和浮點數(shù)在計算機內(nèi)存儲的方式不同,整數(shù)運算永遠是精確的(包括除法運算),浮點數(shù)運算可能會存在四舍五入的誤差.

          1.3 字符串

          • 字符串是單引號或雙引號括起來的文本.
          • 如果字符串中包含單引號,則用雙引號括起來;
          • 如果包含雙引號,則用單引號括起來;
          • 如果既包含單引號又包含雙引號,則使用轉(zhuǎn)義字符\來標(biāo)識,例如:'I'm "OK"!'表示的是I'm "OK"!.
          • python中用r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義,例如print(r'\\t\')即打印\\t\.
          • python中用 ... 三引號來輸入多行內(nèi)容,其中...是提示符,表示接著上一行輸入,例如:
                
                  >>> print(```line1
          ...line2
          ... line3```)
          line1
          line2
          line3

          1.4 布爾值

          • 布爾值只有True和Flase兩種(注意大小寫,Python對大小寫敏感),常用于if的條件判斷.

          布爾值運算規(guī)則如下:

          1. and運算是與運算,只有所有都為True,and運算結(jié)果才是True.
          2. or運算是或運算,只要其中有一個為True,or運算結(jié)果就是True.
          3. not運算是非運算,它是一個單目運算符,把True變成False,False變成True.

          1.5 空值

          • 空值是Python里一個特殊的值,用None表示.

          1.6 變量

          • Python中變量類型不固定,即動態(tài)語言,不需要提前聲明.使用=直接賦值,同一個變量可以反復(fù)賦值,且可以是不同類型的變量.例如:
                
                  a = 123    #a是整數(shù),即a指向整數(shù)123
          a= "ABC"  #將a賦值成字符串,即a指向字符串"ABC"
          b = a      #將b指向a所指向的數(shù)據(jù)("ABC")
          a = "XYZ"  #將a指向字符串"XYZ"
          print(b)   #打印b將打印"ABC"而不是"XYZ"

          變量a="ABC"賦值中,Python解釋器處理了以下事項:

          1. 在內(nèi)存中創(chuàng)建一個"ABC"的字符串;
          2. 在內(nèi)存中創(chuàng)建了一個名為a的變量,并把它指向"ABC".
          3. 把a賦值給b,實際上是將b指向a所指向的數(shù)據(jù).

          1.7 常量

          • 常量一般用全部大寫的變量名表示,例如:PI=3.14.實際上,Python沒有機制保證PI的值不會被改變,所以本質(zhì)仍然是個變量.

          Python的除法:

          • /的除法計算結(jié)果是浮點數(shù),即使是兩個整數(shù)相除也是浮點數(shù),例如9 / 3結(jié)果為3.0.
          • //除法只取結(jié)果的整數(shù)部分,例如10 // 3結(jié)果是整數(shù)部分3.
          • %表示取余數(shù),例如:10 % 3結(jié)果是余數(shù)1.

          1.8 總結(jié)

          • Python支持多種數(shù)據(jù)類型,在計算機內(nèi)部可以把任何數(shù)據(jù)看成一個”對象”,而變量賦值就是將變量和數(shù)據(jù)對象關(guān)聯(lián)起來,即變量指向該數(shù)據(jù)對象.例如x=y,表示把變量x指向y所指向的數(shù)據(jù)對象,隨后對y的賦值并不影響x的指向.
          • Python的整數(shù)和浮點數(shù)沒有大小的限制.若超出一定范圍就用inf(無限大)表示.
          2. 字符串和編碼

          2.1 字符編碼

          1. ASCII編碼,早期的編碼包含大小寫英文字母、數(shù)字和一些符號,用一個字節(jié)(8位)表示.因編碼量少可能會出現(xiàn)亂碼問題.
          2. Unicode編碼,統(tǒng)一各國語言編碼,用兩個字節(jié)(16位)表示.如果文本全是英文,則會比ASCII編碼需要多一倍的存儲空間,在存儲和傳輸上不劃算.
          3. UTF-8編碼,即可變長的Unicode編碼,UTF-8編碼把一個Unicode字符根據(jù)不同的數(shù)字大小編碼成1-6個字節(jié),常用的英文字母被編碼成1個字節(jié),漢字通常是3個字節(jié),只有很生僻的字符才會被編碼成4-6個字節(jié).如果你要傳輸?shù)奈谋景罅坑⑽淖址?用UTF-8編碼能節(jié)省空間.

          2.2 字符編碼使用場景

          1. 在計算機內(nèi)存中,統(tǒng)一使用Unicode編碼.
          2. 當(dāng)需要保存到硬盤或者需要傳輸?shù)臅r候,就轉(zhuǎn)換為UTF-8編碼. 例如: 用記事本編輯的時候,從文件讀取的UTF-8字符被轉(zhuǎn)換為Unicode字符到內(nèi)存里,編輯完成后,保存的時候再把Unicode轉(zhuǎn)換為UTF-8保存到文件.
          a564c44fc2d6cdf6be28da30461fffa9.webp

          瀏覽網(wǎng)頁的時候,服務(wù)器會把動態(tài)的生成的Unicode內(nèi)容轉(zhuǎn)換為UTF-8再傳輸?shù)綖g覽器,所以很多網(wǎng)頁的源碼上會有類似的信息,表示該網(wǎng)頁正是用的UTF-8編碼.

          5c5778b34f25e9315e9db066bf494be9.webp

          2.3 Python的字符串

          • Python3的版本中,字符串是Unicode編碼,即支持多語言.
          • 對于單個字符的編碼,Python提供ord()函數(shù)獲取字符的整數(shù)表示,chr()函數(shù)把編碼轉(zhuǎn)換為對應(yīng)的字符.例如:
                
                  >>> ord('A')
          65
          >>> ord('中')
          20013
          >>> chr(66)
          'B'
          >>> chr(25991)
          '米'

          如果知道字符的整數(shù)編碼,可以用十六進制寫str:

                
                  >>> '\u4e2d\u6587'
          '中文'

          2.4 字符串(編碼)轉(zhuǎn)換

          • Python的字符串類型是str,在內(nèi)存中以Unicode表示,一個字符對應(yīng)若干個字節(jié).如果要在網(wǎng)絡(luò)上傳輸,或者保存到磁盤上,就需要把str變?yōu)橐宰止?jié)為單位的bytes(UTF-8/ASCII編碼).

          Python對bytes類型的數(shù)據(jù)用帶b前綴的單引號或雙引號表示:

                
                  x = b'ABC'

          2.4.1 encode()[str→bytes]

          • 以Unicode表示的str通過encode()方法可以編碼為指定的bytes,即Unicode編碼轉(zhuǎn)換成UTF-8編碼或ASCII編碼,例如:
                
                  >>> 'ABC'.encode('ascii')
          b'ABC'
          >>> '中文'.encode('utf-8')
          b'\xe4\xb8\xad\xe6\x96\x87'
          #錯誤例子
          >>> '中文'.encode('ascii')  
          Traceback (most recent call last):
            File "<stdin>", line 1, in <module>
          UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

          2.4.2 decode()[bytes→str]

          • 要把UTF-8編碼或ASCII編碼轉(zhuǎn)換成Unicode編碼,即bytes類型轉(zhuǎn)換為str類型,可用decode()轉(zhuǎn)換.例如:
                
                  >>> b'ABC'.decode('ascii')
          'ABC'
          >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
          '中文'
          #錯誤例子
          >>> b'\xe4\xb8\xad\xff'.decode('utf-8')
          Traceback (most recent call last):
            ...
          UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

          如果bytes中只有一小部分無效的字節(jié),可以傳入errors='ignore'忽略錯誤的字節(jié):

                
                  >>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
          '中'
          2.4.3 len()
           對于str類型len()計算的是字符數(shù),對于bytes類型len()計算的是字節(jié)數(shù).
          #對于str類型
          >>> len('ABC')
          3
          >>> len('中文')
          2
          #對于bytes類型
          >>> len(b'ABC')
          3
          >>> len(b'\xe4\xb8\xad\xe6\x96\x87')
          6
          >>> len('中文'.encode('utf-8'))
          6
          • 1個中文字符經(jīng)過UTF-8編碼后通常會占用3個字節(jié),而1個英文字符只占用1個字節(jié).
          • 為了避免中文亂碼,一般使用UTF-8編碼對str和bytes進行轉(zhuǎn)換,即Unicode→UTF-8.所以一般在Python源文件開頭寫以下信息:
                
                  1
          #!/usr/bin/env python3
          # -*- coding: utf-8 -*-
          • 第一行注釋是為了告訴Linux/OS X系統(tǒng),這是一個Python可執(zhí)行程序,Windows系統(tǒng)會忽略這個注釋;
          • 第二行注釋是為了告訴Python解釋器,按照UTF-8編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼.

          2.5 格式化

          2.5.1 %的方式

          • 使用%來格式化字符串,其中%s永遠起作用,可以把任何數(shù)據(jù)類型轉(zhuǎn)換成字符串,如果字符串中包含%,則使用%%轉(zhuǎn)義表示字符串中的%.常用占位符如下:
                
                  占位符 替換內(nèi)容
          %s 字符串
          %d 整數(shù)
          %f 浮點數(shù)
          %x 十六進制整數(shù)

          例如:

                
                  >>> 'Hello, %s' % 'world'
          'Hello, world'
          >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
          'Hi, Michael, you have $1000000.'
          #整數(shù)和浮點數(shù)
          >>> print('%2d-%02d' % (3, 1))
          >>> print('%.2f' % 3.1415926)
          # %s的通用性
          >>> 'Age: %s. Gender: %s' % (25, True)
          'Age: 25. Gender: True'
          #轉(zhuǎn)義字符串中的%
          >>> 'growth rate: %d %%' % 7
          'growth rate: 7 %'

          2.5.2 format()

          • 可以使用字符串的format()方法,它會用傳入的參數(shù)依次替換字符串內(nèi)的占位符{0}、{1}…….但建議直接使用%的方式.
                
                  >>> 'Hello, {0}, 成績提升了 {1:.1f}%'.format('小明', 17.125)
          'Hello, 小明, 成績提升了 17.1%'
          3. list和tuple類型
          3.1 list
          • list表示列表,是可變的有序列表,即有序的集合,可以隨時添加和刪除元素.

          3.1.1:list的定義

                
                  >>> classmates = ['Michael''Bob''Tracy']
          >>> classmates
          ['Michael''Bob''Tracy']

          3.1.2 len()

          用len()函數(shù)可以獲得list元素的個數(shù)

                
                  1
          2 >>> len(classmates)
          3

          3.1.3 list的索引

          • list元素索引從0開始
          • 索引可以引用負(fù)數(shù)表示倒數(shù)序號,例如classmates[-1]表示倒數(shù)最后一個元素,索引-1等價于len(classmates) - 1
          • 索引越界會報IndexError錯誤,倒序索引也會越界

          3.1.4 list元素增刪

          • 3.1.4.1 追加末尾元素
                
                  1
          2
          3 >>> classmates.append('Adam')
          >>> classmates
          ['Michael''Bob''Tracy''Adam']

          3.1.4.2 指定位置插入元素

                
                  >>> classmates.insert(1, 'Jack')
          >>> classmates
          ['Michael''Jack''Bob''Tracy''Adam']

          3.1.4.3 刪除末尾元素

                
                  >>> classmates.pop()
          'Adam'
          >>> classmates
          ['Michael''Jack''Bob''Tracy']

          3.1.4.4 刪除指定位置元素

          用pop(i)的方法,i為索引值

                
                  >>> classmates.pop(1)
          'Jack'
          >>> classmates
          ['Michael''Bob''Tracy'

          3.1.4.5 替換元素

          即直接給對應(yīng)索引的元素重新賦值.

                
                  >>> classmates[1] = 'Sarah'
          >>> classmates
          ['Michael''Sarah''Tracy']

          3.1.5多維list

          • list中元素的數(shù)據(jù)類型可以不同,如果要實現(xiàn)二維list,即將一維list中的元素定義為list即可,同理可以實現(xiàn)多維list.例如訪問二維list可用s[2][1]的方式,表示一維list中的第三個元素list中的第二個元素.
                
                  >>> s = ['python''java', ['asp''php'], 'scheme']
          >>> len(s)
          4

          3.1.6 空list

          空list即一個元素也沒有,長度為0.

                
                  1
          2
          3 >>> L = []
          >>> len(L)
          0

          3.2 tuple

          3.2.1 tuple的定義

          • tuple表示元組,即不可變的有序元素的集合.即沒有修改元素的函數(shù),例如append(),insert(),元素賦值等.
          • 因為tuple元素不可變,所以代碼更安全.當(dāng)定義tuple時,元素就必須被確定下來.如果tuple中只含一個元素,則在該元素后加逗號.避免與小括號運算產(chǎn)生歧義.
                
                  #以下是單元素tuple的定義
          >>> t = (1,)
          >>> t
          (1,)
          #以下是小括號運算
          >>> t = (1)
          >>> t
          1

          3.2.2 特別說明

          • tuple中的元素不可變表示元素的指向不可變,但該元素如果是list,則該list的內(nèi)容可變.即list表示的是指向,該list的指向不可變,但是list中元素的指向可變,即list中的元素可變.例如:
                
                  >>> t = ('a''b', ['A''B'])
          >>> t[2][0] = 'X'
          >>> t[2][1] = 'Y'
          >>> t
          ('a''b', ['X''Y'])

          示意圖:

          • list元素修改前:t = ('a', 'b', ['A', 'B'])
          e1f0aa7d623ac0f6f7eb5ff44c74c815.webp
          • list元素修改后:t = ('a', 'b', ['X', 'Y'])
          93bc49bd5c88a9200ad0dbb40b05b9f9.webp 4. dict和set類型

          4.1 dict

          4.1.1 dict的定義

          • dict即字典,相當(dāng)于golang中的map類型,key-value型.具有極快的查找速度.
                
                  //dict的賦值
          >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
          >>> d['Michael']
          95
          //dict元素的賦值
          >>> d['Adam'] = 67
          • 由于dict中key的值是唯一的,因此如果多次賦值,最終結(jié)果為最后一次的賦值.

          4.1.2 dict的查找

          • 如果key不存在會報錯,檢測key是否存在可以通過in或get()方法.當(dāng)key不存在時,in的方式返回False,get()方法返回None或指定值.
                
                  #key不存在的報錯
          >>> d['Thomas']
          Traceback (most recent call last):
            File "<stdin>", line 1, in <module>
          KeyError: 'Thomas'

          #in方式檢查key是否存在
          >>> 'Thomas' in d
          False

          #get()方法檢查key是否存在
          >>> d.get('Thomas')
          >>> d.get('Thomas', -1)
          -1

          4.1.3 dict的刪除

          • 要刪除dict中的元素,可以通過用pop(key)方法,刪除該key對應(yīng)的鍵值對.
                
                  >>> d.pop('Bob')
          75
          >>> d
          {'Michael': 95, 'Tracy': 85}

          4.1.4 特別說明

          dict的特點:

          1. 查找和插入的速度極快,不會隨著key的增加而變慢;
          2. 需要占用大量的內(nèi)存,內(nèi)存浪費多.
          3. dict的key必須是不可變對象,在Python中,字符串、整數(shù)等都是不可變的,而list是可變的,就不能作為key.

          對比list的特點:

          1. 查找和插入的時間隨著元素的增加而增加;
          2. 占用空間小,浪費內(nèi)存很少.

          4.2 set

          • set表示無序和無重復(fù)元素的集合,與數(shù)學(xué)意義上的集合類似,也可以看成是只有key沒有value的dict.

          4.2.1 set的定義

          • 要創(chuàng)建一個set,需要提供一個list作為輸入集合,如果list中有重復(fù)元素則自動過濾掉.
                
                  >>> s = set([1, 2, 3])
          >>> s
          {1, 2, 3}
          #如果有重復(fù)元素會自動過濾掉
          >>> s = set([1, 1, 2, 2, 3, 3])
          >>> s
          {1, 2, 3}

          4.2.2 set的添加和刪除

          • 通過add(key)方法可以添加元素到set中,可以重復(fù)添加,但無效.
                
                  >>> s.add(4)
          >>> s
          {1, 2, 3, 4}
          >>> s.add(4)
          >>> s
          {1, 2, 3, 4}

          通過remove(key)方法可以刪除元素.

                
                  >>> s.remove(4)
          >>> s
          {1, 2, 3}

          4.2.3 set的交集和并集

                
                  >>> s1 = set([1, 2, 3])
          >>> s2 = set([2, 3, 4])
          #交集
          >>> s1 & s2
          {2, 3}
          #并集
          >>> s1 | s2
          {1, 2, 3, 4}  

          4.3 不可變對象

          • 變量表示一個指向,而變量指向的內(nèi)容表示一個對象.例如a="abc"中a是變量即指向,而abc是字符串對象.
          • Python中整數(shù)和字符串是不可變對象,而list是可變對象.
                
                  >>> a = 'abc'
          >>> b = a.replace('a''A')
          >>> b
          'Abc'
          >>> a
          'abc'
          • 例如上例中,a是變量,abc是字符串對象,當(dāng)調(diào)用a的replace的方法時,實際上是基于原字符串對象重新創(chuàng)建了一個新的字符串對象Abc,而沒有改變原字符串對象的內(nèi)容.
          • 對于不變對象來說,調(diào)用對象自身的任意方法,不會改變該對象自身的內(nèi)容.而會創(chuàng)建新的對象并返回.
          5. 條件語句

          5.1 if格式

                
                  if <條件判斷1>:
              <執(zhí)行1>
          elif <條件判斷2>:
              <執(zhí)行2>
          elif <條件判斷3>:
              <執(zhí)行3>
          else:
              <執(zhí)行4>
          • 以上是if語句的完整格式,注意事項:
          • Python使用縮進規(guī)則,如果if判斷條件為true,則執(zhí)行縮進部分的內(nèi)容.
          • if的執(zhí)行邏輯是從上往下判斷,如果某個判斷為true,則會忽略剩下的elif和else.
          • 例如:以下例子打印的結(jié)果是teenager,即滿足第一個if條件則后續(xù)判斷不再執(zhí)行.
                
                  age = 20
          if age >= 6:
              print('teenager')
          elif age >= 18:
              print('adult')
          else:
              print('kid')

          5.2 條件簡寫

                
                  if x:
              print('True')
          只要x是非零數(shù)值、非空字符串、非空list等,就判斷為True,否則為False.
          5.3 input()使用
          s = input('birth: ')
          birth = int(s)
          if birth < 2000:
              print('00前')
          else:
              print('00后')
          • input()返回的數(shù)據(jù)類型是str,str不能直接和整數(shù)比較,必須先把str轉(zhuǎn)換成整數(shù).Python提供了int()函數(shù)來轉(zhuǎn)換成整數(shù).
          6. 循環(huán)語句

          6.1 for循環(huán)

          for…in循環(huán),即把list或tuple中的每個元素迭代出來,執(zhí)行后續(xù)操作.

                
                  names = ['Michael''Bob''Tracy']
          for name in names:
              print(name)

          Python提供一個range(x)函數(shù),生成0-(x-1)的整數(shù)序列.

                
                  >>> list(range(5))
          [0, 1, 2, 3, 4]
          //求和運算
          sum = 0
          for x in range(101):
              sum = sum + x
          print(sum)

          6.2 while循環(huán)

          while循環(huán),只要條件滿足,就不斷循環(huán),條件不滿足時退出循環(huán).

                
                  sum = 0
          n = 99
          while n > 0:
              sum = sum + n
              n = n - 2
          print(sum)

          6.3 break

          在循環(huán)中,break語句可以提前退出循環(huán).

                
                  n = 1
          while n <= 100:
              if n > 10: # 當(dāng)n = 11時,條件滿足,執(zhí)行break語句
                  break # break語句會結(jié)束當(dāng)前循環(huán)
              print(n)
              n = n + 1
          print('END')

          6.4 continue

          • 在循環(huán)過程中,可以通過continue語句,跳過當(dāng)前的這次循環(huán),直接開始下一次循環(huán).
                
                  n = 0
          while n < 10:
              n = n + 1
              if n % 2 == 0: # 如果n是偶數(shù),執(zhí)行continue語句
                  continue # continue語句會直接繼續(xù)下一輪循環(huán),后續(xù)的print()語句不會執(zhí)行
              print(n)
          • break和continue通常都必須配合if語句使用.


          2fdf386c3ee517df754a6dfb6d2bdea3.webp

          END


          我們團隊創(chuàng)建了一個Sora 交流星球,專門用來更新 Sora Sora 學(xué)習(xí)資料,覆蓋介紹、未來變現(xiàn)玩法、各路觀點、技術(shù)解讀等等,感興趣讀者可掃碼下方二維碼加入了解!

          原價399,新春特價99,滿500漲價至199


          可以確定的是:未來10-20年,一定是 AI 的大風(fēng)口、大時代,如果錯過了公眾號、錯過了抖音、錯過了小紅書。

          請一定不要錯過 AI +。

          在這個史詩級別的超級大風(fēng)口下,普通人只需要抓住其中的一個小點,即可實現(xiàn)人生自由、財富自由。

          希望,大家都能夠抓住這一波。

          瀏覽 53
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩女同性爱一区二区三区四区精品 | 8050午夜二级 | 黄色丁五月 | 影音先锋三级资源 | zzijzzij亚洲日本少妇ji… |