學習筆記 | 第01章 | 基礎知識
本學習筆記主要用要記錄下學習<<Python基礎教程>>過程中的一些Key Point,或自己沒怎麼搞明白的內容,可能有點雜亂,但比較實用,查詢起來也方便。
原書:《Beginning.Python.From.Novice.to.Professional,2nd.Edition》,所以翻譯過來,應該是《Python從入門到精通》
作者: Magnus Lie Hetland
整本書由易到難,面面俱到,有要注意的地方或者跟Python3.0區別,都會說明,例子也很實用。對於初學python者,或者有一定程式設計經驗者,本書都非常有參考價值!整個筆記以該書為主,也加了些自己的理解,體會。忘了的時候,可以查查。
第01章:基礎知識
------
Jython: Python的Java實現,執行在JVM中,相對穩定,但落後於Python,當前版本2.5,在TA(Python+Robot)會用到
IronPython:Python的C#實現,執行在Common Language Runtime,速度比Python要快
>>> from __future__ import division
>>> 1/2
0.5
#這是Python為未來預留的一個模組__future__
如果直接運算的話,值是0. 除非輸入1/2.0,那麼Python就當成否點數來運算
------
>>> 1 + 2 + 3
6
>>> _ + 4 #特殊變數_用於儲存上一次計算的結果,只在互動環境下才有意義
10
------
幾種退出shell的方式
1. IDLE選單中的EXIT
2. >>> ^Z #WIN: Ctrl+Z按鍵,UNIX: Ctrl+D
3. >>> exit() #或者import sys; sys.exit(0)
4. >>> raise SystemExit #一般在程式中使用
------
變數名:包括字母、數字、下劃線,不能以數字開頭。所以下面正確的表述
正確: file_1; dict2; _del
錯誤: 9jin; hello world; g-z
------
input與raw_input的區別:
1. 如果輸入是數字的話,input後,資料型別為int行,raw_input,則只能字元型.
必須用int(str1)進行轉化,這在程式程式設計中要注意的。
>>> i = input('Enter here:')
Enter here:32
>>> type(i)
<type 'int'>
>>> j = raw_input('Enter here:')
Enter here:43
>>> type(j)
<type 'str'>
>>> raw_input('Enter a number:')
Enter a number:4
'4'
>>> input('Enter a number:')
Enter a number:4
4
2. input不能包括特殊字元,轉譯字元,否則會報錯,raw_input則可以。
>>> a = input('Enter here:')
Enter here:\n\t
也要注意如果是字串輸入的話,必須加單引號,或雙引號
>>> a = input("Enter string:")
Enter string:'hello'
Traceback (most recent call last):
File "<pyshell#75>", line 1, in <module>
a = input('Enter here:')
File "<string>", line 1
\n\t
^
SyntaxError: unexpected character after line continuation character
>>> b = raw_input('Enter here:')
Enter here:*\n\c\t
>>>
3. 在Win下面雙擊執行程式,如果想看到互動式的介面,要避免程式一閃而過,就在最底下加raw_input('Press Enter to Exit<>')
4. input函式裡面,可以進行數學計算,
>>> input('Enter math expression here:')
Enter math expression here:2+4*2
10
Note: 在python3.0裡面,raw_input不存在了,統一用input()函式.
在Python3裡面input函式不具備數學計算的功能.
------
format函式來格式化字串
>>> price = 1000
>>> format(price,"06d")
'001000'
------
>>> round(1/2)
1.0
#遵循四捨五入
>>> math.floor(1.1),math.floor(-1.1)
#floor始終是取小的,從名字也可以知道,地板,當然是最底層
(1.0, -2.0)
------
cmath
>>> import math
>>> math.sqrt(-1) #求負數的平方根
Traceback (most recent call last):
File "<pyshell#94>", line 1, in <module>
math.sqrt(-1)
ValueError: math domain error
必須用cmath
>>> import cmath
>>> cmath.sqrt
<built-in function sqrt>
>>> cmath.sqrt(-1)
1j
>>> (1+2j)*(3-4j) #複數的運算
(11+2j)
------
shebang
如果希望Python指令碼像普通指令碼一樣執行,可以在行首加上#!
再用chmod增加可執行許可權,比如下面的:
#!/usr/bin/env python
or
#!/usr/bin/python
$ chmod +x ./hello.py
$ hello.py
#如果不加的話,必須 ./hello.py 或者 python hello.py
------
單引號如果還涵單引號的號,必須加轉譯
''' ''' 三引號,可以按自己意願輸出字串聯,所見即所得的模式,還可以包含單引號,雙引號
'Let\'s go'
''Let's go''
>>> print """This is a first programing...
print "Hello,World!"
print "Let's Go"
"""
輸出結果:This is a first programing...
print "Hello,World!"
print "Let's Go"
>>> print str("Hello,World!")
Hello,World!
>>> print repr("Hello,World!")
'Hello,World!'
str(), repr和反引號是轉換值為字元型變數的三中方法
用``反引號來計算算術值,或引用帶數字型的變數
>>> print `2+3`
5
>>> temp = 2
>>> print "Temp's value is:", temp
Temp's value is: 2
>>> print "Temp's value is:" + str(temp)
Temp's value is:2
>>> print "Temp's value is:" + `temp`
Temp's value is:2
>>> print "Temp's value is:" + repr(temp)
Temp's value is:2
------
\ 在行中用於轉義,如\n代表換行,\t製表符等,在行尾,可忽略,主要用於多行輸入。如:
>>> 1 + 2 + 3 \
- 4 / 2 \
* 2 % 3
5.0
>>> print "C:\\python27"
C:\python27
也就是說不能在字串末尾輸入\
>>> print "This is illegal.\"
SyntaxError: EOL while scanning string literal
如果真想表示的話,則需要這樣:
print
r'C:\python27\lib\test\pack1\pack2\pack3' '\\'
C:\python27\lib\test\pack1\pack2\pack3\
如果是長路徑的話,這麼輸入的話就比較麻煩,如果嫌麻煩就在前面加r, raw,原始字串.
表示保持原樣,尤其是正則表示式匹配中,原始字串會非常有用。
>>> print 'C:\\python27\\lib\\test\\pack1\\pack2\\pack3'
C:\python27\lib\test\pack1\pack2\pack3
>>> print r'C:\python27\lib\test\pack1\pack2\pack3'
C:\python27\lib\test\pack1\pack2\pack3
一般python用的8位ASCII來儲存資料的,如果想用Unicode字元來儲存的話,則可以儲存16位,可以儲存更多的字元。使用者類似於r
>>> u'Hello,World!'
u'Hello,World!'
本章節主要的內建函式
函式名 作用 例子
-----------------------------------------------------------------------
abs(number) 返回數字的絕對值 >>> abs(-2) #2
float(object) 將字串和數字轉換為否點型 >>> float('123') #123.0
help() 提供幫助的互動式介面 >>>help(math.cmath) #或help()
input(prompt) 獲取使用者輸入 >>>input("Enter nuber:") #見上文
raw_input(prompt) 獲取使用者輸入,字元型>>>raw_input("Enter:") #見上文
long(object) 將字串和數字轉換為長整數型 >>> long('12345')#12345L
math.ceil(number) 返回數的上入部分,否點型 >>> math.ceil(1.4) #2.0
math.floor(number) 返回數的下舍部分,否點型 >>> math.floor(-1.6)#-2.0
pow(x,y[,z]) 返回x的y次冪,再對z取模 >>> pow(3,2,4) #1
repr(object) 返回值的字串方式 >>> repr(1234) #'1234'
str(object) 將值轉換為字串 >>> str(12345) #'12345'
round(number[,ndigit])根據指定精度的數字進行四捨五入操作 >>>round(3.14) #3.0
cmath.sqrt(number) 返回數字的平方根 >>> cmath.sqrt(-4) #-2j