Python使用基礎

1) 基本概念
1.1 常量
Python沒有提供常量保留字,須要自行擴展一個常量類來實現常量功能python

class _const:
class ConstError(TypeError):pass
def __setattr__(self,name,value):
if self.__dict__.has_key(name):
raise self.ConstError,"Can't rebind const (%s)"% name
self.__dict__[name]=value編程

import sys
sys.modules[__name__]=_const()閉包

1.2 數字
類型:整數(int), 長整(long), 浮點(float), 複數
PS: 沒有double類型
代碼段:
i = 1234
print type(i)
i = 1234l
print type(i)
i = float(i)
print type(i)
i = 1234312515431643643613615
print type(i)
i = 213.432151
print type(i)
i = 34131251325125312441241421415.125125315
print type(i)
運行結果:函數

<type 'int'>
<type 'long'>
<type 'float'>
<type 'long'>
<type 'float'>
<type 'float'>編碼

1.3 字符串
單引號'abc', 雙引號"abc", 三引號"""abc""""或'''abc''', 三者效果相同,都是str類型
例子:'ab"abc"d'其實是字符串ab"abc"d命令行

"""做用有三:
a. 字符串;b. 塊註釋(多行註釋); c. 文檔字符串(help)
反斜槓用做轉義字符\, 若是字符串前使用r"hello world!\n"會忽略裏面的轉移字符\n,相似C#中的@
eval(字符串),把字符串看成是表達式進行計算
1.4 變量
變量名大小寫敏感,首字母必須爲字母或下劃線對象

1.5 數據類型
數值
字符串
線性容器
字符串也算一種線性容器
List
tuple
Hash容器:Dict, set
None類型
布爾類型(True, False),全部非零值都默認爲True,0爲False
1.6 邏輯行和物理行
一個物理行使用多個邏輯行,應使用分號;隔開
一個邏輯行分多個物理行表示,應使用反斜槓\分割繼承

1.7 縮進
縮進錯誤會致使執行錯誤,建議用四個空格做爲縮進(不要混用空白和Tab做爲縮進)文檔

2) 運算符與表達式
2.1 運算符
位運算:基本和C#相同:&與, |或, ^異或, <<左位移, >> 右位移 以及特殊的~按位翻轉
比較操做: <, >, <=, >=, ==, !=
邏輯比較操做: not, and, or,這是和C#不一樣的
2.2 運算符優先級
略過字符串

2.3 表達式
字符串表達式
數值表達式
邏輯表達式
函數式表達式
例子:
a= lamua x:x+1
a(2) #輸出值爲3
3) 邏輯控制結構
if/elif/else
if <表達式>:
命令行1
命令行n
elif <表達式>:
命令行
else:
命令行
for
for 變量 in <tuple類型變量>:
print 變量

其中tuple變量能夠來自range函數或xrange函數,range和xrange函數的格式是:range(起點值, 終點值, 步長)
else
在Python中else除了能夠出如今if中,還能夠出如今for還while中,else只在整個循環徹底執行的狀況下執行,若是循環被break語句終止,則不會執行else分支
while
4) 函數
使用def定義函數,支持缺省參數
例子:
def function(a=1, b=2, c=3):
print a
print b
print c

function() #將輸出1,2,3
函數容許有多個返回值
例子:
def function():
return 1, 2, 3
c, d, e = function()
print c
print d
print e
# 打印1,2,3
函數可賦值指向某個變量,在Python中函數也是一個對象
例子:
def function(a):
print a
f = function
f("Hello") #等同於執行function("Hello")
Lambda表達式
閉包
5) 面向對象編程
類的定義
例子:
class a:
def __init__(self): #__init__(self)是缺省構造函數
self.m = 1 #定義屬性m爲1

class b(a): # 定義類b從類a繼承
"""這是類b的註釋"""
def __init__(self):
a.__init__(self) # Python不會自動調用基本類的constructor,你得親自專門調用它
self.n = 2
self.__nn = 3 # 私有屬性__nn
def sum(self, num): # 必須添加self關鍵字代表是類成員
"""這是類b中sum方法的註釋"""
print self.m + self.n + num
def __privateMethod(self): # 定義類b的私有方法,外部不可見
print "It's a private method with prefix :__"

objB = b()
objB.sum(5) # 輸出8
print type(objB) # 輸出<type 'instance'>,說明是一個實例
print type(b) # 輸出<type 'classobj'>, 說明是一個類
print objB.__doc__ # 輸出類b的註釋:這是類b的註釋
print objB.sum.__doc__ # 輸出:這是類b中sum方法的註釋
私有成員(屬性、方法)
一個 Python 函數,類方法,或屬性的名字以兩個下劃線開始(但不是結束),它是私有的;其它全部的都是公有的。
專有成員(屬性、方法)
專有方法是以__開始和結尾的公開方法,是在特殊狀況下或當使用特別語法時由 Python 替你調用的,而不是在代碼中直接調用(象普通的方法那樣)
須要特別注意的是,Python中的類屬性,能夠在類中定義,也能夠在類以外定義,甚至容許在實例上定義
例子:
class Personality:
def __init__(self, name = "William"):
self.Name = name
self.Sex = True
self.__Money = 0.0

william = Personality()
william.Nickname = "Wind" # 在實例上增添屬性Nickname, 今後該實例上有Nickname這個屬性
print william.Nickname

Personality.Age = 32 # 在類以外增添屬性Age, 全部Personality的實例上都將有Age=32,包括此前實例化的william
print william.Age

6) 異常處理
例子:
class Personality:
def __init__(self, name = "William"):
self.Name = name
self.Sex = True
self.__Money = 0.0

def Test(self):
try:
i = 1/0
except Exception, e:
print e
def Test2(self):
pass # 關鍵字pass, 佔位符todo

wc = Personality()
wc.Test()
# 將輸出:integer division or modulo by zero

7) 模塊與包
經過在文件首行插入#coding=UTF-8標示編碼類型
使用#!/usr/bin/python27,來指定Python的位置

8) 文件和目錄操做open函數read, readline, seek, write, writelineos包中的os.listdir和os.walk函數

相關文章
相關標籤/搜索