Python學習筆記(二)

標識符和關鍵字

1,郵箱的Python標識符是任意長度的非空字符序列(引導字符+後續字符。)python

python標識符必須符合兩條規則--標識符區分大小寫git

(1)只要是unicode編碼字母均可以充當引導字符,包括unicode編碼中認爲是數字的任意字符。api

(2)關於(_) 的使用,名的開頭和結尾儘可能避免使用(_)ide

 for _ in [1,2,3,4,5]函數

   print(" _ 可省略變量")測試

Intergral類型

2,python提供了兩個內置訂單Intergral類型:int,bool編碼

 在布爾表達式中:0 與 False 表示Flase,其餘任意整數都表示Truespa

 其餘表達式中:True表示1,False表示0設計

 整數

3,整數的大小隻受限於機器的內存大小code

二進制使用0b開頭

八進制使用0o開頭

十六進制使用0x開頭 (後面字符不區分大小寫)

數值操做符

  +, -, *, /, //返回整數部分,%取餘數,x**y 計算x的y次冪,

abs(x)表示x的絕對值

divmode(x,y)以二元組的形式返回x除以y所得的商和餘數

pow(x,y)計算x的y次冪 等同於**

round(x,n)返回x四捨五入後獲得的相應整數

使用數據類型建立對象

4,(1)不使用參數調用數據類型函數,會賦值一個默認值

整數位0,str爲空字符,

>>> x=int()
>>> x
0
>>> x=str()
>>> x
''
>>> x=list()
>>> x
[]

 (2)使用一個參數調用數據類型函數

若是給定的類型是相同的數據類型,就建立一個新對象,新對象是原始對象的一個淺拷貝。

若是給定參數支持到給定數據類型的轉換,但轉換失敗,會產生一個TypeError異常

若是給定的參數不是相同的數據類型,會嘗試進行數據轉換

bin(i) 返回i的二進制表示

hex(i) 返回i的十六進制表示

int(i) 將對象i轉換爲證書,失敗時會產生一個ValueError異常,若是沒有到整數的轉換,會報TypeError異常,若是i是一個浮點數,會截取證書部分

int(s,base)將字符串s轉換爲證書,失敗會產生ValueError異常,若是給定的可選的基參數,那麼應該爲2-36之間的證書

oct(i)返回i的8進製表示(字符串)

(3)給定兩個或多個參數,但不是全部數據類型都支持,而對支持的這一數據類型,參數類型以及內涵都是變化的。

 

布爾類型True,False

浮點類型

float 表示雙精度浮點數,浮點數表示的是近似值,而非實際值

complex

decimal.Decimal 須要高精度時(可表示小數點後28位),並能夠準確的表示循環小數(適用於財務計算)

計算機中使用基數2表示浮點數

混合運算

int和float生成float

float與complex生成 complex

decimal.Decimal是混合精度,只能用於decimal.Decimal和intS

浮點數

x=float(),返回0.0,x=float(i)返回該參數的一個拷貝,指定的任意數據類型都會嘗試轉換

在設計floatS的計算時,可能會生成NaN或無窮

int() 捨去小數部分

round() 四捨五入取整

math.ceil(),math.floor()返回向上,或向下轉換爲最接近的整數

float.hex()能夠將浮點數以16進制形式表示爲字符串,相反可使用float.fromhex()

math.acos(x) 返回弧度的反餘弦

mathi.acosh(x)返回x的反正切

math.asin(x)返回x的反正弦

math.asinh(x)返回x的反雙曲正切

math.atan2(y,x) 返回y/x的反正切

math.atanh(x)返回x的反雙曲正切

math.ceil(x)返回大於或等於x的最小整數

math.copysign(x,y),將x的符號設置爲y的符號

math.cos(x) 返回弧度x的餘弦

math.cosh(x) 返回弧度x的餘弦值(角度)

math.degrees(r)將浮點數r從弧度轉換爲角度a

math.e  常數 e,2.7182818284590451

math.exp(x) 返回e的x次冪

math.fabs(x)返回|x|,浮點數x的絕對值

math.factorial(x)返回x!

math.floor(x) 返回小於或等於x的最小整數

math.fmod(x,y)生成x除以y後的餘數,這會比用於浮點數的%更好的結果

math.frexp(x) 返回一個二元組,分別爲x的指數整數與浮點數部分

math.fsum(a) 返回 iterable i的值進行求和,浮點數

math.hypot(x,y) 返回  x的平方+y的平方 開根號

math.isinf(x)若是浮點數x是+-無窮,返回true

math.isnan(x)若是x不是一個數字,返回true

math.ldexp(m,e)返回m*2的e次冪,翻轉了frexp函數

math.log(x,b),math.log10(x),math.loglp(x)返回log以e爲底(1+10)在x近似於0的時候更準確

math.modf(x)以floatS的形式返回x的小數與整數部分

複數

複數是固定的,其中存放的是一堆浮點數,一個表示實數部分,一個表示虛數部分

>>> z=10+2j
>>> z.real,z.imag
(10.0, 2.0)

  math模塊中數函數不能處理複數

十進制數

十進制數是使用decimal.Decimal()函數建立的,接受一個整數或字符串做爲參數,但不能以浮點數做爲參數,由於浮點數不夠青雀

字符串

字符串是固定不變的,其存放的是Unicode字符序列 

字符串跨行可使用原字符r,同時也能夠

>>> s="hello"+\
   "world"
>>> s
'helloworld'
>>> s=("hello"
	"world")
>>> s
'helloworld'

  字符串比較

字符串比較可使用<,<=,==,!=,>,>=,此操做符在內存中逐個字節對字符串進行比較

字符串比較存在兩個問題:

1,有些unicode字符可使用兩種或更多種字節序列來表示。 

  可使用:unicodedata模塊以NFKD作第一個參數來調用unicodedata.normalize(),返回以UTF-8字節表示的字符串

2,有些字符串排序是特定於某種語言的。

   能夠自定義python的排序方法

字符串分片與步距

字符串的索引位置從0開始,直至字符串長度減1,可是使用負索引位置也是能夠的

>>> s="hello world"
>>> s[0]
'h'
>>> s[-1]
'd'

3種分片操做

(1)seq能夠是任意序列,列表,字符串,元組,start,end ,step必須是整數

step表示每隔step提取一次

seq[start]

seq[start:end]

seq[start:end:step]

>>> s[0:2]
'he'
>>> s[0:2:2]
'h'

(2)使用[:]

s[:]=s[0:len(s)] 用於提取整個序列,start省略時start=0,end省略時end=len(s),step省略時step=1

字符串中使用+進行鏈接,使用+=進行追加並不高效,最好使用str.join()方法

(3)當step爲複數時,start=-1,終點索引默認爲字符串起點前面

step不能 爲0.若是不須要step,那麼應該使用第二種寫法

 當step是-1的時候會翻轉字符串

字符串操做符與方法

字符串是固定序列,全部可用於序列的功能均可用於字符串

in關係測試,+=連接,*複製,*=加強的賦值複製

字符串方法

s.capitalize()返回字符串s的副本,並將首字符變大寫

s.center(width,char)返回s中間部分的一個子字符串,長度爲width,並使用空格或者可選的char進行填充。

s.count(t,start,end)返回字符串s中子字符串t出現的次數

s.encode(encoding,err)返回bytes對象,該對象使用默認的編碼格式或指定的編碼格式或指定的編碼格式來顯示該字符串,並根據可選的err參數處理錯誤

s.endswith(x,start,end) 若是s以字符串x結尾,返回true,不然返回false

s.expandtabs(size)返回s的一個副本,其中的製表符使用8個或指定數量的空格替換

s.find(t,start,end)返回t在s中的最左位置,若是沒有找到,就返回-1,使用str.rfind()能夠發現相應的最右邊位置

s.format(...)返回按給定參數進行格式化後的字符串副本

>>> s="'{0}' is good guy "
>>> s.format("hiuyeung",s)
"'hiuyeung' is good guy "

s.index(t,start,end)返回t在s中的最左邊位置,若是沒有找到,就產生一個ValueError異常,str.rindex()返回右邊開始搜索

s.isalnum(),若是s非空,而且其中的每一個字符都是字符數字的,就返回true

s.isalpha(),若是s非空,而且其中的每個字符都是字符,返回true

s.isdecimal() ,若是s非空,而且每個字符都是unical的基數爲10的數字,就返回true

s.isdigit(),若是s非空,而且每個字符都是Ascii數字,就返回true

s.isidentifier(),若是s非空,而且是一個有效的標識符,就返回true

s.islower(),若是s至少有一個可小寫的字符,而且其全部課小寫的字符都是小寫的,就返回true

s.isnumeric() 若是s非空,而且其中的每一個字符都是數值型的unicode字符,好比數字或者小數,就返回true

s.isprintable()若是s非空,而且其中的每一個字符被認爲是可打印的,包括空格,單不包括換行,就返回true

s.isspace()若是s非空,而且其中的每一個字符都是空白字符,返回true

s.istitle(),若是s是一個非空的首字符大寫的字符串,就返回true

s.isupper(),若是s至少有一個可大寫的字符,而且全部可大寫的字符都是大寫,就返回true

s.join(seq),返回seq中每一個項連接起來後的結果,並以s在每兩項之間分隔

s.ljust(width,char) 返回長度爲width的字符串中左對齊的字符串s的一個副本,使用str.rjust()能夠右對齊,str.center()能夠中間對齊

s.lower() 將s中的字符串變爲小寫

s.maketrans(),與str.translate()相似

s.partition(t)返回包含3個字符串的元組--字符串s在t的最左邊以前的部分,t,字符串s在t以後的部分,若是t不在s內,則返回s與兩個空字符串

>>> s.partition(" ")
('hello', ' ', 'world')
>>> s.partition("o")
('hell', 'o', ' world')

  

s.replace(t,u,n)返回s的一個副本,其中每一個字符串(最多n個)t使用u替換

s.split(t,n)返回字符串列表,要求在字符串t處至多分隔n次,若是沒有給定n,就可能分隔儘量屢次,若是t沒有給定,就再空白處進行分隔,str.rsplit()能夠從右邊進行分隔,只有給定n而且n小於可能分隔的最大次數時才起做用

s.splitlines(f)返回在行終結符處進行分隔產生的行列表

s.startswith(x,start,end)若是s(或者s的start:end分片)以字符串x開頭,就返回true

s.strip(chars)返回s的一個副本,並將開始處與結尾處的chars符移除,s.lstrip,s.rtrip分別移除開始和結尾的相應字符

s.swapcase()返回s的副本,並將其中的大寫換小寫,小寫換大寫

s.title() 返回s的副本,並將每一個單子的首字符變大寫,其餘字符變小寫

s.translate() 與str.maketrans()相似

s.upper()返回s的大寫版本dde

s.zfill(w)返回s的副本,若是比w短,就再開始處增長0,使其長度爲w

len()返回字符串長度,若是字符串是空,就返回0

+操做符用於字符串連接,若是須要連接大量的字符串,使用str.join效率更高,該方法以一個序列作爲參數

並將其連接在一塊兒存放在一個單獨的字符串中

>>> t=["hello","world","baby"]
>>> "".join(t)
'helloworldbaby'
>>> " ".join(t)
'hello world baby'

 與reversed函數一塊兒使用,實現字符串翻轉

>>> t=["hello","world","baby"]
>>> " ".join(reversed(t))
'baby world hello'
>>> s="hello world"
>>> "".join(reversed(s))
'dlrow olleh'
>>> 

  *操做符提供字符串複製功能

>>> s="="*5
>>> s
'====='
>>> s*=10
>>> s
'=================================================='

  in提供字符串關係操做

>>> s="hello world"
>>> "hello" in s
True
>>> "llo" in s
True
>>> 

  str.index,str.find 字符串超找功能

str.index(t,start,end)返回子字符串的索引位置,在失敗時產生一個ValueError異常

str.find(s,start,end) 返回子字符串的索引位置,在失敗時返回-1

>>> s="hello world"
>>> s.count("l")
3

字段名

>>> s="{who} is {age} years old!"
>>> s.format(who="My son",age="2")
'My son is 2 years old!'


>>> s="{0} is {age} years old!"
>>> s.format("My son",age="2")
'My son is 2 years old!'

#列表
>>> lst=["My son",2]
>>> s="{0[0]} is {0[1]} years old "
>>> s.format(lst)

#字典
>>> d=dict(name="My son",age=2)
>>> s="{0[name]} is {0[age]} years old!"
>>> s.format(d)
'My son is 2 years old!'

#當不指定索引時系統會自動從0開始進行賦值
>>> s="{}{}{}"
>>> s.format(1,2,3)
'123'

#對象
>>> import math
>>> s="{0.pi} is pi"
>>> s.format(math)
'3.141592653589793 is pi'

#映射拆分**locals()可使用做用域內變量映射到一個字典中,這樣就能夠做爲參數進行傳遞了
>>> name="my son"
>>> age=2
>>> s="{name} is {age} years old!"
>>> s.format(**locals())
'my son is 2 years old!'

  

字符串填充

>>> s="hello world!"
>>> "{0:30}".format(s)
'hello world!                  '
>>> "{0:>30}".format(s)
'                  hello world!'
>>> "{0:.<30}".format(s)
'hello world!..................'
>>> "{0:.^30}".format(s)
'.........hello world!.........'
>>> "{0:.^{1}}".format(s,40)
'..............hello world!..............'

>>> "[{0:}],[{1:}]".format(250,-250)
'[250],[-250]'

顯示符號
>>> "[{0:+}],[{1:+}]".format(250,-250)
'[+250],[-250]'
須要時顯示符號
>>> "[{0:-}],[{1:-}]".format(250,-250)
'[250],[-250]'

>>> "[{0:x}]".format(16)
'[10]'
>>> "[{0:o}]".format(16)
'[20]'
>>> "[{0:b}]".format(16)
'[10000]'

>>> "[{0:#x}]".format(16)
'[0x10]'
>>> "[{0:#o}]".format(16)
'[0o20]'
>>> "[{0:#b}]".format(16)
'[0b10000]'
相關文章
相關標籤/搜索