Python用法摘要 BY 四喜三順

函數的定義:
def function_name(parameters):
    block
    return expression

自帶函數:
abs(-9)    #取絕對值
round(3.4)    #浮點數四捨五入到整數
pow(2,4)    #2的4次方
raw_input()    #用戶輸入
例如:
>>>    name=raw_input("Pls enter a name: ")
    Pls enter a name: Obama
>>>    name
    'Obama'
    
模塊:
>>>    import math
>>> math.sqrt(9)
    3.0

定義本身的模塊:name.py中存放function一、function2等,name.function1

經常使用的字符串處理方法:
S.lower() #將S中全部字母轉化成小寫並輸出
S.upper() #將S中全部字母轉化成大寫並輸出
S.islower() #測試S中全部字母是否都爲小寫
S.isupper() #測試S中全部字母是否都爲大寫
S.swapcase() #大小寫互換
S.capitalize() #首字母大寫

S.find(s,beg)        #返回S中索引beg以後首次出現s的索引,如沒有返回-1
S.find(s,beg,end)    #返回S中索引beg與索引end之間首次出現s的索引,如沒有返回-1
如:
>>>    "abcdefg".find("f",3)
    5
>>>    "abcdefg".find("f",3,6)
    5

S.replace(old,new)    #將S中全部old替換成new
如:
>>>    "abcdefg".replace("b","M")
    'aMcdefg'

S.split(del)    #將del分割的子串以列表的形式返回
如:
>>>    "abcdefg".split("b")
    ['a', 'cdefg']

S.strip(s)    #刪除字符串中的s並返回
S.startswith(s)    #判斷是否以s開始並返回
S.endswith(s)    #判斷是否以s結尾並返回
如:
>>>    "Computer Science".swapcase().endswith("ENCE")
    True

Dictionary數據類型:
大括號括起來,裏邊是多個元素,每一個元素由"key":"value"組成,元素之間逗號間隔
如:d={"1":"Alsen","2":"Oxsel"}
能夠發現輸入命令行d["2"]時,系統返回'Oxsel'
key大小寫敏感
增長元素時,只須要命令行 d["4"]="Fabien"便可,鍵值對在d中不排序
刪除元素時,del d["2"]
清空元素時,d.clear()
>>> d={"1":"Alsen","2":"Oxsel"}
>>> d.keys()
['1', '2']
>>> d.values()
['Alsen', 'Oxsel']
>>> d.items()
[('1', 'Alsen'), ('2', 'Oxsel')]
>>> ["%s=%s" %(k,v) for k,v in d.items()]
['1=Alsen', '2=Oxsel']
>>> ";".join(["%s=%s" %(k,v) for k,v in d.items()])
'1=Alsen;2=Oxsel'



    
List數據類型:
>>> original=['H','He']
>>> final=original+['Be']
>>> final
    ['H', 'He', 'Be']

>>> metals="Fe Ni".split()
>>> metals*4
    ['Fe', 'Ni', 'Fe', 'Ni', 'Fe', 'Ni', 'Fe', 'Ni']

for循環
>>> outer=['1','2','3','4']
>>> inner=['A','B','C']
>>> for digi in outer:
...     for alp in inner:
...             print digi+alp+'\t',
...
    1A    1B    1C    2A    2B    2C    3A    3B    3C    4A    4B    4C    
    
切片:
>>> marker=["a","b","c","d","e"]
>>> marker[1:4]
    ['b', 'c', 'd']
切片的list[i:j]從索引i(包含)開始,到索引j(不包含)結束

別名機制:A和B均引用了1個列表,經過A對該列表修改都能被B看到
>>> A=['0','1','2','3']
>>> B=A[:]
>>> A[2]='test'
>>> A
['0', '1', 'test', '3']
>>> B
['0', '1', '2', '3']

>>> A=['0','1','2','3']
>>> B=A
>>> A[2]='test'
>>> A
['0', '1', 'test', '3']
>>> B
['0', '1', 'test', '3']

列表:
>>> number='1 2 3 4 5'.split()    #分割,結果是['1', '2', '3', '4', '5']
>>> number.append('8')            #追加
>>> number.insert(3,'8')        #索引3處添加值8
>>> number.remove('8')        
>>> number.reverse()            #反轉列表中的順序
>>> number.sort()                #升序排列
>>> number.pop()                #移除,並返回列表的最後1個元素
>>> number.strip()                #去掉行結束符
例如:
>>> line="marshal\n"
>>> len(line)
8
>>> len(line.strip())
7

Tuple數據類型:
不可變的list,小括號包圍
不能向tuple中增長、刪除、查找元素
但可使用in來查看一個元素是否存在與tuple中


if語句:
注意的是(1)條件後邊要加冒號,即if condition:(2)要認真縮進。

for語句:
for variable in list:
    block
例如:
for i in range(2000,2050,4):
    print i
    
enumerate()函數:
返回pair,第一個元素爲索引,第二個元素爲值
for i in enumerate(range(2000,2050,4)):
    print i


while循環:
while condition:
    block
    
break和continue:
break:跳出循環體
continue:跳回循環體頂部,從新開始下一次迭代
如:
entry_number = 1
file = open("data.txt","r")
for line in file:
    line = line.strip()
    if line.startswith("#"):
        continue
    if line == "Earth":
        break
    entry_number = entry_number + 1
print "Earth is the %d th-lightest planet." %(entry_number)
也能夠寫成:
entry_number = 1
file = open("data.txt","r")
for line in file:
    line = line.strip()
    if not line.startswith("#"):
        if line == "Earth":
            break
    entry_number = entry_number + 1
print "Earth is the %d th-lightest planet." %(entry_number)

連續值賦值:
>>> (m,tu,w,th,f,s)=range(6)
>>> tu
1
>>> th
3

映射賦值:
>>> li=[1,3,4,7,5]
>>> [i*2 for i in li]
[2, 6, 8, 14, 10]
>>> li
[1, 3, 4, 7, 5]
>>> [i for i in li if i>6]
[7]

and 和 or :
執行布爾邏輯演算,可是它們並不返回布爾值,而是返回它們實際進行比較的值之一
從左到右演算表達式的值
>>> a="first"
>>> b="second"
>>> 1 and a or b
'first'
>>> 0 and a or b
'second'

導入模塊:
方法一:import module
方法二:from module import XXX
區別在於:
>>> import types
>>> types.FunctionType
<type 'function'>
>>> FunctionType
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'FunctionType' is not defined
>>> from types import FunctionType
>>> FunctionType
<type 'function'>
若是要常常訪問模塊的屬性和方法,且不想一遍又一遍地敲入模塊名,使用 from module import。
若是模塊包含的屬性和方法與你的某個模塊同名,你必須使用 import module 來避免名字衝突。
儘可能少用 from module import * ,由於斷定一個特殊的函數或屬性是從哪來的有些困難,而且會形成調試和重構都更困難。


類class:
經過結構(struct),咱們將簡單數據類型(int,float,bool……)或簡單數據類型的數組、指針,組合成一個新的數據類型。
世界是由「數據」和「動做」組成的。光能定義出各類數據類型,還只是編程世界的一半。
類(class)的定義中,加入了函數
「動做」與「數據」從這裏開始合二爲一,在類的定義裏,同時能夠包括數據及函數。由此開啓了「面向對象」世界之門

1. 使用一個名爲 __init__ 的方法來完成初始化。
2. 全部的實例方法都擁有一個 self 參數來傳遞當前實例,相似於 this。
3. 可使用 __class__ 來訪問類型成員
例子:
*********************************************************************
class Person():
    population=0
    def __init__(self,name):
        self.name=name
        Person.population+=1
    def sayHi(self):
        print 'Hello everyone, my nationality is %s'% self.name
    def howMany(self):
        if Person.population==1:
            print "I am the only one here"
        else:
            print "We have %d people here" % Person.population

a=Person('China')
a.sayHi()
a.howMany()     
 
b=Person('USA')
b.sayHi()
b.howMany()

c=Person('France')
c.sayHi()
c.howMany()
*********************************************************************
結果:
Hello everyone, my nationality is China
I am the only one here
Hello everyone, my nationality is USA
We have 2 people here
Hello everyone, my nationality is France
We have 3 people here

另外一個例子:
*********************************************************************
class Account(object):
    "一個簡單的類"
    account_type="Basic"
    def __init__(self,name,balance):
        "初始化一個新的Account實例"
        self.name=name
        self.balance=balance
    def deposit(self,amt):
        "存款"
        self.balance=self.balance+amt
    def withdraw(self,amt):
        "取款"
        self.balance=self.balance-amt
    def inquiry(self):
        "返回當前餘額"
        return self.balance
    
a=Account('1',50)
a.deposit(33)
a.withdraw(16)
print(a.balance)
*********************************************************************
結果:
67express

相關文章
相關標籤/搜索