python-之基本语法
?
模塊一些函數和類的集合文件,并實現一定的功能,當我們需要使用這些功能的時候,可以直接把相應的模塊導入到我們的程序中
import
import mode ? ?#導入mode模塊
即導入mode模塊后,使用mode.***即可使用mode模塊中的***方法,函數等。
from...import...
from mode import argv,path ? ? ? #從mode中導入特定的成員
即使用from mode import argv即可直接調用mode模塊中argv函數,方法等
簡單的說,使用第二種方法導入模塊,那么調用模塊中的函數的時候就不需要輸入模塊名稱即可直接調用了。
?
http://jingyan.baidu.com/article/642c9d34e837d4644a46f7a2.html
?
?
序列有兩種:tuple(定值表; 也有翻譯為元組) 和 list (表)
tuple的各個元素不可再變更,而list的各個元素可以再變更。
1、元素的引用
范圍引用: 基本樣式?[下限:上限:步長]——上限不包括
1、for循環
2、while循環
3、中斷循環
-
continue?在循環的某一次執行中,如果遇到continue, 那么跳過這一次執行,進行下一次的操作
-
break?停止執行整個循環
?
一、詞典
1、常用的詞典方法
二、文本文件的輸入輸出
對象名 = 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()2、文件對象的方法
content = f.read(N) # 讀取N bytes的數據
content = f.readline() # 讀取一行
content = f.readlines() # 讀取所有行,儲存在列表中,每個元素是一行。
f.write('I like apple!\n') # 將'I like apple'寫入文件并換行
f.close() # 不要忘記關閉文件
三、模塊
我們先寫一個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.對象。2、模塊包
可以將功能相似的模塊放在同一個文件夾(比如說this_dir)中,構成一個模塊包。通過
import this_dir.module引入this_dir文件夾中的module模塊。
該文件夾中必須包含一個?__init__.py?的文件,提醒Python,該文件夾為一個模塊包。__init__.py?可以是一個空文件。
四、函數的參數傳遞
1、關鍵字傳遞
有些情況下,用位置傳遞會感覺比較死板。關鍵字(keyword)傳遞是根據每個參數的名字傳遞參數。關鍵字并不用遵守位置的對應關系。依然沿用上面f的定義,更改調用方式:
print(f(c=3,b=2,a=1))關鍵字傳遞可以和位置傳遞混用。但位置參數要出現在關鍵字參數之前:
print(f(1,c=3,b=2))2、參數默認值
在定義函數的時候,使用形如a=19的方式,可以給參數賦予默認值(default)。如果該參數最終沒有被傳遞值,將使用該默認值。
def f(a,b,c=10): return a+b+c print(f(3,2)) print(f(3,2,1))3、包裹傳遞
在定義函數時,我們有時候并不知道調用的時候會傳遞多少個參數。這時候,包裹(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)包裹傳遞的關鍵在于定義函數時,在相應元組或字典前加 * 或 * * 。
4、解包裹
* 和 **,也可以在調用的時候使用,即解包裹(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、混合
在定義或者調用參數時,參數的幾種傳遞方式可以混合。但在過程中要小心前后順序。
基本原則是:先位置,再關鍵字,再包裹位置,再包裹關鍵字,并且根據上面所說的原理細細分辨。
五、循環設計
1、range()
實現下標對循環的控制
2、enumerate()
每次循環中同時得到下標和元素
?
3、zip()
如果你多個等長的序列,然后想要每次循環時從各個序列分別取出一個元素,可以利用zip()方便地實現:
zip()函數的功能,就是從多個列表中,依次各取出一個元素。每次取出的(來自不同列表的)元素合成一個元組,合并成的元組放入zip()返回的列表中。zip()函數起到了聚合列表的功能。
?
六、函數對象
1、lambda函數
func = lambda x,y: x + y
print func(3,4)
ambda生成一個函數對象。該函數參數為x,y,返回值為x+y。函數對象賦給func。func的調用與正常函數無異。
以上定義可以寫成以下形式:
def func(x, y):return x + y2、函數作為參數傳遞
函數可以作為一個對象,進行參數傳遞。函數名(比如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)3、map()函數
這里,map()有兩個參數,一個是lambda所定義的函數對象,一個是包含有多個元素的表。map()的功能是將函數對象依次作用于表的每一個元素,每次作用的結果儲存于返回的表re中。map通過讀入的函數(這里是lambda函數)來操作數據(這里“數據”是表中的每一個元素,“操作”是對每個數據加3)。
4、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])
5、reduce()函數
reduce函數的第一個參數也是函數,但有一個要求,就是這個函數自身能接收兩個參數。reduce可以累進地將函數作用于各個參數。
print reduce((lambda x,y: x+y),[1,2,5,7,9]) 上面例子,相當于(((1+2)+5)+7)+9提醒: reduce()函數在3.0里面不能直接用的,它被定義在了functools包里面,需要引入包。
七、裝飾器
裝飾器(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)七、內存管理
是數字的引用,整數1為一個對象。而a是一個引用。
可見a和c實際上是指向同一個對象的兩個引用。
?
py是源文件,pyc是源文件編譯后的文件,pyo是源文件優化編譯后的文件,pyd是其他語言寫的Python庫
?
? ??
轉載于:https://www.cnblogs.com/bell1991/p/6986093.html
總結
以上是生活随笔為你收集整理的python-之基本语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于python2和python3除法的
- 下一篇: 类似度计算方法