函数---简单基础
一、认识函数
1.1作用:减少重复代码,便于修改维护
认识简单写法:实参,形参
# def shiya(name): # print('hello',name) # print('my name is',name) # #name = zhang peng 错误传参数的方法 # # shiya('zhangpeng')错误传参数的缩进 # # shiya('zhangpeng') 传参 def sac(x,y):#形参 rel = x**y print(rel) sac(2,8)
1.2 默认参数(写在形参里)
def info(name,age,add,country='cn'): #默认参数,必须写在位置参数(形式参数)的后面 print(name,age,add,country) info('zhang','22','pan') info('song','22','zhan') info('yang','22','li','koern') info('peng','22','er','jp')
1.3关键参数(写在实参里面)
def info(name,age,add,country): print(name,age,add,country) info('zhang',age='22',country='jp',add='pan')#关键参数,必须写在位置参数(形式参数)的后面 # info('cn',add='zhan',name='song',age='22',)#错误为参数name获取了多个值 info('zhang',22,country='cn',add='sichuang')
1.4非固定参数(可以传多个值)用来判断用户的输入
# def info(age,*name): # for i in name: # print("发送",i) #元祖类型 #方式一:----> info(23,24,25,'zhang','peng','da','u','f')#若形参出现*可传递多个值可以不固定 #方式二:-----> info(23,*[1,2,3,4,5,6,7,8])#若需要传一个列表里的多个元素给形参需要加*号 #字典类型 def info(age,*name,**add): print(age,name,add) #方式一:----> info(2,3,4,5,6,7,8,9,jia = 'sshan',lo ='jcabh') # **指的是一个字典类型的参数需要给里面的值是一个未定义的关键字的参数 d = {'a':'1111'} #方式二:----> info(22,**d) #字典也可以直接传入,前提是要遵循在位置参数之后传入输出:22 () {'a': '1111'} info(22,*d) #输出:22 ('a',) {}
1.5函数的返回值(用来做判断)return作为函数的返回值永远只会返回一个元素,他是作为一个函数结束的标志,默认的返回值为none
def info(name,age,add): print(name,age,add) if age > 22: return add #默认返回值是 none else: return False person = info('zhang',25,'huaxue') print(person) #--->return用于返回一个元素来判断下面程序的操作 # if person ==True: # print('good') # else: # print('haha')
1.6局部变量 定义在函数最外层的变量叫做全局变量,全部都可使用,定义在函数内部的变量局部变量,函数内部使用。若既有全局又有局部函数由内往外找变量。同级别的局部变量不能调用。
#局部变量 name = 'shuxue'#作用全部 def info(): # name = "数学" print("选择的是",name,id(name))#作用于局部,局部变量没有往外找 info() def info2(): name = "语文" print("你的选择是",name)#同等级的局部变量不能共用 info2() print(name,id(name))
若要在局部变量里面修改全部变量,可使用global来定义,一般不建议使用。
1.7嵌套函数 函数内部可以再次定义一个函数,要想执行需要调用#嵌套函数
# def fun1(): # print('zhang') # def fun2(): # print('lou') # fun2() #------>执行第二层函数,显示‘lou’ # fun1() #------>执行最外层函数,显示'zhang'
# age = 33 # def fun1(): # # age = 74 # print(age) # # age = 88 # def fun2(): # print(age) # fun2() # age = 88 #------>age成为父级
# fun1()
age = 33 def fun1(): # age = 74 print(age) # age = 88 global age def fun2(): print(age) age = 88 #----->报错age此时有两个变量 fun2() fun1()
1.8函数的作用域
python中一个函数就是一个作用域,当函数写完作用域就已经生成,当返回函数的值时函数只会到作用域里面的上级去查找。return返回后变量依然在作用域链上查找。
d = [1,2,3] def run(): # print(d) d = [2, 3, 4] def run1(): print(d) return run1#------>返回一个函数run1 val = run() val() #输出结果为:[2,3,4]
1.9匿名函数 主要作用减少代码量
# def f(x,y): # # if x>y: # return x*y # else: # return x+y # val = f(3,4) # print(val) #-----------------^原版^ #匿名函数 func =lambda x,y:x*y if x>y else x+y print(func(3,4))