python3中變量的定義是不固定類型的(動態),區分大小寫
值類型 | 引用類型 |
---|---|
不可變的(值類型) | 可變的(引用類型) |
int (整型) | list (列表) |
str (字符串) | set (集合) |
tuple (元組) | dict (字典) |
id()
,能夠知道變量在內存的位置b = "icessun" b = b + "hello" print(b) >>> "icessunhello" # 不是說字符串是不可變的嘛?怎麼改變了
若是字符串能夠改變,那麼可使用索引值給字符串賦值"python"[0] = 'h' -----> 報錯
,會發現報錯,是不行的。python
上面程序的結果是由於,+
鏈接符,把兩個字符串鏈接起來了,連接起來的值從新賦值給了b元素,使用id(b)
函數,會發現其實上面兩個b變量在內存的位置是不同的,因此第一個b變量的值沒有改變,被覆蓋了。app
2**5 ----> 2的5次方=32
is / not is
函數
a = (1,2,3) b = (1,3,2) print(a is b) # 元組是不可變的 print(a == b) # 元組是有序的,值是不相等的 >>> False False # 集合 a = {1,2,3} b = {1,3,2} print(a==b) # 集合是無序的,因此值是相等的 print(a is b) >>> True False # 字符串,數字 兩個取值相等,則is 返回True,可是數字有特殊 a = 'icessun' b = 'icessun' print(a is b) >>> True a = 1 b = 1 c = 1.0 print(a==b) print(a==c print(a is b) print(a is c) >>> True True True False
從上面能夠看出,元組是不可變的,改變裏面元素的位置就變成了兩個新的元組。is
不是比較兩個變量的值是否相等,而是比較變量在內存的地址是否相等,算術運算符==
是比較值是否相等的ui
對象的三個特性 | 一切都是對象 |
---|---|
id()函數:變量在內存的地址 | is :身份運算符 |
type()函數:類型判斷函數 | isinstance(變量,(int,str,float....)) |
value值的比較 | == :算術比較符 |
判斷一個變量是否在一個變量裏面
in / not in
b= 'a' b in {'c':1} >>> False b=1 b in {'c':1} >>> False b='c' b in {'c':1} >>> True
{ }
pass
:佔位語句#
;推薦在這行語句的開頭寫,與上一條語句有空格 '''註釋內容'''
new
關鍵詞if else / elseif
a = input() a = int(a) print('a is ' + str(a)) if a==1: print('apple') elif a==2: print('orange') elif a==3: print('banana') else: print('shoppingp') # 使用 if else if a==1: print('apple') else: if a==2: print('orange') else: if a==3: print('banana') else: print('shopping')
input()
接收用戶的輸入,elif
功能相似於switch
功能;int(a)
:由於終端輸入的是字符串,因此應該強制轉爲數字進行比較print('a is ' + str(a))
:字符串的拼接只能二者都是字符串,否者會報錯code
for 變量 in 循環體
主要用來遍歷循環:序列List,集合Set,字典Dict
a = [['apple','orange','banana','grape'],(1,2,3)] for x in a: for y in x: if y=='orange': break # continue print(y) # 默認是換行(print(y,end='/n'))輸出的,要想不換行:print(y,end=' ');故能夠在end裏面添加其餘的符號來鏈接字符 else: print('fruit is gone') >>> apple 1 2 3 fruit is gone
break
跳出裏面的for循環,可是外面的for循環沒有跳出,仍是會執行;和else配對的是外面的for循環,因此依然會執行;要是在外層的for循環裏面加入break,那麼就不會執行else語句;for循環後面有else語句,當循環執行完畢,也會依然接着執行else語句,因此會輸出fruit is gone;通常不推薦在for循環後面使用else語句對象
range()
函數for x in range(0,10): print(x,end='|') >>> 0|1|2|3|4|5|6|7|8|9| for x in range(10,0,-2): print(x,end='|') >>> 10|8|6|4|2| # 打印列表a中全部的基奇數項 a=[1,2,3,4,5,6,7,8] # 循環+range()函數的方法 for x in range(0,len(a),2): print(a[x]) # 列表的切片的方法 print(a[0:len(a):2]) >>> [1,3,7]
range()
函數的做用相似於其餘語言中的for(i = 初始值;i < 長度;i ++)
;裏面能夠傳入兩個或者三個參數,兩個參數的時候表示的是:初始值,長度;傳入三個參數的時候表示的是:初始值,長度,步長索引
def ice(a,b): a1=a*3 b1=b*2+10 return a1,b1 ice_a1,ice_b1 = ice(3,6) print(ice_a1,ice_b1) >>> 9 22 a=1 b=2 ====> a,b,c=1,2,3 或者 (1,2,3) 當abc都相等的時候:a=b=c=1 或者 a,b,c=1,1,1 c=3
序列解包:就是當一個函數有多個返回值的時候,不須要使用一個變量接收到全部的返回值,而後又從新遍歷返回值,取到對應的返回值;只須要使用和返回值個數對等的變量依次接收就行;固然只是針對返回值是值類型的函數。個數相等,順序對應內存
當在函數參數裏面使用的時候,能夠在實參裏面修改默認值;在調用函數傳入參數的時候,明確告訴實參,形參給傳的是那個實參的值sum(y=3,x=2)
字符串