局部变量VS全局变量
局部变量--定义在函数里面的变量,只能在函数里面使用,在函数外面不能使用
全局变量--作用于整个程序
数据类型:int str tuple #不可修改的变量需要通过global声明才能在函数里面修改全局变量
数据类型:list dict set #可以修改的变量不需要global,直接可修改
1 #在函数内修改全局变量,需要用global声明
2 money = 500
3 def func():
4 global money#声明全局变量
5 money += 100
6 return money
函数形参有四种类型:
#1、必填参数(位置参数)
#2、默认值参数
#3、参数组
#4、关键字参数
位置参数
1 调用函数的时候,可以全部都用位置参数,位置是一一对应的,必须按照位置来传
2 def xxx(name,age,sex,addr,phone,qq,mail):
3 print(name,age,sex)
4 #位置参数
5 xxx('xiaomi',12,'m','cd',12346,3322323,'[email protected]')
关键字参数
1 调用函数时,可以位置参数与关键字参数一起使用,位置参数必须在前面
2 def xxx(name,age,sex,addr,phone,qq,mail):
3 print(name,age,sex)
4 #关键字参数
5 xxx('xiaomi',11,'f',addr='cd',phone=13113,mail='fewwef',qq=121212)
默认参数
1 #默认值参数在定义形参时给它赋一个默认值,如果函数调用时没传参数,则用默认值,传了参数则用传入值
2 def op_file(file, content=None):
3 if content:
4 with open("a.txt",'w') as f:
5 f.write(content)
6 else:
7 with open('a.txt') as f:
8 res = f.read()
9 return res
10 op_file('a.txt','hello')
11 print("读文件",op_file('a.txt'))
参数组
1 #参数前面加*,参数是一个元组
2 def send_mail(*names):
3 for name in names:
4 print("给%s发测试邮件!"%name)
5 send_mail()
6 send_mail('xiaomi')
7 send_mail('xiaomi','xiaohei','ewiiew')
1 # 两个*号,关键字传参,参数存成一个字典
2 def xiaomi(**info):
3 print(info)
4 xiaomi()
5 xiaomi(name = '123',addr='233')