1. 程式人生 > >2018年12月7日 字串格式化2 format與函式1

2018年12月7日 字串格式化2 format與函式1

tp7="i am \033[44;1m %(name)-25.6s\033[0m"%{"name":"sxj2343333"}
print(tp7)
#-為左對齊,\033[44;1m    \033[0m   為選取44色號的顏色

 

tp1="I am {},age{},{}"
tp2=tp1.format("sxj",18,"abc")
print (tp2)

tp3="I am {1},age{1},{1}"
tp4=tp3.format("sxj",18,"abc")
print(tp4)

 

 

2、Format方式

[[fill]align][sign][#][0][width][,][.precision][type]

    • fill           【可選】空白處填充的字元
    • align        【可選】對齊方式(需配合width使用)
      • <,內容左對齊
      • >,內容右對齊(預設)
      • =,內容右對齊,將符號放置在填充字元的左側,且只對數字型別有效。 即使:符號+填充物+數字
      • ^,內容居中
    • sign         【可選】有無符號數字
      • +,正號加正,負號加負;
      •  -,正號不變,負號加負;
      • 空格 ,正號空格,負號加負;
    • #            【可選】對於二進位制、八進位制、十六進位制,如果加上#,會顯示 0b/0o/0x,否則不顯示
    • ,            【可選】為數字新增分隔符,如:1,000,000
    • width       【可選】格式化位所佔寬度
    • .precision 【可選】小數位保留精度
    • type         【可選】格式化型別
      • 傳入” 字串型別 “的引數
        • s,格式化字串型別資料
        • 空白,未指定型別,則預設是None,同s
      • 傳入“ 整數型別 ”的引數
        • b,將10進位制整數自動轉換成2進製表示然後格式化
        • c,將10進位制整數自動轉換為其對應的unicode字元
        • d,十進位制整數
        • o,將10進位制整數自動轉換成8進製表示然後格式化;
        • x,將10進位制整數自動轉換成16進製表示然後格式化(小寫x)
        • X,將10進位制整數自動轉換成16進製表示然後格式化(大寫X)
      • 傳入“ 浮點型或小數型別 ”的引數
        • e, 轉換為科學計數法(小寫e)表示,然後格式化;
        • E, 轉換為科學計數法(大寫E)表示,然後格式化;
        • f , 轉換為浮點型(預設小數點後保留6位)表示,然後格式化;
        • F, 轉換為浮點型(預設小數點後保留6位)表示,然後格式化;
        • g, 自動在e和f中切換
        • G, 自動在E和F中切換
        • %,顯示百分比(預設顯示小數點後6位)
      • tp1="I am {},age{},{}"
        tp2=tp1.format("sxj",18,"abc")
        print (tp2)
        
        tp3="I am {1},age{1},{1}"
        tp4=tp3.format("sxj",18,"abc")
        print(tp4)
        
        tp5="I am {name},age{age},{love}"
        tp6=tp5.format(** {"name":"sxj","age":18,"love":"mm"})
        print ("注意傳遞字典需要**加持",tp6)
        
        tp5="I am {name},age{age},{love}"
        tp7=tp5.format(name="sxj",age=111,love="mm")
        print(tp7)
        
        tp5="I am {:s},age{:d},{:.3f}"#用法同%一樣
        tp8=tp5.format("sxj",18,44.5225222)
        print(tp8)
        
        tp5="I am {:s},age{:d},{:.3f}"
        tp9=tp5.format(*["sxj9",11111,22.33433])
        print("注意傳遞list用*加持",tp9)
        
        tp5="I am {name:s},age{age:d},{love:.3f}" #:s:d:f定義不同型別
        tp10=tp5.format(name="abc",age=232,love=89.9545)
        print(tp10)
        
        tpx="numbers:{:b},{:o},{:d},{:x},{:X},{:%}"
        tp11=tpx.format(12,16,3,40,40,0.33444)
        print(tp11) 







        print("函式定義")
        
        def test(x):
            " sxj "#函式定義描述 強烈建議
            x+=1
            return print(x) #返回列印值 或者直接返回x
        test(5)
        
        def test2():
            "abc"
            for i in range(5):
                i+=1
                print (i)
            return# 可以不寫返回值
        test2()
        
        print("過程定義:沒有return")
        print("return 也可以返回多個值")
        
        def test3():
            msg="test3"
            print(msg)
            return 1,2,3,4,[2,4,5,4],True# 以元祖的形式返回多個值
        t3=test3()
        print (test3())
        # 返回值=0 則返回 none
        # 返回值=1 返回object
        # 返回值 > 1 則返回tuple

 

 

def test(x,y,z):
    print(x)
    print(y)
    print(z)
test(y=2,x=1,z=4)
# 關鍵字引數位置無需固定,但不能少
#如果混用,位置引數必須在關鍵字引數左邊
test(4,2,z=5)

def handle(x,type="sxj"):#設定type為預設引數
    print(x)
    print(type)
handle("hello")#預設引數可以不寫
handle("abc","傳遞預設引數")

 

 

 

#  非固定引數組: ** 字典  *列表/元祖?
def test(x,*args):
    print (x)
    print (args)
test(1,2,3,4,5)
#輸出2,3,4,5 組成的元祖 ,args為預留後續的可擴充套件
test(1,*['x','y','z']) #前面加*表示遍歷整個列表
test(1,['x','y','z']) #如果沒有*則表示列表作為一個整體

def test2(x,**kwargs):
    print(x)
    print(kwargs)
test2(1,y=2,z=3) #傳遞生成的是字典

def test3(x,*args,**kwargs):#代表能接受任何形式的引數
    print(x)
    print(args)
    print(kwargs)
print()
test3(1,*[2,3,4],**{"a":2,"b":4,"c":4})
print()
test3(1,[4,5,6],a=4,b=4,c=1)