1. 程式人生 > 實用技巧 >4.變數及基本資料型別

4.變數及基本資料型別

1.變數

1.1什麼是變數

變數就是可以變化的量,量指的是事物的變化狀態,比如人的年齡、性別,遊戲角色的等級、金錢等等

1.2為什麼要有變數

為了讓計算機能夠像人一樣去記憶事物的某種狀態,並且狀態是可以發生變化的

詳細地說:

程式執行的本質就是一系列狀態的拜年話,變是程式執行的直接體現,所以我們需要有一種機制能夠反應或者說儲存下來程式執行的狀態,以及狀態的變化

1.3如何用變數

1.3.1變數的基本使用

原則:先定義,後使用

name = 'egon'	#定義
print(name)		#引用

1.3.2記憶體管理:垃圾回收機制

垃圾:當一個變數值被繫結的變數名的個數為0時,該變數無法被訪問到,稱之為垃圾

  • 引用計數增加

    x = 10  #10的引用計數為1
    y = x	#10的引用計數為2
    z = x	#10的引用計數為3
    
  • 引用計數減少

    del x #解除變數名x與10的繫結關係,10的引用計數變為2
    del y #解除變數名x與10的繫結關係,10的引用計數變為1
    z = 12345
    

1.3.3變數的三大組成部分

  • 變數名:是指向等號右側值的記憶體地址的,用來訪問等號右側的值
  • 賦值符號:將變數值的記憶體地址繫結給變數名
  • 變數值:代表記錄的事物的狀態

1.3.4變數名

原則:變數名的命名應該見名知意

  • 變數名只能是字母、數字或下劃線的任意組合

  • 變數名的第一個字元不能是數字

  • 關鍵字不能宣告為變數,常用關鍵字如下

    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
    

ps:不要使用拼音,不要用中文,在見名知意的前提下儘可能短

1.3.5變數名的命名風格

  • 純小寫加下劃線的方式(在python中,關於變數名的命名推薦使用這種方式)

    age_of_alex = 73
    print(age_of_alex)
    
  • 駝峰體

    AgeOfAlex=73
    print(AgeOfAlex)
    

1.3.6變數值的三個重要特徵

name = 'egon'
  • id:反應的是變數值的記憶體地址,記憶體地址不同id不同

    print(id(name))
    
  • type:不同型別的值用來表示記錄不同的狀態

    print(type(name))
    
  • value:值本身

  • is與==

    • is:比較左右兩個值的id是否相等
    • ==:比較左右兩個值他們是否相等
    >>> x = 'info:Egon: 18'
    >>> y = 'info:Egon: 18'
    >>> print(x,y)
    ('info:Egon: 18', 'info:Egon: 18')
    >>> x == y
    True
    >>> x is y
    False
    #python直譯器執行結果為上,pycharm中執行存在優化機制結果不一致
    

    總結:id不同的情況下,值有可能相同,即兩塊不同的記憶體空間裡可以存放相同的值

    ​ id相同的情況下,值一定相同

  • 小整數池[-5,256]:

    • python直譯器啟動那一刻開始,就會在記憶體中事先申請好一系列記憶體空間存放好常用的整數
    • pycharm記憶體優化擴大了這個整數池,實際上還是值相等的情況下id可能不同

1.3.7常量:不變的量

注意:python語法中沒有常量的概念,但是在程式的開發過程中會涉及到常量的概念

AGE_OF_ALEX = 73 # 小寫字母全為大寫代表常量,這是一種約定、規範

2.基本資料型別

2.1數字型別

  • 整形int

    • 作用:記錄年齡、個數等等

    • 定義:

      age = 18
      print(type(age))
      
  • 浮點型float

    • 作用:薪資、身高、體重

    • 定義:

      salary = 3.3
      height = 1.87
      weight = 70.3
      print(type(height))
      
  • 數字型別的其他使用

    • int和float之間可以相加

2.2字串型別str

字串:

  • 作用:記錄描述性質的狀態,名字、一段話

  • 定義:用引號(''," ",''' ''',""" """)包含的一串字元

xxx # 代表訪問變數名字

'xxx' # 代表的是值

  • 字串的巢狀:

    • 外層用單引號,內層用雙引號,反之亦然

    • 或用\轉義

      #列印   my name is 'egon'  的兩種方式
      print("my name is 'egon'")
      print('my name is \'egon\'')
      
  • 字串之間可以相加,但僅限於str和str之間進行,代表拼接,不推薦使用,因為str之間效率極低

  • 字串可以和整數相乘

2.3列表:索引對應值,索引從0開始,0代表第一個

  • 作用:按照位置記錄多個值,並且可以按照索引取指定位置的值,索引反映的是順序、位置,對值沒有描述性的功能

  • 定義:在[]內用逗號分隔開多個任意型別的值,一個值稱之為一個元素

    l = [10,3.1,'aaa',['bbb','ccc'],'ddd']
    print(l)
    print(l[1])
    print(l[2])
    print(l[3][1])
    
    print(l[4])
    print(l[-1])
    

2.4字典:key對應值,其中key通常為字串型別,所以key對值可以有描述性

  • 作用:用來存多個值,每個值都有唯一一個key與其對應,key對值有描述功能
  • 定義:在{}內用逗號分隔開多個key:value
d = {'a':1,'b':2}
print(d['a'])
  • list與dict

    • 相同點:都能存多個值,稱之為容器型別

    • 不同點:

      ​ ①list使用索引對應值,索引反映的是位置/順序

      ​ ②dict是key對應值,其中key通常為字串型別,而str具有描述性功能,所以key對值可以有描述性功能

2.5布林bool

  • 作用:記錄真假

  • 定義:

    True 真
    False 假
    

知識點:

1.什麼是變數?為何要有變數?

2.變數的三大組成部分是?每部分的作用是什麼?

3.變數名的命名原則、規範、風格

4.變數值的三個特徵是什麼?

5.is與==的區別

6.id相同值是否可以相同?

7.id不同值是否可以相同?

8.用變數的定義說明int、float、str、list、dict、bool型別用於記錄何種狀態,每種型別至少寫出三種示例