函数:
函数的写法:
无返回值
def add(): #定义函数
a = 10
b = 20
print(a+b)
add() #调用函数
有返回值
def add():
a =10
b =20
return a+b #函数返回值
sum =add()
带有形参的函数
def add(a,b) #a,b 分别是形参
print(a+b)
add(10,20) #10,20分别是对应的a,b实际参数
作用域:
a = 100 #a是一个全局变量
def test1():
print(a) #test1函数可以调用全局变量a
def test2():
global a #要在test2函数中修改全局变量a ,必须使用global 声明
a = 200
print(a) #打印在test2函数修改全局变量a的值
def test3():
a = 300 #a为局部变量,而不是全局变量a
print(a)
if __name__ == '__main__':
test1() # 100
test2() # 200
test3() #300
print(a) #200
固定位置参数与关键字参数
def student_info1(name='张三',gender='男',age=15,grade='高一'): #可变位置参数
print(f'姓名{name},性别{gender},年龄{age},班级{grade}')
def student_info(name='张三', gender='男', age=15, grade='高一'):
print(f'姓名{name},性别{gender},年龄{age},班级{grade}')
def student_info2(name, gender, age, grade='高一'): #固定位置参数和默认参数,默认参数必须放在最后
print(f'姓名{name},性别{gender},年龄{age},班级{grade}')
def student_info3(name, gender, age=16, grade='高一'):
print(f'姓名{name},性别{gender},年龄{age},班级{grade}')
if __name__ == '__main__':
student_info1()#姓名张三,性别男,年龄15,班级高一
student_info('张三','男',14,'初二') #姓名张三,性别男,年龄14,班级初二
student_info('张三', 14,'男', '初二') #姓名张三,性别14,年龄男,班级初二
student_info2('张三', 14, '男')#姓名张三,性别14,年龄男,班级高一
student_info2('张三2', 14, '男')#姓名张三2,性别14,年龄男,班级高一
student_info2('张三3', 16, '男','初三')#姓名张三3,性别16,年龄男,班级初三
student_info3('李四', 14, '男') # 姓名李四,性别14,年龄男,班级高一
student_info3('李四2', 14, '男') #姓名李四2,性别14,年龄男,班级高一
student_info3('李四3', 16, '男', '初三')#姓名李四3,性别16,年龄男,班级初三
*args代表任何多个无名参数,返回的是元组;
def add1(n,*args):
print(args)
if __name__ == '__main__':
add1(3,5,7,9) #(5, 7, 9) args是一个元组数据
**kwargs表示关键字参数,所有传入的key=value,返回字典;
def p_info(name,gender,**kwargs):
print(kwargs)#{'age': 18, 'height': 169, 'weight': 120}
if __name__ == '__main__':
p_info('张三','男', age=18,height=169,weight=120)
匿名函数:通常用于那些简单的、一次性的函数,这样可以避免定义一个完整的函数
匿名函数语法
add = lambda a, b: a + b
result =add(2,3)
print(result)