f = 1.23456 f1 = '%.4f' % f f2 = '%.2f' % f print(f1,type(f1)) print(f2,type(f2))
打印python
1.2346 <class 'str'> 1.23 <class 'str'>
易知,這種方法會進行四捨五入,可是將浮點型轉化成了字符串值,已再也不是原始的數值。web
f = 1.23456 f1 = format(f,'.4f') f2 = format(f,'.2f') print(f1,type(f1)) print(f2,type(f2))
打印編程
1.2346 <class 'str'> 1.23 <class 'str'>
同理,這種方法也會進行四捨五入,可是將浮點型轉化成了字符串值,已再也不是原始的數值。svg
a = 1.23456 b = 2.355 c = 3.5 d = 2.5 a1 = round(a, 3) b1 = round(b, 2) c1 = round(c) d1 = round(d) print(a1,type(a1)) print(b1,type(b1)) print(c1,type(c1)) print(d1,type(d1))
打印函數
1.235 <class 'float'> 2.35 <class 'float'> 4 <class 'int'> 2 <class 'int'>
能夠看出,round()函數最後獲得的是數值(浮點型或整型),可是在「舍」和「入」的規律上不必定:
(1)round(x,n)函數中,是否進位或四捨五入,取決於n位以及n+1位小數的值
(2)只有當n+1位數字是5的時候,容易混淆,若是n爲偶數,則n+1位數是5,則進位,例如round(1.23456,3)最終變爲1.235
(3)若是n爲奇數,則n+1位是數5,那不進位,例如round(2.355,2),最終爲2.35
(4)若是n爲0,即沒有填寫n的時候,最終結果與上面相反,即整數部分爲偶數的時候,小數位5不進位,例如(round(2.5)變爲2)。
(5)整數部分爲奇數的時候,小數位5進位。(round(3.5)變爲4)測試
a = int(1.23456 * 1000) / 1000 print(a)
打印1.234
這種方法簡單粗暴,直接去掉後邊的,無論是否大於5。ui
a = 1.23 print(type(a))
打印<class 'float'>
。編碼
原型爲isinstance(x, A_tuple)
,spa
a = 1.23 tp = isinstance(a,float) print(tp)
打印True
。.net
python作面向對象編程時候,常常須要使用classmethod的描述。類方法特別容易弄混淆,由於聽起來就好像「類中的方法」同樣。
類方法也算一種實用的技巧,簡單描述之:「類方法讓類模板具備記憶力」。
類模板就是咱們所定義的類。在普通狀況下,不使用類方法對類進行實例化,類自己是不具備記憶性的。只是當一個靜態模板被套用屢次而已。若是咱們想讓類在每一次實例化以後,都能記載一些記憶,會對不少操做頗有用。
class Man: id = 0 # 類變量 def __init__(self, name): self.name = name self.id = self.id_number() @classmethod def id_number(cls): cls.id += 1 return cls.id a = Man('A') print(a.id) b = Man('B') print(b.id)
打印
1 2
對Man這個類進行實例化2次,每一個實例的id都不同。這就依靠類方法來實現了:首先,用@classmethod描述類方法,而後用"cls"表明本類。類方法對類屬性進行的處理是有記憶性的。
須要注意的是,類方法處理的變量必定要是類變量。由於在類方法裏你用不了self來尋址實例變量,因此須要把類變量放到最前面描述,如上面的"id=0"所示。類變量是能夠被self訪問的,因此,在類變量定義好了之後,不須要在_init_函數裏對類變量再一次描述。因此,上面代碼裏self.id不必定須要。
str.format對字符串進行格式化,{:<x}的語法表示左對齊(>爲右對齊,^爲居中),少於x位自動補齊(默認爲空格補齊),可是對於中文字符並不能很好地支持,因此會致使有多行中文字符串時出現不能對齊的現象,須要考慮到字符串所佔長度並將中文字符串進行編碼後再計算。
#name是包含中文的字符串,22是整個字符串一行的總長度,通常要顧及測試才能獲得,\t後的x是一標記字符,可換爲別的所需的字符串 print('[{string:<{len}}\tx'.format(string=string+']',len=22-len(string.encode('GBK'))+len(string)))