python基础函数
v = #真为前面值 if 条件 else #假为后面的值
先做出来在想如何让简化
2 函数函数式编程:
本质:将多行代码拿到别处,起个别名,以后通过这个名字执行
场景:代码的重复执行
代码特别多,进行分割
2.1 函数基本格式def 函数名(): #函数内容 pass#函数的执行#函数名()#注意:函数如果不调用,内部代码永远不会执行
2.2 参数
def hanshuming(aaa):形式参数 v = (22,3,4,5) print(v[aaa]) passhanshu(1)实际参数
实例:
info = [11,22,44,555,666,]def gg(s): c = 0 for i in s: c += i print(c) passgg([11,33,44,555,666,7777,])
2.2.1 位置传参
def hanshuming(a1,a2):位置参数 print(a1,a2) passhanshu(1,2)#严格按照位置传参a1等于1,a2等于2,不能多传也不能少传
2.2.2 关键字传参
def hanshuming(a1,a2)#形式参数 print(a1,a2) passhanshu(a1=1,a2=2)关键字传参,位置就可以改变
关键字传参可以和位置传参,可以混合使用(位置参数要在前面,关键字参数要在后,他俩合起来要在等参数的个数)
def hanshuming(a1,a2,a3)#形式参数 print(a1,a2,a3) passhanshuming(1,2,a3=9)
2.2.3 默认参数[定义]
def funt(a1,a2=9):#实例中a2=9就是默认参数的 pass#a2=9表示这个参数可传可不传,不传默认就是9
2.2.4 万能参数(打散)
def hanshuming(*args)#*万能参数 print(*args) passhanshuming(1,2,9,33,"eee")#输出(1,2,9,33,"eee"),能够接受n个参数def hanshuming(*args)#*可以接受任意位置传参并转化为元组 print(*args) passhanshuming((1,2,9,33,"eee"))#输出((1,2,9,33,"eee")),能够打散循环到*args参数hanshuming(*(1,2,9,33,"eee"))#输出(1,2,9,33,"eee"),能够打散循环到*args参数*args不支持关键字传参def hanshuming(**kwargs)#可以接受任意关键字传参并转化为字典 print(**kwaras) passprint(k=2)#输出{"k":2}hanshuming (**{1:2,2:3})#输出{1:2,2:3}#注意*args**kwargs可以组合使用def hanshuming(*arge,**kwargs) print(*arge,**kwargs) passprint(2,3,4,5,6,7,k=2,r=3,t=5,)
2.3 函数的返回值
def fff(age): #一系列代码 return 9 #返回值为9,不定义默认none代表没有返回值val = fff("")#函数在执行过程中,遇到return就不执行#return能够返回任意返回#return 5,8,"asd" 返回元组
实例:
def ll(): with open("1.txt",mode="r",encoding="utf-8") as f: s = [] e = f.read().split("\n") for i in range(len(e)): r = e[i].split("|") s.append(r) return s pass
2.4 作用域
一个py文件就是一个全局作用域,一个函数就是一个局部作用域
a = 1def s1():#函数就是在全局域中的局部域 x1 = 666 print(x1) print(a)print(a)s1()
作用域查找数据规则:优先在自己作用域找,自己没有去父级作用域找
x = 10def func():#在自己域内找不到x参数对应值会去父级目录寻找 print(x)func()
子作用域中只能去父级查找,默认不能重新为父级变量赋值。但是找到对可变类型可以修改
如果非要对全局变量重新赋值需要使用global
name = "fmx"def ii():global name name = "alex"ii()print(name)#输出alex
如果要对上级变量做修改需要使用nonlocal
name = "fmx"def ii(): name = "alex" def jj() nonlocal name name = "hhh print(name)ii()print(name)#输出hhh,fmx
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。