python-之基本語法

 

模塊一些函數和類的集合文件,並實現必定的功能,當咱們須要使用這些功能的時候,能夠直接把相應的模塊導入到咱們的程序中html

importpython

import mode    #導入mode模塊bash

即導入mode模塊後,使用mode.***便可使用mode模塊中的***方法,函數等。app

from...import...函數

from mode import argv,path       #從mode中導入特定的成員優化

即便用from mode import argv便可直接調用mode模塊中argv函數,方法等ui

簡單的說,使用第二種方法導入模塊,那麼調用模塊中的函數的時候就不須要輸入模塊名稱便可直接調用了。this

 

http://jingyan.baidu.com/article/642c9d34e837d4644a46f7a2.htmlspa


 

 

序列有兩種:tuple(定值表; 也有翻譯爲元組) 和 list (表).net

tuple的各個元素不可再變動,而list的各個元素能夠再變動。

一、元素的引用

範圍引用: 基本樣式 [下限:上限:步長]——上限不包括

一、for循環

二、while循環

三、中斷循環

  • continue 在循環的某一次執行中,若是遇到continue, 那麼跳過這一次執行,進行下一次的操做

  • break 中止執行整個循環

 

1、詞典

一、經常使用的詞典方法

>>>print dic.keys() # 返回dic全部的鍵

>>>print dic.values() # 返回dic全部的值

>>>print dic.items() # 返回dic全部的元素(鍵值對)

>>>dic.clear() # 清空dic,dict變爲{}

>>>del dic['tom'] # 刪除 dic 的‘tom’元素

2、文本文件的輸入輸出

對象名 = open(文件名,模式)

最經常使用的模式有:

  • r 打開只讀文件,該文件必須存在。
  • r+ 打開可讀寫的文件,該文件必須存在。
  • w 打開只寫文件,若文件存在則文件長度清爲0,即該文件內容會消失。若文件不存在則創建該文件。
  • w+ 打開可讀寫文件,若文件存在則文件長度清爲零,即該文件內容會消失。若文件不存在則創建該文件。
  • a 以附加的方式打開只寫文件。若文件不存在,則會創建該文件,若是文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。
  • a+ 以附加方式打開可讀寫的文件。若文件不存在,則會創建該文件,若是文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
  • 上述的形態字符串均可以再加一個b字符,如rb、w+b或ab+等組合,加入b 字符用來告訴函數庫打開的文件爲二進制文件,而非純文字文件。

,Python引入了with語句來自動幫咱們調用close()方法:

with open('/path/to/file', 'r') as f: print f.read()

二、文件對象的方法

content = f.read(N) # 讀取N bytes的數據

content = f.readline() # 讀取一行

content = f.readlines() # 讀取全部行,儲存在列表中,每一個元素是一行。

f.write('I like apple!\n') # 將'I like apple'寫入文件並換行

f.close() # 不要忘記關閉文件

3、模塊

咱們先寫一個first.py文件,內容以下:

def laugh(): print 'HaHaHaHa' 

再寫一個second.py,並引入first中的程序:

import first #將first文件引入 for i in range(10): first.laugh()


Python中還有其它的引入方式:

import a as b # 引入模塊a,並將模塊a重命名爲b from a import function1 # 從模塊a中引入function1對象。調用a中對象時,咱們不用再說明模塊,即直接使用function1,而不是a.function1。 from a import * # 從模塊a中引入全部對象。調用a中對象時,咱們不用再說明模塊,即直接使用對象,而不是a.對象。

二、模塊包

能夠將功能類似的模塊放在同一個文件夾(好比說this_dir)中,構成一個模塊包。經過

import this_dir.module 

引入this_dir文件夾中的module模塊。

該文件夾中必須包含一個 __init__.py 的文件,提醒Python,該文件夾爲一個模塊包。__init__.py 能夠是一個空文件。

4、函數的參數傳遞

一、關鍵字傳遞

有些狀況下,用位置傳遞會感受比較死板。關鍵字(keyword)傳遞是根據每一個參數的名字傳遞參數。關鍵字並不用遵照位置的對應關係。依然沿用上面f的定義,更改調用方式:

print(f(c=3,b=2,a=1)) 

關鍵字傳遞能夠和位置傳遞混用。但位置參數要出如今關鍵字參數以前:

print(f(1,c=3,b=2))

二、參數默認值

在定義函數的時候,使用形如a=19的方式,能夠給參數賦予默認值(default)。若是該參數最終沒有被傳遞值,將使用該默認值。

def f(a,b,c=10): return a+b+c print(f(3,2)) print(f(3,2,1))

三、包裹傳遞

在定義函數時,咱們有時候並不知道調用的時候會傳遞多少個參數。這時候,包裹(packing)位置參數,或者包裹關鍵字參數,來進行參數傳遞,會很是有用。

下面是包裹位置傳遞的例子:(元組)

def func(*name): print type(name) print name func(1,4,6) func(5,6,7,1,2,3)

下面是包裹關鍵字傳遞的例子:(字典)

def func(**dict): print type(dict) print dict func(a=1,b=9) func(m=2,n=1,c=11)
包裹傳遞的關鍵在於定義函數時,在相應元組或字典前加 * 或 * * 。

四、解包裹

 

* 和 **,也能夠在調用的時候使用,即解包裹(unpacking), 下面爲例:

 
1 def func(a,b,c):
2     print a,b,c
3 args = (1,3,4)
4 func(*args)

在這個例子中,所謂的解包裹,就是在傳遞tuple時,讓tuple的每個元素對應一個位置參數。在調用func時使用 * ,是爲了提醒Python:我想要把args拆成分散的三個元素,分別傳遞給a,b,c。(設想一下在調用func時,args前面沒有 * 會是什麼後果?)

 

相應的,也存在對詞典的解包裹,使用相同的func定義,而後:

 
1 dict = {'a':1,'b':2,'c':3}
2 func(**dict)

在傳遞詞典dict時,讓詞典的每一個鍵值對做爲一個關鍵字傳遞給func。

五、混合

在定義或者調用參數時,參數的幾種傳遞方式能夠混合。但在過程當中要當心先後順序。

基本原則是:先位置,再關鍵字,再包裹位置,再包裹關鍵字,而且根據上面所說的原理細細分辨。

5、循環設計

一、range()

實現下標對循環的控制

二、enumerate()

每次循環中同時獲得下標和元素

 

三、zip()

若是你多個等長的序列,而後想要每次循環時從各個序列分別取出一個元素,能夠利用zip()方便地實現:

zip()函數的功能,就是從多個列表中,依次各取出一個元素。每次取出的(來自不一樣列表的)元素合成一個元組,合併成的元組放入zip()返回的列表中。zip()函數起到了聚合列表的功能。

 

6、函數對象

一、lambda函數

func = lambda x,y: x + y

print func(3,4)

ambda生成一個函數對象。該函數參數爲x,y,返回值爲x+y。函數對象賦給func。func的調用與正常函數無異。

以上定義能夠寫成如下形式:



def func(x, y): return x + y

二、函數做爲參數傳遞

函數能夠做爲一個對象,進行參數傳遞。函數名(好比func)即該對象。好比說:


def func(x, y):
return x + y

def test(f,a,b):
print 'test'
return f(a,b)

print test(func,3,5)

test函數的第一個參數f就是一個函數對象。將func傳遞給f,test中的f()就擁有了func()的功能。

咱們所以能夠提升程序的靈活性。可使用上面的test函數,帶入不一樣的函數參數。好比:

test((lambda x,y: x**2 + y), 6, 9)

三、map()函數

這裏,map()有兩個參數,一個是lambda所定義的函數對象,一個是包含有多個元素的表。map()的功能是將函數對象依次做用於表的每個元素,每次做用的結果儲存於返回的表re中。map經過讀入的函數(這裏是lambda函數)來操做數據(這裏「數據」是表中的每個元素,「操做」是對每一個數據加3)。

四、filter()函數

filter函數的第一個參數也是一個函數對象。它也是將做爲參數的函數對象做用於多個元素。若是函數對象返回的是True,則該次的元素被儲存於返回的表中。

 filter經過讀入的函數來篩選數據。一樣,在Python 3.X中,filter返回的不是表,而是循環對象。

def func(a):
if a > 100:
return True
else:
return False


print filter(func,[10,56,101,500,602])

五、reduce()函數

reduce函數的第一個參數也是函數,但有一個要求,就是這個函數自身能接收兩個參數。reduce能夠累進地將函數做用於各個參數。

print reduce((lambda x,y: x+y),[1,2,5,7,9])
上面例子,至關於(((1+2)+5)+7)+9
提醒: reduce()函數在3.0裏面不能直接用的,它被定義在了functools包裏面,須要引入包。

7、裝飾器

裝飾器(decorator)是一種高級Python語法。裝飾器能夠對一個函數、方法或者類進行加工。


def decorator(F):
def new_F(a, b):
print("input", a, b)
return F(a, b)
return new_F

# get square sum
@decorator
def square_sum(a, b):
return a**2 + b**2

# get square diff
@decorator
def square_diff(a, b):
return a**2 - b**2

print(square_sum(3, 4))
print(square_diff(3, 4))

當咱們調用square_sum(3, 4)的時候,就至關於:



square_sum = decorator(square_sum) square_sum(3, 4)

7、內存管理

是數字的引用,整數1爲一個對象。而a是一個引用。

可見a和c其實是指向同一個對象的兩個引用。

 

py是源文件,pyc是源文件編譯後的文件,pyo是源文件優化編譯後的文件,pyd是其餘語言寫的Python

相關文章
相關標籤/搜索