函数1 三元运算(三目运算)

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表示这个参数可传可不传,不传默认就是92.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 pass2.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