python 學習筆記
我使用的是廖雪峰的python教程感覺蠻不錯的
python基礎
print 『hello, world』
name = raw_input()
整數 python可以處理任意大小的整數 十六進製製用0x字首和0-9,a-f表示
浮點數 但是對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以寫成1.2e-5
字串
- 字串是以」或」「括起來的任意文字,
- python還允許用r」表示」內部的字串預設不轉義,
- 如果字串內部有很多換行,用\n寫在一行裡不好閱讀,為了簡化,python允許用」』…」』的格式表示多行內容,可以自己試試:
-python在後來新增了對unicode的支援,以unicode表示的字串用u』…』表示,比如:
布林值
true、false
布林值可以用and、or和not運算。
空值 空值是python裡乙個特殊的值,用none表示。none不能理解為0,因為0是有意義的,而none是乙個特殊的空值。
常量所謂常量就是不能變的變數,比如常用的數學常數π就是乙個常量。在python中,通常用全部大寫的變數名表示常量。但是不保證常亮不變
在python中,採用的格式化方式和c語言是一致的,用%實現
『age: %s. gender: %s』 % (25, true)
『age: 25. gender: true』
常見的佔位符有:
%d 整數
%f 浮點數
%s 字串
%x 十六進製制整數
是一種有序的集合,可以隨時新增和刪除其中的元素。
classmates = [『michael』, 『bob』, 『tracy』]
len()函式可以獲得list元素的個數:
classmates = (『michael』, 『bob』, 『tracy』) 不可變
if 《條件判斷1>:
《執行1>
elif 《條件判斷2>:
《執行2>
elif 《條件判斷3>:
《執行3>
else:
《執行4>
一種for in
names = [『michael』, 『bob』, 『tracy』]
for name in names:
print name
range(5)
[0, 1, 2, 3, 4]
一種 while
while n > 0:
sum = sum + n
n = n - 2
print sum
d =
d[『thomas』] 這種如果不存在key會崩潰 可以使用get方法d.get(『thomas』, -1) 這樣會有乙個預設的值或者返回的是none
s = set([1, 2, 3])
add(key)
remove(key)方法
set支援集合操作 set只能存放不可變物件
&交 |並
def
my_abs
(x):
if x >= 0:
return x
else:
return -x
pass 乙個什麼都不做的佔位符
如果函式的引數個數不對python自動檢查。如果引數型別不對需要自己檢查
def my_abs(x):
if not isinstance(x, (int, float)):
raise typeerror(『bad operand type』)
if x >= 0:
return x
else:
return -x
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
其實返回的是乙個元組
def power(x, n=2):
預設引數很有用,但使用不當,也會掉坑里。預設引數有個最大的坑,演示如下:
先定義乙個函式,傳入乙個list,新增乙個end再返回:
add_end([1, 2, 3])[1, 2, 3, 『end』]
add_end([『x』, 『y』, 『z』])
[『x』, 『y』, 『z』, 『end』]
當你使用預設引數呼叫時,一開始結果也是對的:
add_end()
[『end』]
但是,再次呼叫add_end()時,結果就不對了:
add_end()
[『end』, 『end』]
add_end()
[『end』, 『end』, 『end』]
很多初學者很疑惑,預設引數是,但是函式似乎每次都「記住了」上次新增了』end』後的list。
原因解釋如下:
python函式在定義的時候,預設引數l的值就被計算出來了,即,因為預設引數l也是乙個變數,它指向物件,每次呼叫該函式,如果改變了l的內容,則下次呼叫時,預設引數的內容就變了,不再是函式定義時的了。
所以,定義預設引數要牢記一點:預設引數必須指向不變物件!
要修改上面的例子,我們可以用none這個不變物件來實現:
add_end()[『end』]
add_end()
[『end』]
我們把函式的引數改為可變引數:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
如果已經有乙個list或者tuple,要呼叫乙個可變引數怎麼辦
所以python允許你在list或tuple前面加乙個*號,把list或tuple的元素變成可變引數傳進去:
nums = [1, 2, 3]calc(*nums)
14
可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict。請看示例:
def person(name, age, **kw):
print 『name:』, name, 『age:』, age, 『other:』, kw
函式person除了必選引數name和age外,還接受關鍵字引數kw。在呼叫該函式時,可以只傳入必選引數:
person(『michael』, 30)name: michael age: 30 other: {}
也可以傳入任意個數的關鍵字引數:
person(『bob』, 35, city=』beijing』)
name: bob age: 35 other:
person(『adam』, 45, gender=』m』, job=』engineer』)
name: adam age: 45 other:
當然,上面複雜的呼叫可以用簡化的寫法:
kw =person(『jack』, 24, **kw)
name: jack age: 24 other:
在python中定義函式,可以用必選引數、預設引數、可變引數和關鍵字引數,這4種引數都可以一起使用,或者只用其中某些,但是請注意,引數定義的順序必須是:必選引數、預設引數、可變引數和關鍵字引數。
python教學筆記 python學習筆記(一)
1.eval 函式 eval是單詞evaluate的縮寫,就是 求.的值的意思。eval 函式的作用是把str轉換成list,dict,tuple.li 1 1,2,3 print eval li 1 di 1 print eval di 1 tu 1 2,4,6 print eval tu 1 執...
python學習筆記
coding utf 8 coding utf 8 應該像八股文一樣在每個指令碼的頭部宣告,這是個忠告 為了解決中文相容問題,同時你應該選擇支援 unicode 編碼的編輯器環境,保證在執行指令碼中的每個漢字都是使用 utf 8 編碼過的。cdays 5 exercise 3.py 求0 100之間...
Python 學習筆記
python 學習筆記 def run print running.def execute method method execute run result running.condition false test yes,is true if condition else no,is false ...