1. 程式人生 > >學習筆記 | 第01章 | 基礎知識

學習筆記 | 第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