a, b, c, d ="{0} B {1} D {2}","{a} B {c} D {e}","{0} B {c} D {e}","{0} B {c} D {e}"print(a.format("A","C","E"),"\n",# 当 format 里面的值没有指定时默认按照顺序排
b.format(a="A", c="C", e="E"),"\n",# 当format 中指定了顺序则按照指定顺序
c.format("A", c="C", e="E"),"\n",# 可用数字默认和字母指定混用 todo 但是数字要在字母前
d.format("A", e="C", c="E"),"\n")# 与c对比当format中指定顺序错位,则值错位
e ="{0:.1f}{1}"# 在替换域中,冒号表示格式化字符的开始,.1表示保留一位小数,f为定点数(类似浮点数)print(e.format(1.11,"kg"))
""" List()把一个可迭代对象转换为列表"""
a ="I Love China"print(list(a))# 输出>>>['I', ' ', 'L', 'o', 'v', 'e', ' ', 'C', 'h', 'i', 'n', 'a']
"""tuple([iterable])把一个可迭代对象转换为元组"""
a =[3,2,1],[4,3,2,1]print(tuple(a))# 输出>>>([3, 2, 1], [4, 3, 2, 1])
"""str(obj)将一个对象转化为字符串"""
a =[3,2,1]print(str(a),"这是未转换前%s"%type(a),"这是转换后%s"%type(str(a)))# 输出>>>[3, 2, 1] 这是未转换前<class 'list'> 这是转换后<class 'str'>
"""len(obj)显示一个字符串的长度"""
a, b, c ="I Love China",[3,2,1,4,3,2,1],{"A":1,"B":2}print(len(a),len(b),len(c))# 输出>>>12 7 2
"""max()/min()返回序列或参数集合中的最大值/最小值"""# todo 在排序中按照ASCII码排序进行
a, b, c ="I Love China",[3,4,3,-2,1],{"A":1,"B":2}print("这是max的输出%s"%[max(a),max(b),max(c)])print("这是min的输出%s"%[min(a),min(b),min(c)])# 输出>>>这是max的输出['v', 4, 'B']# 输出>>>这是min的输出[' ', -2, 'A']
"""sum(iterable[, start=0])返回序列iterable和可选参数start的总和"""
a, b =[3,4,3,-2.5,1],(3,4,3,-2.5,1)print(sum(a),sum(b))# 输出>>>8.5 8.5
"""reversed()反转"""
a =[3,4,3,-2.5,1]print(list(reversed(a)))# 输出>>>[1, -2.5, 3, 4, 3]
defdefault_parameters(name=0):"""这里面的name=1就是默认参数。默认参数可以在调用函数时不用给参数,也避免了无参数导致的报错"""print(name)"""括号为空时使用默认参数,括号为1时按照默认顺序赋值,括号为name=2时按指定参数赋值"""
default_parameters(), default_parameters(1), default_parameters(name=2)print(default_parameters.__doc__)# todo .__doc__查看函数注释
(形参)可变参数
"""------------------------------------
# todo 这是单一可变参数举例
------------------------------------"""defvariable_parameters(*a):"""这是单一可变参数举例"""print("这是可变参数:", a)
variable_parameters("可以使用字符串、数字、列表、字典、元组等作为传参")# 这是给一个参数
variable_parameters(1,["列表1","列表2"],{"字典1":1,"字典2":2},("元组1","元组2"))# 这是给多个参数"""------------------------------------
# todo 这是多值可变参数举例
------------------------------------"""defvariable_parameters2(*b, name="这是name的默认值", value=""):"""这是多值可变参数举例"""print(b, name, value)
variable_parameters2(["这是可变参数的值1"],("这是可变参数的值",2))# 只给可变参数传参时
variable_parameters2(1, name="这是name参数的新值", value="这是value参数的新值")# 分别给可变参数、name、value分别传参时
variable_parameters2(name="这是name参数的新值", value="这是value参数的新值")# 将可变参数缺省时print(variable_parameters.__doc__, variable_parameters2.__doc__)
局部变量和全局变量
deflocal_variable():
b =2# 这里可以理解为局部变量print("这里是函数内部调用外部变量a时打印出a的结果a=%s"% a)# 在函数里面可以调用全局变量print("这里是函数内部调用内部变量b时打印出b的结果b=%s"% b)
a =1# 这个就可以理解为全局变量try:# todo 这里用尝试的方法来打印b 这里可以百度一下python忽略错误"""这里使用忽略错误的方式来打印局部变量的情况"""print(b)except Exception as A:# todo 如果上面try(尝试运行)有错误,则执行下面的语句,否则不执行(类似if 和 else)print("当print(b)出错时,打印这段话","因为print(b) %s"% A)print("----------分--------------割-------------线--------------")print(a)print("下面打印的是调用函数打印的结果")print(local_variable())# 输出>>>当print(b)出错时,打印这段话 因为print(b) name 'b' is not defined# 输出>>>----------分--------------割-------------线--------------# 输出>>>1# 输出>>>下面打印的是调用函数打印的结果# 输出>>>这里是函数内部调用外部变量a时打印出a的结果a=1# 输出>>>这里是函数内部调用内部变量b时打印出b的结果b=2# 输出>>>None
在函数内部修改全局变量的值
a =1defMyFun():
a =2print("此时a的地址为%s,a=%s"%(id(a), a))defMyFun1():print("此时a的地址为%s,a=%s。从这里可以看出MyFun中对a值的修改并没有在MyFun1中产生影响"%(id(a), a))defMyFun2():global a
a =2print("此时a的地址为%s,a=%s"%(id(a), a))defMyFun3():print("此时a的地址为%s,a=%s。从这里可以看出MyFun2中对a值的修改已经在MyFun3中改变了a的地址"%(id(a), a))
MyFun()
MyFun1()print("----------分--------------割-------------线--------------")
MyFun2()
MyFun3()# 输出>>>此时a的地址为140716128641456,a=2# 输出>>>此时a的地址为140716128641424,a=1。从这里可以看出MyFun中对a值的修改并没有在MyFun1中产生影响# 输出>>>----------分--------------割-------------线--------------# 输出>>>此时a的地址为140716128641456,a=2# 输出>>>此时a的地址为140716128641456,a=2。这里可以看出MyFun2中对a值的修改已经在MyFun3中改变了a的地址
函数的内嵌及调用
deffun1():print("这是fun1函数的打印")deffun2():print("这是fun2函数的打印")
fun2()# 这里其实是在fun1函数中调用的fun2,注意它和fun1中的print对齐,所以不在fun2函数内部。
fun1()# 输出>>>这是fun1函数的打印# 输出>>>这是fun2函数的打印"""在函数内部修改函数外部变量。关键字:nonlocal """deffun3():
x =[5]
y =5deffun4():nonlocal y
x[0]*= x[0]# 这里没有将x设为函数fun2的外部变量,而是将x以列表的形式调用
y *= y # 这里通过nonlocal将y强制访问。来进行修改return x[0], y
return fun4()print(fun3())# 输出>>>(25, 25)
lambda函数表达式(简单函数简写)
"""使用lambda表达式可以省去函数的定义过程,在程序执行完成后Python会自动删除
https://blog.csdn.net/zjuxsl/article/details/79437563
这篇文章写的比较好"""
valueab =lambda a, b: a + b
print(valueab(100,10))# 输出>>>110
filter(过滤函数)
"""filter(function or None, iterable)函数参数"""defodd(x):"""筛选出偶数"""return x %2
temp =range(20)
show =filter(odd, temp)print(list(show))# todo 这里是用filter和lambda组合,将上述函数简化为下面代码print(list(filter(lambda x: x %2,range(20))))# 输出>>>[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]# 输出>>>[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]