幻兽编年史,行尸走肉第三季字幕,旷世奇材
def len(): 函数体
def my_len(): n = 0 for i in dic: n += 1 print(n)
def yue(): print("掏出手机") print("打开微信") rint("摇一摇") print("聊一聊") print("约吗?") print("....") yue() yue()
面向过程:
print("掏出手机") print("打开微信") print("摇一摇") print("聊一聊") print("约吗?") print("....") print("上班") print("掏出手机") print("打开微信") print("摇一摇") print("聊一聊") print("约吗?") print("....") print("检查一下")
面向函数编程:
def work(): print("打开电脑") print("查看邮件") print("打开找到微信") print("进行群聊") print("开始撸代码") print("撸完") print("下班") def yue(): print("掏出手机") print("打开微信") print("摇一摇") print("聊一聊") print("约吗?") print("....") yue() work() yue() print("检查一下") yue() print("6块钱的麻辣烫") yue() print("歇会,上个班")
def yue(): print("打开手机") print("打开微信") print("打开附近的人") print("聊一聊") print("见一见") print("......") return 1,2,3,4,5 print(1111) girl = yue() print(girl)
函数名+()
启动函数
接受返回值
def yue(app1,app2,app3,app4): # 形参 print("打开手机") print(f"打开{app1} {app2}") print("聊一聊") print("见一见") print("......") yue("微信","探探","陌陌","soul") # 实参
def yue(a,b,c,app1="微信"): # 形参 print("打开手机") print(f"打开{a} {app1}") print("聊一聊") print("见一见") print("......") yue("探探","陌陌","微信") # 实参
def yue(a,b,c,a1="微信"): # 形参 print("打开手机") print(f"打开{a} {b} {c} {a1}") print("聊一聊") print("见一见") print("......") yue(11,c=5,b=1) # 实参
三元运算符*(三目运算符):(只支持if else)
条件成立的结果 条件 条件不成立的结果
def func(a,b): return a if a > b else b print(func(6,9))
def info(name,age,job,moeny,sex="男"): print(f"姓名:{name} 年龄:{age} 性别:{sex} 岗位:{job} 薪资:{moeny}") while true: name = input("name:") # rimo age = input("age:") # 89 sex = input("sex(男性回车):") # 女 job = input("job:") # wc money = input("moeny:") # 10 if sex == "女": info(name,age,job,money,sex) else: info(name, age, job, money)
一一对应
不进行传参使用默认参数,进行传参时使用传递的参数
一一对应
按照名字进行传参
位置参数和关键字参数一起使用
位置参数 > 默认参数(关键字参数)
def eat(a,b,c,d,e,f): print(a,b,c,d,e,f) eat("麻辣烫","大烧饼","大煎饼","大腰子","韭菜","羊蝎子")
如何解决参数数量太多?
def eat(*args): # 函数的定义阶段 *聚合(打包) print(args) # tuple print(*args) # 函数体中的 * 打散(解包) eat("麻辣烫","大烧饼","大煎饼","大腰子","韭菜","羊蝎子")
def eat(a,b,*c): #位置参数 > 动态位置参数 print(a) print(b) print(c) # tuple eat("面条","米饭","馒头","大饼")
def eat(a,b,*args,d=2,**c): # 位置参数 > 动态位置参数 > 默认参数 > 动态默认参数 print(a) print(b) print(d) print(args) # tuple print(c) # dict eat("面条","米饭","大烧饼","大煎饼",a1=1,b1=2) # 位置 > 关键字
def eat(*args,**kwargs): # (万能传参) print(args) # tulpe print(kwargs) # lst = [1,23,4,6,7] dic = {"key1":1,"key2":3} 应用场景 eat(lst,dic) eat(*lst,**dic) # eat(1,23,4,6,7,"key1"=1,"key2"=2)
总结:
函数的定义阶段 * 和 ** 都是聚合
函数体中 * 就是打散,* args将元组中的元素进行打散,* kwargs将字典的键获取
动态位置参数:先执行位置参数,位置参数接受后额外的参数由动态位置参数进行接受 ,获取的是一个元组
动态关键字参数(默认):先执行默认参数,默认参数接受后额外的由默认参数进行接受,获取的是一个字典
实参和函数体:
def a(a:int,b:int): """ 求和 :param a: int :param b: int :return: int """ return a + b def b(a:int,b:int): """ 求差 :param a: int :param b: int :return: int """ return a - b
内置空间
全局空间
局部空间
def func(): a = 1 print(a) func()
局部空间
全局空间
内置空间
a = 10 def func(): print(a) func()
全局作用域:全局 + 内置
局部作用域: 局部
作用域的作用就是保护数据的安全性
混合嵌套:
def f1(): print(11) def f2(): print(22) f1() def f3(): print(33) f1() def run(): f3() f2() f1() run()
def foo(a): a = 10 def f1(b): c = b def foo(c): print(c) print(foo.__doc__) foo(c) print(b) f1(a) print(a) foo(25)
a = 10 def func(): global a a = a - 6 print(a) print(a) func() print(a)
a = 100 def func(): b = 10 def foo(): b = a def f1(): nonlocal b b = b + 5 print(b) # 105 f1() print(b) # 105 foo() print(b) # 10 func() print(a) # 100
enumerate() #枚举 默认从0开始数 第一个参数是可迭代对象 第二个对象是起始值
def func(): print(1) print(func) # 函数的内存地址 a = func print(a) a()
def login(): print("这是登录") def register(): print("这是注册") def index(): print("这是博客园的主页") msg = """ 1 登录 2 注册 3 主页 """ choose = input(msg) # 1 if choose.isdecimal(): if choose == "1": login() elif choose == "2": register() elif choose == "3": index()
改良:
def login(): print("这是登录") def register(): print("这是注册") def index(): print("这是博客园的主页") dic = {"1":login,"2":register,"3":index} msg = """ 1 登录 2 注册 3 主页 """ choose = input(msg) # 1 if choose.isdecimal(): if dic.get(choose): dic[choose]() else: print("请正确输入!")
def func(a): print(111) a() def foo(): print(222) func(foo)
def func(): def foo(): print(111) return foo a = func() a() func()() # foo()
练习:
def f1(c): def a(): def f3(): print(3333) return [f3,a,f1] print(11) return f3() ret = a() return c(ret) def aa(b): print(111) return b print(f1(aa))
匿名函数是有名字的 叫做 lambda
print((lambda x:x+6)(5)) f = lambda x:x+6 print(f.__name__) f = lambda x,y,z,b=1:x,y,z,b print(f(1,2,3)) print([lambda :5][0]()) print((lambda :5)()) a = lambda :5 a() lst = [lambda :i for i in range(5)] print(lst[0]())
lst = [lambda :i for i in range(5)] print(lst[0]()) 面试题拆解: lst = [] for i in range(5): def func(): return i lst.append(func)
lst = [] # [lambda x:x+1,lambda x:x+1] for i in range(2): lst.append(lambda x:x+1) print(lst[-1](5)) lst = [lambda x:x+1 for i in range(5)] print(lst[0](5)) tu = (lambda :i for i in range(3)) print(next(tu)()) print(next(tu)()) print(next(tu)()) def func(): for i in range(3): # i = 0 1 2 def foo(): # foo1 foo2 foo3 return i yield foo # foo1 foo2 foo3 g = func() print(next(g)()) # foo1 print(next(g)) # foo2 print(next(g)) # foo3 lst = [lambda :i for i in range(3)] print(lst[0]()) tu = (lambda :i for i in range(3)) print(next(tu)())
lst = [lambda x:x+5 for i in range(2)] print([i(2) for i in lst]) lst = [] # [lambda x:x+5,lambda x:x+5] for i in range(2): lst.append(lambda x:x+5) new_lst = [] for i in lst: new_lst.append(i(2)) print(new_lst)
lst = (lambda x:x+5 for i in range(2)) print([i(2) for i in lst]) def func(): for i in range(2): f = lambda x: x + 5 yield f g = func() lst = [] for i in g: lst.append(i(2)) print(lst)
lst = [lambda x:x*i for i in range(2)] print([i(2) for i in lst]) #[2,2] lst = [] # [lambda x:x*i,lambda x:x*i] for i in range(2): lst.append(lambda x:x*i) # print(i) new_lst = [] for em in lst: new_lst.append(em(2)) print(new_lst)
lst = (lambda x:x*i for i in range(2)) print([i(2) for i in lst]) #[0,2] def func(): for i in range(2): f = lambda x:x*i yield f g = func() lst = [] for i in g: lst.append(i(2)) print(lst)
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
新手学习Python2和Python3中print不同的用法
Python基于os.environ从windows获取环境变量
网友评论