Python學習筆記_Python基礎

來源:互聯網
上載者:User

標籤:python   基礎   

  • Python 基礎
  • 語句和文法
    • 注釋
    • 繼續
    • 程式碼群組
    • 代碼的縮排
    • 在一行書寫多個語句
    • 模組
  • 變數賦值
    • 賦值操作符
    • 增量賦值
    • 多重賦值
    • 多元賦值
  • python編寫的基本風格
    • 模組的結構和布局
  • 記憶體管理
    • 變數定義
    • 引用計數
      • 增加引用計數
      • 減少引用計數
      • del語句

Python 基礎語句和文法注釋

python中用#號進行注釋

繼續

如果一個語句需要跨行,那麼需要用\來串連兩個跨行的語句

if name == ‘qeesung‘ and     age == 23

在兩種情況下是不需要使用反斜線來進行跨行串連的:

  • 一個閉合操作時,即含有小括弧,中括弧,花括弧可以進行多行書寫,比如在定義一個列表,元組字典的時候就可以進行跨行
alist = [2,2,3,4,                                                         5,6,7,8                                                           ]                                                                                                    
  • 在三引號包括下的字串可以跨行書寫
test_str = ‘‘‘HelloWorld This is Great World‘‘‘
程式碼群組

縮排一個相同的語句的代碼快,我們稱之為程式碼群組,比如if,while,class等語句都是結束的

代碼的縮排

python是通過所經代碼來區分代碼塊的。隨著縮排深度的增加,代碼的層次也在加深,沒有縮排的代碼是最高層次的,被稱為指令碼的主體(main)部分

在一行書寫多個語句 (;)

之間我們講過用\來將一個語句寫在多行,現在我們可以用來將多個語句寫在一行

import sys ; x = ‘foo‘ ; sys.stdout.write(x+‘\n‘)
模組

每一個python指令檔都可以被當做是一個模組,模組以磁碟檔案的形式存在。
模組裡的代碼可以是一段直接執行的指令碼,也可以是的一堆類似庫函數的代碼

變數賦值

首先我們先來理解一下什麼叫做對象,對象就是一個在記憶體中有類型的地區。

賦值操作符

python語句裡面,=是主要的賦值操作符

anInt = 12aString = ‘Hello World‘# ...

注意:

  • python裡面的賦值不是將一個值賦值給一個變數,在賦值時,不管這個對象是新建立的,還是一個已經存在的,都是將對象的引用賦值給變數
  • 在python裡面的指派陳述式並不會返回一個值,下面語句就是錯誤的
x = 1y = (x=x+1)# error , 指派陳述式不傳回值
增量賦值

所謂的增量賦值就是採用下面的操作符:+=,-=,**=等操作符
注意:
增量賦值和一般的賦值操作不僅僅是寫法上的改變,還有更加深層次的改變:

  • 一般賦值操作是一定會改變變數指向的對象的值
  • 增量賦值操作對於不可變對象來說,會改變變數指向的對象;對於可變對象來說,不會改變變數指向的對象

下面舉個栗子:
一般賦值操作

print ‘+‘*6, ‘ number ‘, ‘+‘*6number1 = 1print id(number1)number1 = 2print id(number2)print print ‘+‘*6,‘ list ‘ , ‘+‘*6list1 = [1,2,3]print id(list1)list1 = [4,5,6]print id(list1)

運行結果:
++++++ number ++++++
157259952
157259940
++++++ list ++++++
3077201548
3074661452

可見一般的賦值操作是會改變變數指向的對象的

增量賦值操作

print ‘+‘*6, ‘ number ‘, ‘+‘*6number1 = 1print id(number1)number1 += 2print id(number2)print print ‘+‘*6,‘ list ‘ , ‘+‘*6list1 = [1,2,3]print id(list1)list1 += [4,5,6]print id(list1)

運行結果:
++++++ number ++++++
159398064
159398040
++++++ list ++++++
3077873292
3077873292

所以對於不可變對象來說,增量賦值操作是會改變變數指向的對象的,對於可變對象來說,增量操作是不會改變變數指向的對象的

多重賦值

看下面的栗子:

x = y = z = 1

建立了一個值為1的整形對象,然後將其引用傳給x,y,z,三個變數

多元賦值

多元賦值其實就是元組的賦值

x, y, z=1, 2, `a string`

實際上就是下面的元組賦值

(x, y, z)=(1, 2, ‘a string‘)
python編寫的基本風格模組的結構和布局

在編寫一個python指令碼的時候可以按照下面的布局進行編寫:

  1. 起始行:#/usr/bin/env python
  2. 模組文檔:‘‘‘ this is a test modle ‘‘‘
  3. 模組匯入:import sys
  4. 變數定義: list1 ={} ;number1 = 0
  5. 類定義:class MyClass:
  6. 函數定義: def func():
  7. 主程式: if __name__ == ‘__main__‘:

由於主程式碼不論是模組被匯入還是直接執行都會運行,我們必須知道程式的運行方向,在某些情況下,一個應用程式需要匯入另一個應用程式的一個模組,以便重用某些代碼,這時,我們只想訪問那些位域其他應用程式中的代碼,而不想運行它們,我們可以通過__name__來判斷一個程式是作為模組被匯入還是作為程式來運行:

  • 如果模組被匯入,__name__就是模組的名字;
  • 如果模組是被直接運行,__name__的值就是__main__

於是我們可以利用上面的這種機制,來將測試代碼也寫在主程式中,在獨立運行代碼的時候,我們就運行測試代碼,在作為模組被匯入的時候,就什麼都不做

舉個栗子:

#/usr/bin/env python‘‘‘there are math function‘‘‘def my_add(number1 , number2):    return number1+number2def my_sub(number1, number2):    return number1-number2if __name__ == ‘__main__‘:    if 10 == my_add(4, 6):        print ‘add test pass‘    else:        print ‘add test failed‘    if -2 == my_sub(4, 6):        print ‘sub test pass‘    else:        print ‘sub test failed‘

如果我們直接運行這個指令碼,那麼就會運行測試代碼,如果作為模組匯入,就什麼都不做

記憶體管理

python定義的變數有下面的特性:

  • 變數無序事先聲明
  • 變數無序指定類型
  • 程式猿不用關心記憶體管理
  • 變數名會被”回收”
  • del 語句能夠直接釋放資源
變數定義

python裡面的變數只有被建立和賦值後才能被使用,因為任何變數如果沒有初始化,那麼變數就沒有任何意義。

引用計數

在建立一個對象的時候,就建立一個引用計數,當這個對象不再需要時,也就是說,這個對象的引用計數變為0時,它就被記憶體回收。

增加引用計數

當對象被建立並將其引用賦值給變數時,該對象的引用計數就被設定為1
舉個栗子:

x = 3.14 # 建立一個浮點型對象,並將引用賦值給x,引用計數為1y = x # 為x指向的浮點型對象建立一個新的別名,引用計數增加為2

還有一些其他方法也能增加對象的引用計數,比如將該對象作為參數傳入函數,或者將對象加入到容器物件當中。

#對象被建立x = 3.14#另外的別名被建立y = x#作為參數傳遞給函數foobar(x)#成為容器物件的一個對象list1=[123, x, ‘xyz‘]
減少引用計數

當對象的引用被銷毀時,引用計數會減少,比較常見的就是變數離開其作用範圍時。比如函數運行結束時,所有的局部變數都被自動銷毀,對象的引用計數就隨之減少。

在下面的情況下,一個對象的引用計數會減少:

  • 一個本機物件引用離開了其作用範圍
  • 對象的別名被銷毀
del x 
  • 對象的一個別名被賦值給其他對象的引用
x = 123
  • 從一個視窗對象中移除
list1.remove(x)
  • 視窗對象本身被銷毀
del list1
del語句

del 語句會刪除對象的一個引用,當del所刪除的對象的引用計數減少為0以後,該對象就會被垃圾收集器回收

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

Python學習筆記_Python基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.