python3入門與進階(二)

變量

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
  • 優先級:not > and > or

代碼編寫

  • 縮進來區分代碼塊,沒有大括號{ }
  • 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)字符串

相關文章
相關標籤/搜索