目录
事例2:*不仅应用于元组还应用于字符串、列表、字典等迭代对象
一.列表元组拆分出来的为位置参数,字典拆分出来的为关键字参数
提示:以下是本篇文章正文内容,下面案例可供参考
知识点1:字符串的3种表达方式
一、百分号字符串
>>name:小华,age:18,score:80.123
二、格式字符串
1.f'输出式{表达式},输出式{表达式}'
name='小华'
age=18
score=80.123
print(f'name:{name},age:{age},score:{score:.3f}')
>>name:小华,age:18,score:80.123
⚠️代码注释:
- 有多个 {}
- {}里面的是已定义变量,{}外面的是原模原样输出的东西
- {}里的如果要格式化,使用“:”并在后面标明格式化要求
- .3f为保留三位小数
2.f'{表达式=},{表达式=:.}'
name='小华'
age=18
score=80.1234
print(f'{name=},{age=},{score=:.2f}')
>>name='小华',age=18,score=80.12
⚠️代码注释:
- 与上面的对比 这个更加限制一些
- 要求{}内有等于号
三、format字符串
1.‘name={}’.format()
name='小华'
age=18
score=80.1234
print('name={name},age={age},score={score:.2f}'.format(name=name,age=age,score=score))
知识点2:参数拓展
一、定义函数时设置默认参数
def f(name,age=19):
print(f'name={name},age={age}')
f("小明")
>>name="小明",age=19
二.默认值参数只能从后向前赋值
错误代码如下:
def f(a,b=0,c):
print(a,b,c)
f(1,2)
正确代码如下:
def f(a,b,c=0):
print(a,b,c)
f(1,2)
>>1,2,0
三.关键值参数
1.定义:按照名称传递参数
2.可以不按照顺序赋值
def f(a,b,c):
print(a,b,c)
f(a=1,c=2,b=4)
>>1 4 2
四.使用了关键值参数后面的参数也必须使用关键值参数
def f(a,b,c):
print(a,b,c)
f(1,c=2,3)
>>报错
五.函数体内对实参定义不影响实参的值
def f(a):
a=0
i=6
f(i)
print(i)
>>6
六.未对形参赋值时,可以影响实参列表
i=[1,2,3]
def f(a):
a.append(6)
a=[1,3,8]
a.append(7)
f(i)
print(i)
>>[1, 2, 3, 6]
知识点3:可变参数
一.定义
1.可传递任意数量的参数值
2.定义即在参数args名前加一个*号(get_sum为函数名)
3.按照顺序赋值
二.调用后args以元组形式保存所有参数
def f(*args):
print(args)
f(1,2,3)
>>(1,2,3)
三.可变参数后面的普通参数只能用关键词赋值
def get_sum(a,b,*args,c,d):
print(args)
print(a)
print(c)
get_sum(1,2,3,4,c='xia',d=5)
>>(3, 4)
1
xia
- 如果后面不用a=调用参数,那么会报错
四.在同一个函数中不能定义两个可变参数
1.可变参数可以和普通参数结合使用
def f(*args,a,b):
五.可变参数不支持使用关键词赋值
def f(*args):
print(args)
f(a=1)
知识点4:可变关键词参数
一.定义
可以传递任意数量的参数值,但调用时必须使用关键词
错误代码:
def get_sum(**kwargs):
for k,v in kwargs.items():
print(f'{k}:{v}')
get_sum(1,2,3)
def get_sum(**kwargs):
for k,v in kwargs.items():
print(f'{k}:{v}')
get_sum(a=1,b=2,c=3)
>>a:1
b:2
c:3
二.kwargs要保证处在参数列表的最后的位置
def get_sum(a,b,**kwargs,c):
for k,v in kwargs.items():
print(f'{k}:{v}')
get_sum(1,2,4,5,c=3)
>>报错
因为c可能被视作kuargs的参数
改正方法:把c移到**args前面
三.不定长参数
1.封装成*元组(位置参数)或**字典(关键词参数)形式
- **kuargs一定在后面
- **kuargs用关键字赋值
- 编写代码好习惯普通参数在前面,再到*args,再到**kuargs
def f(*args,**kwargs):
print(args,end=" ")
print(kwargs)
f(1,2,3,x=4,y=5)
>>(1,2,3) {x:4,y:5}
知识点4:元组解包
事例1:*c是列表!!!!
- 解包时只能有1个*号类型的变量
- (**bianliang) 这是不存在的
a,b,*c=(1,2,3,4,5)
print(a)
print(b)
print(c)
>>1
2
[3, 4, 5]
事例2:*不仅应用于元组还应用于字符串、列表、字典等迭代对象
a,b,*c="12345"
print(a,end=" ")
print(b,end=" ")
print(c)
>>1 2 ['3', '4', '5']
- 这里的a和b是‘1’ ‘2’
a,*c={'a':1,'b':3,'c':2}
print(a,end=" ")
print(c)
>a ['b','c']
-
默认解包字典解键值
a,*c={'a':1,'b':3,'c':2}.values()
print(a,end=" ")
print(c)
>>1 [3,2]
知识点5.拆分参数列表
一.列表元组拆分出来的为位置参数,字典拆分出来的为关键字参数
如果元素已经被封装在列表元组字典中,则可以从其中拆分出来
def f(*a):
sum = 0
for i in a:
sum=sum+i
print(sum)
ls=[1,2,3]
f(*ls)
- *a表示可变参数
- *ls表示将列表所有元素拆分出来作为函数f的实参
二.字典的键必须是克哈希对象
- 不能为列表,字典,集合,元组,变量
- 只能为字符串、数值型!!!!
def f(level,name,age):
print('name=%s,level=%s,age=%d'%(name,level,age))
d={'name':'lixiaoming','level':'优秀','age':19}
f(**d)
>>name=lixiaoming,level=优秀,age=19
知识点6.高阶函数:把函数当作参数的一种函数
def f():
def a():
print("abc")
a()
f()
>>“abc”
- 嵌套函数也必须先定义后调用
- 在函数体内定义的函数 只能在函数体内调用 出了函数范围后不能再调用 否则视作未定义
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了字符串、关键值参数、函数调用等知识的使用,而python提供了大量能使我们快速便捷地处理数据的函数和方法。