Python学习day05-字符串、format字符串格式化、函数(返回值、变长参数)

一、字符串格式化

①占位符:
%s:万能的,可以打印所有数据类型,一般用于字符串
%d:打印整型
%f:打印浮点数,默认最多打印小数点后6位
②格式化输出:
(1)普通输出

msg='i am %s my age is %d' % ('Hello',18)
print(msg)	#i am Hello my age is 18

(2)浮点数输出
%.3f:保留小数点后3位,此处为保留小数点后3位

tpl = "i am %.3f" % 9.45874
print(tpl)	#9.458

输出百分比:
%f后加两个%号

tpl = 'percent %.2f %%' % 99.9762
print(tpl)	#percent 99.98 %

(3)字符串截取
%.2s:此处为只打印2个字符

tpl = "i am %.2s" % "HelloWorld"
print(tpl)	#i am He

(4)字典的打印:
括号内填对应的key值

tpl = "i am %(name)s age %(age)d" % {"name": "alex", "age": 18}
print(tpl)	#i am alex age 18

(5)对齐输出
+:右对齐
-:左对齐

msg='i am %+5s my age %d' %("董雨生",18)
print(msg)	#i am   董雨生 my age 18

③附加:sep
字符串的拼接

print('root','x','0','0',sep=':')	#root:x:0:0

二、format格式化输出

①普通格式输出
(1)通过花括号一一对应
前面的花括号数量不能多于后面括号内的元素,否则会出错
默认一一对应

tpl = "i am {}, age {}, adress {}".format("seven",18,"alex")
print(tpl)	#i am seven, age 18, adress alex
tpl = "i am {:s}, age {:d}".format('seven',18)	#带有占位符的输出

(2)通过索引输出
通过索引输出,索引不能越界,并且同一索引下的值可以重复被使用

tpl = "i am {2}, age {0}, adress {1}".format("seven",18,"alex")
print(tpl)	#i am alex, age seven, adress 18	

②字典的输出
(1)字典前加两个*号
通通过key值打印,并且前面同一key值可以在前面多次使用

tpl = "i am {name}, age {age}".format(**{"name": "seven", "age": 18})
print(tpl)	#i am seven, age 18

(2)其它样式

tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)

③列表的输出
字典前加一个*

tpl = "i am {:s}, age {:d}".format(*["seven", 18])
print(tpl)	#i am seven, age 18

③符号输出
b:2进制
o:8进制
x:16进制中的英文小写
X:16进制中的英文大写
%:百分比

tpl = "numbers: {:b},{:o},{:x},{:X}, {:%}".format(15, 15, 15, 15, 15.87623)
print(tpl)
#打印:numbers: 1111,17,f,F, 1587.623000%

三、函数

①函数基本格式:
def:定义函数的关键字

def test(x):
    x+=1
    return x

同一作用域内,函数重名,后面的函数会覆盖前面的函数,前面的函数失效
②函数返回值:
1.函数返回值类型:可以为任意类型,函数也可以返回(自身函数都可以)
2.函数无返回值时:默认返回None
3.函数返回多个元素时:这些元素会被放在一个元组内,以元组的形式返回,实际上返回的还是一个元素

#例:返回多个元素
def test03():
     return 1,2,3,4,'a',['alex'],{'name':'alex'},None
print(test03())
#打印:(1, 2, 3, 4, 'a', ['alex'], {'name': 'alex'}, None)

③函数参数
形参:在调用函数时才开辟内存空间,调用结束后释放内存空间

def calc(x,y):
    return x*y
print(calc(1,3))	#3

(1)位置参数:
参数必须一一对应,缺一多以都不可

def test(x,y,z):
     pass
test(1,2,3)

(2)关键字参数:
调用时指明参数,顺序可以无序。
调用函数时,关键字参数必须在位置参数右边

def test(x, y, z):
    pass

test(y=1,x=3,z=4)
test(1,3,z=2)
test(1,3,y=2)   #报错
test(1,y=2,3)   #报错
test(z=2,1,3)   #报错

(3)默认参数

def handle(x,type='mysql'):
    pass
    
handle('hello')
handle('hello',type='sqlite')	#默认参数type会被覆盖
handle('hello','sqlite')		#同上

④参数组
(1)*args
参数组中不传入参数时,默认不处理也不能对参数组进行操作。
参数组传入参数时,元素会被放在一个元祖中进行处理

def test(x,*args):
    print(args)
#参数组不传入参数时
test(1)	#()
def test(x,*args):
    print(args)		#({'name': 'alex'}, 1, 'Hello')
    print(args[0])	#{'name': 'alex'}
#参数组传入参数时
test(1,{'name':'alex'},1,"Hello")

传入列表时:
1.如果列表前不加*,列表被整体放入参数组中
2.列表前不加*,列表元素被拆散一个一个放入参数组中

def test(x,*args):
    print(args)		#(['x', 'y', 'z'], 1, 2)
    print(args[0])	#['x', 'y', 'z']
#列表前不加*号
test(1,['x','y','z'],1,2)
def test(x,*args):
    print(args)		#('x', 'y', 'z', 1, 2)
    print(args[0])	#x
#列表前不加*号
test(1,*['x','y','z'],1,2)

(2)**kwargs
参数组中不传入参数时,默认不处理也不能对参数组进行操作。
参数组传入参数时,元素会被放在一个字典中处理
形参的key值不能重复,切不能与非参数组中的形参名重复

def test(x,**kwargs):
     print(x)		#1
     print(kwargs)	#{'y': 2, 'z': 3}
     print(kwargs,kwargs.get('y')	#2
test(1,y=2,z=3)
==================
test(1,1,2,2,2,2,2,y=2,z=3)	#报错
test(1,y=2,z=3,z=3)			#报错 :一个参数不能传两个值

实参传入字典

def test(x,**kwargs):
     print(x)		#1
     print(kwargs)	#{'y': 2, 'z': 1}
test(1,y=2,**{'z':1})

(3)组成使用
*args参数必须在**kwargs参数前

def test(x,*args,**kwargs):
    print(x)
    print(args[1])
    print(kwargs)
test(1,2,3,y=2,z=3)

猜你喜欢

转载自blog.csdn.net/qq_41453285/article/details/82852806
今日推荐