python開發環境
略
變數本質
1. python中的變數不需要先定義,再使用,可以直接使用,還有重新使用用以儲存不同類型的值。2.變數命名遵循C命名風格。
3.大小寫敏感。
4.變數引用計數。
5. del語句可以直接釋放資源,變數名刪除,引用計數減1。
6.變數記憶體自動管理回收,垃圾收集。
7.指定編碼在檔案開頭加入# coding: UTF8 或者#coding=utf8。
>>> a = 12>>> print a12>>> id(a)136776784>>> type(a)<class 'int'>>>> b = 12.34>>> print b12.34
>>> id(b)3071447616>>> type(b)<class 'float'>>>> a = "itcast">>> print aitcast
>>> id(a)3071127936>>> type(a)<class 'str'>>>> c = b
>>> print c12.34>>> id(c)3071447616>>> type(c)<class 'float'>
>>> b = 12>>> id(b)136776784>>> type(b)<class 'int'>>>> print b12
#無需定義,直接使用,python解譯器根據右值決定左側類型#變數a在記憶體中的編號
#a的類型為int類型
#變數b在記憶體中所佔記憶體編號#b的類型為float
#變數a從新指向一個字串#變數a在記憶體中的編號為儲存“itcast”地方,原來a所指向的記憶體編號裡內容並沒有立即釋放
#變數a現在指向一個字串
#變數c儲存的記憶體中的編號和b一致
#解譯器在記憶體中發現有儲存12的這個單元,於是變數b指向了此單元,減少了儲存空間的反覆申請與釋放
>>> print aitcast>>> del(a)>>> print aTraceback (most recent call last):
File "<stdin>", line 1, in <module>NameError: name 'a' is not defined
簡單函數
函數定義格式
defadd(x, y):z=x+y
returnz
res=add(3,5)printres
8
def定義函數的關鍵字
x和y為形參,不需要類型修飾
函數定義行需跟':'
函數體整體縮排
函數可以擁有傳回值,若無傳回值,返回None,相當於C中的NULL
輸入輸出函數
輸入和raw_input()內建函數
raw_input()從標準輸入擷取資料 返回的資料是字串類型需要使用int()進行轉換
輸出
print函數
>>> print "%s is %dsthello world "%("tody",1)tody is 1sthello world
>> 重新導向操作符
logfile = open('/tmp/mylog.txt','a')
print >>logfile,'error'
logfile.close()
局部變數和全域變數
代碼1.局部變數範圍覆蓋全域變數
defp_num():num=5
printnum
num=10p_num()printnum#結果: 5 10
代碼2.函數內有局部變數定義,解譯器不使用全域變數,局部變數的定義晚於被引用,報錯
defp_num():printnum
num=5printnum
num=10p_num()printnum#結果出錯
代碼3.函數內部可以直接存取全域變數
defp_num():printnum
num=10p_num()
printnum
#結果: 10 10
代碼4.函數內修改全域變數,使用global關鍵字
defp_num():globalnum
printnumnum=20printnum
num=10p_num()printnum
特殊變數
_xxx from module import *無法匯入__xxx__系統定義的變數
__xxx類的本地變數
運算式
算術運算式
+a
a
a + ba ba**ba * ba / ba//ba%b
邏輯運算式
not a a and b a or b a is b a is not b
關聯運算式
運算結果為布爾類型
==等於
!=不等於
<>不等於(廢棄)>大於
<小於
>=大於等於
<=小於等於
位元運算
結果符號不變對結果符號取負a加b
a減b
a的b次冪
a乘以ba除以b,真正除,浮點數保留小數a除以b,向下取整
a對b取餘數
a的邏輯非boola和b邏輯與boola和b邏輯或boola和b是同一個對象boola和b不是同一個對象bool
~a按位取反
a<<n a左移n位a>>n a右移n位a&b a和b按位與a|b a和b按位或a^b a