python——函数(1)
1、函数概述
1.1函数概念
所谓函数,就是把重复的代码单独的分离出来,放在⼀个公共的地方,以后可以⼀直的进行调用,这样就可以解决多次重复来编写。
1.2函数的定义形式
函数定义:定义函数使用的关键字是def
如:def 函数名称(函数的参数):
函数表达式
1.3函数的参数
常用的函数的参数有形式参数、实际参数、默认参数和动态参数。
(1)形式参数:函数里面的参数叫做形式参数;
(2)实际参数:函数被调用的时候,给参数赋予的值叫做实际参数。
(3)默认参数:在定义函数的时候给形式参数指定默认的值叫做默认参数。默认参数只能放在非默认参数的后面,如果放在前面就会报错。在调用过程中,如果没有给
该形式参数赋值,那么他的值默认就是我们定义的默认值,如果我们给形式参数定义了值,那么他的值就是我们新定义的值。
(4)动态参数:定义一个函数的时候,当函数的形式参数个数不确定,数据类型不确定的时候,我们就可以用动态参数。
如def func(*a,**b),a和b为自定义的变量,一般a和b默认用args和kwargs,即def func(*args,**kwargs)。
*:代表的是元组的数据类型
**:代表的是字典的数据类型
1.4函数的调用
函数写完后,必须要经过调用才能生效,如果不调用,不会生效。调用函数的方式是:函数名称()。函数调用的注意事项:
(1)函数在调用时,可以填写形式参数,也可以不填写,但是要注意的是要填写就都填写,要不填写就都不填写;
(2)函数在调用的时候,填写的实际参数要与形式参数的顺序、个数保持一致;
(3)函数有形式参数的时候,调用函数必须填写实际参数。
2、函数应用举例
2.1函数定义与调用
#函数定义
def fun():
print("hello world")
#函数调用
fun()
2.2登录的函数
#登录的函数
def login(username,password):
if username=="qy" and password=="123456":
print("ok")
else:
print("no")
#调用函数的时候,其形式参数:username、password要填写的话,需要都进行填写,如下
login(username="qy",password="123456")
#调用函数的时候,其形式参数:username、password也可以都不进行填写,如下:
login("qy","123456")
2.3注册的函数
#注册的函数,然后把注册的用户名和密码写入到login.txt文件中。
def registry():
username=input("请输入用户名:\n")
password=input("请输入密码:\n")
code=username+","+password
with open(file="login.txt",mode="a") as f:
f.write(code)
registry()
2.4输出文件中的用户名
#读取用户名和密码然后输出用户名。
def user():
with open(file="login.txt",mode="r") as f:
#定义一个变量,把读取的值储存在变量中,通过split把他进行拆分,这时候他就是一个列表,我们通过索引进行查看即可。
a=f.read().split(",")
print(a[0])
user()
2.5默认参数练习
#默认参数练习,给密码赋予默认值123456
def login(username, password="123456"):
if username=="qy" and password=="123456":
print("ok")
else:
print("no")
#调用函数的时候,如果不指定形式参数password的值,它的值默认就是123456。
login(username="qy")
#如果指定形式参数password的值,他的值就是我们指定的值。
login(username="qy",password="asd12345")
2.6动态参数练习
#动态参数
#元组练习,*args在函数中会把传的参数转成一个元组。
def func(*args):
print(args)
print(type(args))
func("(1,2,3)")
func("[1,2,3]")
func("{key:value}")
#字典练习,**kwargs在函数中会把传的参数转成一个字典。
def func(**kwargs):
print(kwargs)
print(type(kwargs))
#字典参数的实际参数,必须是键值的形式。
# func(**{"name":"qy"},**{"a":"b"})
func(name="qy",a="b")
#使用场景:当*args和**kwargs组合起来使用,理论上能接受任何形式和任意数量的参数,需要注意的是,*args必须出现在**kwargs之前。
def func(*args,**kwargs):
print(args,kwargs)
func(pay="微信",price=100)
func(pay="支付宝",price=80)
func(pay="招商银行",user="qy",price=40)
func(1,2,a="b",c="d")
list1=["微信","支付宝","招商银行","现金","a+b+c"]
tuple1={"微信":"ok","支付宝":"no","招商银行":"ok","现金":"500","a+b+c":"89.9"}
#func(list1,tuple1),如果这样调用,后面的字典是空的,因此我们需要叫函数知道那个变量是*args的参数,哪个是**kwargs的参数,正确传参写法:
func(*list1,**tuple1)