一、函数
python的代码可以通过方法来封装一些代码,以便于后期的使用,定义格式:def 函数名(参数):
注意:方法只有在被调用时,才会被执行
def hello():#定义函数名为hello的方法,不用传参即可调用
print('hello')
print('sdfsdf')
#方法只有在调用时才会被执行
def write_file(file_name,content):
#定义写文件的方法,file_name和content为位置参数
with open(file_name,'w',encoding='utf-8') as f:
f.write(content)
#可使用return返回方法的返回值
def read_file(file_name):
with open(file_name,encoding='utf-8') as f:
content = f.read()
return content
result = read_file('修改文件.py')
#调用方法,使用result变量接收方法的返回值,返回值为读取文件内容
二、函数参数
函数参数分为:位置参数、默认值参数、可变参数、关键字参数
注意:当return返回多个值时,会自动将值包装成元组tuple返回
位置参数
def b(name,age): #必填参数,位置参数
print("name:",name)
print("age:",age)
return name,age
print(b("tang",18))
返回结果:
name: tang
age: 18
('tang', 18)
默认值参数
def op_file(file,content=None): #默认值参数
with open(file,'a+',encoding='utf-8') as f:
if content:#当content有内容时,执行写文件操作
f.write(str(content))
else:#当content无内容时,执行写文件操作
f.seek(0)
result = f.read()
return result
可变参数def 函数名(*args):--------------------------参数默认将多个传参包装为元组tuple进行传递
def send_sms(*args):#可变参数
print(args)
send_sms(1,2,3,3,4,24,)
send_sms([1,2,3],[1,3],{"name":"age"},(1,2,4))
l=[1,2,4,5,6] #----------------------可传入list,使用*list来传入参数,系统自动封装为tuple传参
s='asdss' #-------------------------可传入字符串,使用*s来传入参数,系统自动封装为tuple传参
send_sms(*l)
send_sms(*s)
返回结果:
(1, 2, 3, 3, 4, 24)
([1, 2, 3], [1, 3], {'name': 'age'}, (1, 2, 4))
(1, 2, 4, 5, 6)
('a', 's', 'd', 's', 's')
关键字参数 def 函数名(**kwargs):--------------------关键字参数需要传入一个字典类型,系统将入参自动封装为
def t(**kwargs):#关键字参数,传入的必须得指定关键字
print(kwargs)
t(name="tang",age=18) #第一种传参方法:直接使用变量名=....
list={"name":"lei",'age':10}#第二种传参方法:使用字典传参,参数使用**list格式
t(**list)
返回结果:
{'name': 'tang', 'age': 18}
{'name': 'lei', 'age': 10}
三、多种类型参数混合使用顺序
#必填参数、默认值、可变参数、关键字参数 必须得按照这个顺序来
#必填参数必须写到默认值参数前面
#默认参数必须在可变参数前面
#可变参数必须在关键字参数前面
def test(name,content=None,*args,**kwargs):
print(name)
print(content)
print(args)
print(kwargs)