「python學習筆記」(一)基礎(chǔ)概念&基本數(shù)據(jù)類型

基本概念

  • Python 是動態(tài)類型語言 變量不需要顯式聲明類型。
    根據(jù)變量引用的對象,Python 解釋器自動確定數(shù)據(jù)類型。
  • Python 是強類型語言 每個對象都有數(shù)據(jù)類型,只支持該類型支持的操作。

對象

Python 中,一切皆對象。每個對象由:標識(identity)、類型(type)、value(值) 組成。

>>> a = 3

>>> a 
3

>>> id(a) 
1531372336

>>> type(a) 
<class 'int'>

引用

在 Python 中,變量也成為:對象的引用。

  • 變量位于:棧內(nèi)存(壓棧出棧等細節(jié),后續(xù)再介紹)。
  • 對象位于:堆內(nèi)存。

標識符

標識符:用于變量、函數(shù)、類、模塊等的名稱

  1. 區(qū)分大小寫。
  2. 字母、數(shù)字、下劃線,第一個字符必須是字母、下劃線。
  3. 不能使用關(guān)鍵字。
>>> help()
help> keywords

Here is a list of the Python keywords.  Enter any keyword to get more help.

False               class               from                or
None                continue            global              pass
True                def                 if                  raise
and                 del                 import              return
as                  elif                in                  try
assert              else                is                  while
async               except              lambda              with
await               finally             nonlocal            yield
break               for                 not

變量

變量的聲明和賦值用于將一個變量綁定到一個對象上。運行過程中,解釋器先運行右邊的表達式, 生成一個代表表達式運算結(jié)果的對象;然后,將這個對象地址賦值給左邊的變量。

  • 變量在使用前必須先被初始化(先被賦值)
>>> x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
  • 可以通過 del 語句刪除不在使用的變量。
>>> x = 1
>>> x
1
>>> del x
>>> x
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
  • 鏈式賦值:x=y=123 相當于x=123; y=123
  • 解包賦值
>>> a,b=1,2
>>> print(a,b)
1 2
>>> a,b=b,a    #交換變量
>>> print(a,b)
2 1

常量

Python 不支持常量。約定常量的命名規(guī) 則,以及在程序的邏輯上不對常量的值作出修改。

>>> MAX_SPEED = 120
>>> print(MAX_SPEED)
120

基本內(nèi)置數(shù)據(jù)類型

  • 整型,整數(shù)
  • 浮點型,小數(shù)或者科學計數(shù)法
  • 布爾型,表示真假,僅包含:True、False
  • 字符串型,由字符組成的序列。

類型轉(zhuǎn)換和取舍

  • int(),float()將其他類型轉(zhuǎn)化成浮點數(shù)。
  • 整數(shù)和浮點數(shù)混合運算時,表達式結(jié)果自動轉(zhuǎn)型成浮點數(shù)。
  • round(value)返回四舍六入五取偶的值。

時間表示

計算機中時間的表示是從“1970 年 1 月 1 日 00:00:00”開始。
通過 time.time() 獲得當前時刻。

>>> import time
>>> time.time()
1583404101.563097
>>> int(time.time())
1583404113

布爾值

Python3 中,把 True 和 False 定義成了關(guān)鍵字,但他們的本質(zhì)還是 1 和 0,甚至可以和數(shù) 字相加。

運算符

比較

所有比較運算符返回 1 表示真,返回 0 表示假。與 True 和 False 等價。

運算符 描述 實例
!= 不等于 - 比較兩個對象的值是否不相等 (a != b) 返回 true.
> 大于 - 返回 x 是否大于 y 。 (a > b) 返回 False。
< 小于 - 返回 x 是否小于 y。 (a < b) 返回 true。
>= 大于等于 - 返回 x 是否大于等于 y。 (a >= b) 返回 False。
<= 小于等于 - 返回 x 是否小于等于 y。 (a <= b) 返回 true。

邏輯運算符

運算符 格式 實例
or 邏輯或 x or y x 為 true,則不計算 y,直接返回 true x 為 false,則返回 y
and 邏輯與 x and y x 為 true,則返回 y 的值 x 為 false,則不計算 y,直接返回 false
not 邏輯非 not x x 為 true,返回 false x 為 false,返回 true

同一運算符

is 是判斷兩個標識符是不是引用同一個對象,is not 是判斷兩個標識符是不是引用不同對象.
實際比較的是對象的地址。

is 與 == 區(qū)別:

  • is 用于判斷兩個變量引用對象是否為同一個,既比較對象的地址。
  • == 用于判斷引用變量引用對象的值是否相等,默認調(diào)用對象的 eq()方法。
  1. is 比較兩個對象的 id 值是否相等,是否指向同一個內(nèi)存地址;
  2. == 比較的是兩個對象的內(nèi)容是否相等,值是否相等;
  3. 小整數(shù)對象[-5,256]在全局解釋器范圍內(nèi)被放入緩存供重復使用;
  4. is 運算符比 == 效率高,在變量和 None 進行比較時,應該使用 is。

基本運算符

運算符 說明
and , or , not 布爾與、布爾或、布爾非
is , is not 同一性判斷,判斷是否為同一個對象
<,<=,>,>=,!=,== 比較值是否相當,可以連用
^ & 按位或,按位異或、按位與
<<, >> 移位 ~ 按位翻轉(zhuǎn)
+,-,*,/,//,% 加,減,乘,浮點除、整數(shù)除、取余
** 冪運算

運算符優(yōu)先級

實際使用中,記住如下簡單的規(guī)則即可,復雜的表達式一定要使用小括號組織。

  1. 乘除優(yōu)先加減
  2. 位運算和算術(shù)運算>比較運算符>賦值運算符>邏輯運算符

字符串

基本特點

字符序列。Python 的字符串是不可變的,我們無法對原字符串做任 何修改。

編碼

Python3 直接支持 Unicode,可以表示世界上任何書面語言的字符。

  • 使用內(nèi)置函數(shù) ord()可以把字符轉(zhuǎn)換成對應的 Unicode 碼; 使用內(nèi)置函數(shù) - chr()可以把十進制數(shù)字轉(zhuǎn)換成對應的字符。
>>> ord('A')
65
>>> chr(65)
'A'

創(chuàng)建字符串

  • 可以通過單引號或雙引號創(chuàng)建字符串。
  • 連續(xù)三個單引號或三個雙引號,可以創(chuàng)建多行字符串。
  • Python 允許空字符串的存在,不包含任何字符且長度為 0。
  • len()用于計算字符串含有多少字符。
  • 可以使用“\+特殊字符”,實現(xiàn)某些難以用字符表示的效果。比如:換行等。

字符串拼接

  1. 可以使用+將多個字符串拼接起來。例如:’aa’+ ’bb’ ==>’aabb’
  2. 可以將多個字面字符串直接放到一起實現(xiàn)拼接。例如:’aa’’bb’==>’aabb’

print打印input讀取

可以自己通過參數(shù) end = “任意字符串”實現(xiàn)末尾添加任何內(nèi)

print("zls",end=' ')
print("zls",end='##')
print("zls")
#輸出 zls zls##zls

input()從控制臺讀取鍵盤輸入的內(nèi)容

>>> myname = input("請輸入名字:")
請輸入名字:鄭老師
>>> print(myname)
鄭老師

數(shù)字轉(zhuǎn)型字符串str()

>>> str(5.20)
'5.2'
>>> str(True)
'True'

用[]提取字符

>>> a = 'abcdefghijklmn'
>>> a[4]
'e'
>>> a[-1]
'n'
>>> a[-30]
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    a[-30]
IndexError: string index out of range

replace()實現(xiàn)字符串替換

字符串是“不可改變”的

>>> a[3]='z'
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    a[3]='z'
TypeError: 'str' object does not support item assignment

通過創(chuàng)建新的字符 串來實現(xiàn)替換某些字符。

>>> a = a.replace('c','Z')
>>> a
'abZdefghijklmn'

字符串切片

標準格式為: [起始偏移量 start:終止偏移量 end:步長 step]

操作和說明 示例 結(jié)果
[:] 提取整個字符串 “abcdef”[:] “abcdef” [start:]從 start 索引開始到結(jié)尾 “abcdef”[2:] “cdef”
[:end]從頭開始知道 end-1 “abcdef”[:2] “ab” [start:end]從 start 到 end-1 “abcdef”[2:4] “cd”
[start:end:step]從 start 提取到 end-1,步長是 step abcdef”[1:5:2] “bd”

起始偏移量和終止偏移量不在[0,字符串長度-1]這個范圍,也不會報錯。起始 偏移量小于 -(長度) 則會當做 0,終止偏移量大于“長度-1”會被當成-1。

>>> "abcdefg"[3:50]
'defg'
>>> "abcdefg"[-3:50]
'efg'
>>> "abcdefg"[-30:50]
'abcdefg'

split()分割和 join()合并

split()可以基于指定分隔符將字符串分隔成多個子字符串(存儲到列表中)。

>>> a = "to be or not to be"
>>> a.split()
['to', 'be', 'or', 'not', 'to', 'be']
>>> a.split('be')
['to ', ' or not to ', '']

join()的作用和 split()作用剛好相反,用于將一系列子字符串連接起來。

>>> b
['to', 'be', 'or', 'not', 'to', 'be']
>>> '-'.join(b)
'to-be-or-not-to-be'
>>> b
['to', 'be', 'or', 'not', 'to', 'be']
>>> ' '.join(b)
'to be or not to be'

字符串常用方法匯總

a='''我是高淇,今年 18 歲了,我在北京尚學堂科技上班。我的兒子叫高洛希,他 6 歲了。我 是一個編程教育的普及者,希望影響 6000 萬學習編程的中國人。我兒子現(xiàn)在也開始學習編 程,希望他 18 歲的時候可以超過我'''

方法和使用示例 說明 結(jié)果
len(a) 字符串長度 96
a.startswith(str) 以指定字符串開頭 True/False a.endswith(str) 以指定字符串結(jié)尾 True/False
a.find('高') 第一次出現(xiàn)指定字符串的位置 2
a.rfind('高') 最后一次出現(xiàn)指定字符串的位置 29
a.count("編程") 指定字符串出現(xiàn)了幾次 3
---- a='gaoqi love programming, love SXT' ----
a.isalnum() 所有字符全是字母或數(shù)字 False
a.capitalize() 產(chǎn)生新的字符串,首字母 大寫 'Gaoqi love programming, love sxt'
a.title() 產(chǎn)生新的字符串,每個單詞都首字母大寫 'Gaoqi Love Programming, Love Sxt'
a.upper() 產(chǎn)生新的字符串,所有字符全轉(zhuǎn)成大寫 'GAOQI LOVE PROGRAMMING, LOVE SXT'
a.lower() 產(chǎn)生新的字符串,所有字符全轉(zhuǎn)成小寫 'gaoqi love programming, love sxt
a.swapcase() 所有字母大小 寫轉(zhuǎn)換 'GAOQI LOVE PROGRAMMING, LOVE sxt'
  1. isalnum() 是否為字母或數(shù)字
  2. isalpha() 檢測字符串是否只由字母組成(含漢字)。
  3. isdigit() 檢測字符串是否只由數(shù)字組成。
  4. isspace() 檢測是否為空白符
  5. isupper() 是否為大寫字母
  6. islower() 是否為小寫字母
  7. strip()去除字符串首尾指定信息。
  8. lstrip()去除字符串左邊指定信息,
  9. rstrip()去除字符串右邊指定信息。
  10. center()、ljust()、rjust()這三個函數(shù)用于對字符串實現(xiàn)排版

format()格式化

函數(shù) str.format(),它增強了字符串格式化的 功能。

  • 通過 {} 和 : 來代替以前的%.
  • ^、<、>分別是居中、左對齊、右對齊,后面帶寬度
  • 浮點數(shù)通過 f,整數(shù)通過 d 進行需要的格式化
>>> a = "名字是:{0},年齡是:{1}"
>>> a.format('tom',18)
'名字是:tom,年齡是:18'
>>> b = "名字是:{0},年齡是{1}。{0}是個好小伙"
>>> b.format('tom',18)
'名字是:tom,年齡是18。tom是個好小伙'
>>> c.format(age=19,name='jeke')
'名字是jeke,年齡是19'
>>> "{:*>8}".format("245")
'*****245'
>>> "我是{0},我喜歡數(shù)字{1:*^8}".format("高淇","666")
'我是高淇,我喜歡數(shù)字**666***'
>>> a = "我是{0},我的存款有{1:.2f}"
>>> a.format("高淇",3888.234342)
'我是高淇,我的存款有3888.23'
最后編輯于
?著作權(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)容