1. 程式人生 > >Python學習筆記_Python基礎

Python學習筆記_Python基礎

Python 基礎

語句和語法

註釋

python中用#號進行註釋

繼續

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

if name == 'qeesung' and \
    age == 23

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

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

程式碼組

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

程式碼的縮排

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

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

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

import sys ; x = 'foo'
; sys.stdout.write(x+'\n')

模組

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

變數賦值

首先我們先來理解一下什麼叫做物件,物件就是一個在記憶體中有型別的區域。

賦值操作符

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

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

注意:

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

增量賦值

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

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

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

print '+'*6, ' number ', '+'*6
number1 = 1
print id(number1)
number1 = 2
print id(number2)
print 

print '+'*6,' list ' , '+'*6
list1 = [1,2,3]
print id(list1)
list1 = [4,5,6]
print id(list1)

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

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

增量賦值操作

print '+'*6, ' number ', '+'*6
number1 = 1
print id(number1)
number1 += 2
print id(number2)
print 

print '+'*6,' list ' , '+'*6
list1 = [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+number2

def my_sub(number1, number2):
    return number1-number2

if __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,引用計數為1
y = 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基礎

Python 基礎 語句和語法 註釋 python中用#號進行註釋 繼續 如果一個語句需要跨行,那麼需要用\來連線兩個跨行的語句 if name == 'qeesung' and \ age == 23 在兩種情況

python學習筆記01-基礎

對象 方法 避免 python value 格式化 可變 %x 是否 數據類型:(1)整數(2)浮點數整數和浮點數在計算機內部存儲的方式是不同的(3)字符串Python還允許用r‘‘表示‘‘內部的字符串默認不轉義(4)布爾值(5)空值空值是Python裏一個特殊的值,用N

Python學習筆記_1_基礎_6:文件

sleep trunc std yesterday str key readline end lose 一、打開文件 1、打開方式 # r:只讀方式,文件的指針將會放在文件的開頭;若文件不存在則報錯。(這是默認模式)# w:寫方式,重新創建文件;即不存在就創建,存在則覆蓋#

Python學習筆記_1_基礎_9:軟件目錄結構規範

解決 快捷 rem developer 依賴問題 軟件 work 應用 開始 本文轉載至:http://www.cnblogs.com/alex3714/articles/5765046.html 一、為什麽要設計好目錄結構? "設計項目目錄結構",就和"代碼編碼風格"

python學習筆記02 --------------基礎資料型別

python的基本資料型別: 1.基本資料 1.1. 數字型別 1.1.1 整數 int int()           #將括號內內容轉化為整數型別。 1.1.2 浮點數 float 1.1.3 複數 complex  

Python學習筆記 ---- 計算機基礎Python簡介(簡述)

計算機基礎: 1、CPU(計算機的大腦): 中央處理單元(Central Process Unit,CPU);是一塊超大規模的積體電路,是一臺計算機的運算核心和控制核心; 主要功能:解釋計算機指令以及處理計算機軟體中的資料。 CPU主要包括運算器、高速緩衝單元以及實現它們之間連線

python 學習筆記基礎輸入輸出,字串,迴圈,三種陣列)

學習python發現這門語言和其他語言有很多不同之處,比如python的變數不需要要宣告型別,python是解釋性語言所以要注意函式定義的位置,python注重程式碼格式而不注重符號。python方便得陣列元組和強大的內建爬蟲庫。寫的可能不夠詳細不夠好但是主要想通過文章以後看的時候回想知

Python學習筆記----Numpy基礎(陣列物件的屬性及陣列建立)

Numpy是Python的一種開源的數值計算擴充套件,這種工具可以用來儲存和處理大型矩陣,比Python自身的巢狀列表結構高效的多。 Numpy的主要物件是同構多維陣列(ndarray),它是一個元素表,所有元素都是相同的資料型別,由正整數元組索引。 下面列舉一些nd

python學習筆記基礎操作(五)字串格式化(1)%格式化

格式化基本格式 s = "i am %s ,i am %d years old ,and i like %s"%("haiyang",20,"zhu") print(s) #區分資料型別,無法自動在字串

python學習筆記基礎操作(五)字串格式化(2)format

format格式化 1,基本格式 #對於每一個大括號,在後面的引數中找到對應的引數插進來 #format操作類似於於將傳入的引數製成多個數據的資料結構元組或者字典,然後依照索引插入引數 s = "i a

python學習筆記基礎操作(六)生成器和迭代器

生成器總結 語法上和函式類似:生成器函式幾乎和常規函式一樣,不同的又兩點, 第一點是返回使用yield關鍵字,第二點是在連續邏輯內可以多次返回 這是yield的特點決定的,yield會記住函式執行的位

學習筆記_python基礎用法

知識點 列表、元組操作 元組 字串操作 字典 集合 檔案操作 裝飾器 Json 與 pickle 列表、元組操作 定義: names=[‘element1’,’element2’] # names :列表名 []:資料標誌 eleme

Python學習筆記-基礎Day01

虛擬機 python 處理器 Python與其他語言的對比:C 和 Python、Java、C#對比C語言:代碼編譯得到機器碼,機器碼在處理器上直接執行。其他語言:代碼編譯得到字節碼,虛擬機執行字節碼並轉換成機器碼然後在處理器上執行Python之類的高級語言相對C語言開發效率較高,不需要開發者考慮

Python學習筆記-Day1-Python基礎

sla yun rac ifs san inb ida lam link %E5%AD%97%E8%8A%82%E5%BA%8F%E8%BD%AC%E6%8D%A2%E4%B8%8E%E7%BB%93%E6%9E%84%E4%BD%93%E4%BD%8D%E5%9F%9Fb

Python學習筆記 ---- Python基礎

inpu 所有 筆記 計算 clas tuple 對數 進行 6.2 前言   Python版本: 3.6.2 一、輸入和輸出 1.輸出:   用print()可以輸出指定內容.   括號中內容可以為字符串:  print("Hello,world")   也可以為用逗

python學習筆記(基礎)

python剛開始學,可能記得有點亂,因為本人習慣在作業本上記筆記,慢慢改進。。。。。Python純面向對象的編程語言 數據類型:這段數據在內存中的組織方式 Python:強類型的動態語言動態:整型:a=1 字符型:b=aaa強類型:a+b不可執行,類型不同Str(a) 運算符重載‘1’Str(a)

2.Python學習筆記:基礎

沒有 span pre code max 不執行 con 偶數 while循環 輸出三個數中最大值: num1=int(input(‘num1:‘)) num2=int(input(‘num2:‘)) num3=int(input(‘num3:‘)) if num1>

3.Python學習筆記:基礎

tro 完成 put == 整數 不執行 退出 %s mage 字符串的格式化輸出:   %s  占位符   %d  整數   %f  浮點數 name=input(‘你的姓名:‘) age=int(input(‘你的年齡:‘)) job=input(‘你的工作:‘) s

Python 學習筆記之 Numpy 庫——數組基礎

array oat dot tac 運算 stop ogr 數據類型 總數 1. 初識數組 import numpy as np a = np.arange(15) a = a.reshape(3, 5) print(a.ndim, a.shape, a.dtype, a.

python學習筆記--python編程基礎

優雅 地址 變量賦值 對象 賦值 brush 功能 之前 定義變量 一.一個隆重的儀式   我們在學習語言的時候,第一個寫的程序肯定都是hello world.來寫第一個程序吧,其實很簡單,python的語法就是簡單、優雅,一個print就搞定。 1 print(‘hel