模塊,上次在第一章中已經實現了一些功能,將原本32.9歲的人變成了32歲,當然,人家確實是沒有到33歲,這麼說也不太好,怎麼實現的。
import math 到入模塊
int(math.floor(32.9)) 將年齡爲32.9的人變成了32歲
32
繼續往下看:
哎,小P老師,爲啥我每次要調用函數的時候都要寫上那個模塊的函數的名稱呀,真實麻煩呀,突然感覺我好懶,突然天空中有了明顯的波動,飄下了一段神祕代碼。
>>> from math import sqrt
>>> sqrt(9)
3.0
>>>
咦真的可以,sqrt看來就是計算平方根的了。有備註,噢噢噢,原來只能是非負實數,就是不能計算爲負數的實數唄。
接着看。有提示:
>>> foo=math.sqrt
>>> foo(9)
3.0
>>>
我靠還有這麼方便的用法,不錯。
看來真是數中自有黃金屋,書中自有顏如玉
!!!半天不說話,小P老師,真的不能計算爲負數的平方根嗎?
感覺又被人鄙視的感覺,繼續往下看,
又出來個模塊,叫cmath 、,這是啥,
試試再說
>>> import cmath
>>> cmath.sqrt(-1)
1j
>>>
真是太奇怪了,2個模塊都調用sqrt,那我命名時,出來的該是什麼。
>>> from cmath import sqrt
>>> sqrt(9)
(3+0j)
我剛剛模塊定義的sqrt失效了被替換了,有提示:除非真的需要使用from .. import ..方式,否則應該堅持使用普通的import.
下面,我們將要接觸新的知識,擁有一個可執行的腳本,
想要使用腳本就需要在首行添加#!/usr/bin/env python即可
趕緊試驗下。
cat a.py
#!/usr/bin/env python
print 1 + 2 * 4
想要執行腳本就必須要使腳本擁有權限,
下面小P老師給我講了個有意思的東西,在另外一個平行空間也可以操作初心大陸,
下載windows,python的2.7版本https://www.python.org/downloads/release/python-2711/
也可以操作,效果是一樣的,並且可以直接執行腳本
突然發現通過windows版python(dos)寫代碼也很爽呀
哈哈,
進入平行空間啦,
在腳本首行前面加#!叫做pound bang 或者shebang,在其後家還是那個用於解釋腳本的程序絕對路徑,
,感覺好麻煩,記不住呀,容易忘,有沒有通用一點的。
接着看吧。
咦!!!!!
只要將#!/usr/bin/env python不管python二進制文件在哪裏都能找得到路徑呀,太好了。媽媽再也不用擔心我健忘了。
在初心大陸的話執行腳本一定要賦予腳本權限chmod 777 hello.py
./hello.py就能執行了。
不扯了,接着看啦。
註釋?(#)在python中有些特殊,他右邊一切都會被忽略。
什麼情況,註釋居然是神器,我得到神器啦。屬性好牛逼。
只要在前面加個#無視後面任意東西。
在配合我寫程序時,註釋可以更加好的讓我回顧。
在初心大陸裏面有一些字符串是有特殊含義的。
例如:
>>> "let's go"
"let's go"
>>> 'let's go'
SyntaxError: invalid syntax
>>>
很明顯可以看出let後面的撇號阻止go後面的撇號導致執行失敗,那麼怎樣才能好用呢。
接着看看了。
原來有轉義符號呀。
我要試試:
>>> 'let\'s go'
"let's go"
>>>
哇,真的可以呦,那麼是不是所有的字符都可以轉義呢。
我試驗下吧。
>>> "let\"s go"
'let"s go'
>>>
這樣也可以呦,不錯,
>>> 1000000L
1000000L
>>> print 10000000L
10000000
>>>
這的不錯,我要抓緊學習啦,不過爲什麼print打印出來的和我想要的不一樣呢,初心大陸又鬧情緒了。
有備註:
>>> print repr("Hello, world!")
'Hello, world!'
>>> print repr(10000L)
10000L
>>> print str("Hello, world!")
Hello, world!
>>> print str(10000L)
10000
>>>
str和repr是可以進行切換的,str是把值轉化爲合理形式的字符串,而repr會創建一個字符串。
>>> print "The temperature is " + temp
Traceback (most recent call last):
File "<pyshell#22>", line 1, in <module>
print "The temperature is " + temp
TypeError: cannot concatenate 'str' and 'int' objects
>>> print "The temperature is " + `temp`
The temperature is 42
>>>
第一個執行失敗,第二個執行成功,``反引號成功的原因是將temp的值成功轉換爲了字符串42,
>>> print "The temperature is " + repr(temp)
The temperature is 42
使用repr也可以實現一樣的效果,
>>> print "The temperature is " + str(temp)
The temperature is 42
str也可以實現。。多種方法都行。
在2.7版本中input和raw_input還是有區別的,我們看下例子吧:
>>> input("Enter a number: ")
Enter a number: 3
3
>>> raw_input("Enter a number: ")
Enter a number: 3
'3'
>>>
作爲交互來使用時,如果輸入的是字符串那麼就會報錯了
>>> input("Enter a number: ")
Enter a number: fff
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
input("Enter a number: ")
File "<string>", line 1, in <module>
NameError: name 'fff' is not defined
>>>
但是用raw_input就不會。所以在2.7版本中使用raw_input
>>> raw_input("Enter a number: ")
Enter a number: ff
'ff'
>>>
小P老師我能寫長一點的內容和初心大陸溝通嗎?
。。。。還是繼續看書吧:
長字符串,有多長呢,我要試試貌似和我剛剛說的那麼吻合呢
>>> '''
Hello chuxin
you are beautiful
'''
'\nHello chuxin\n\tyou are beautiful\n\t'
>>>
>>> print "niao123\n\n\n"
niao123
>>>
看來\n就是換行符的意思。
開會耽誤了。明天繼續吧。