zoukankan      html  css  js  c++  java
  • 新手Python第三天(函数)

    Python 函数的创建

    def func2():
        print('haha')
        # 函数的返回值
        # 函数的返回值,没有定义返回None,
        # 有一个返回值返回这个object(可以返回一个函数对象),
        # 有多个则是返回一个元组
        return 0
    View Code

    Python 函数的调用

    func2()

    Python 函数的参数

    def func3(x,y,z=5,*args,**kwargs):
        print(x)
        print(y)
        print(z)
    func3(1,2,3)
    #实际参数(实参):1,2,,3
    #形式参数(形参):x,y,z
    #默认参数:z=5,(非必须传递)
    View Code
    def func3(x,y,z=5,*args,**kwargs):
        print(x)
        print(y)
        print(z)
    #位置参数的传递,位置的特性:需要一一对应
    func3(1,2,3)
    #关键字参数的传递,关键字的特性:不需要一一对应
    func3(x=1,y=2,z=3)
    #非固定参数:*args,**kwargs
    #*args接收多余的位置参数的值,以元组形式
    #**kwargs接收多余的关键字参数的值,以字典的方式
    #混合参数的传递,特性:位置参数要在关键字参数前面,继承了位置和关键字的特性
    func3(1,y=2,z=3)
    View Code

    Python 全局和局部变量

    def test():
        name='xiaoming'#这是一个局部变量
    global name #定义一个全局变量
    View Code

    Python 函数的递归

      递归的三大特性:1.必须要有明确的结束条件,2.每次问题的规模要有所减少,3.递归的效率不高

    def calc(n):
        print(n)
        if n>0:
            return calc(int(n/2))
    calc(10)
    View Code

    Python 高阶函数

      高阶函数分为二种(函数即变量):1.一个函数当参数传递个另一个函数,return返回一个函数的内存地址

    #函数当参数传递
    def add(a,b,i):
        res=i(a)+i(b)
        print(res)
    add(1.222,2.111,int)
    #函数当返回值返回
    def func4():
        print('this is func4')
        return func5
    def func5():
        print('this is func5')
    func5=func4()
    func5()
    View Code

    Python 函数的嵌套

    #函数的嵌套
    def func6():
        print('this is func6')
        def func7():
            print('this is func7')
        func7()
    func6()
    View Code

    Python 装饰器

      装饰器的条件:高阶函数+函数的嵌套

    def logger(funcTest):   #把源代码的内存地址传递给装饰器
        def waps(*args,**kwargs): #封装内部装饰器
            print('befor')        #装饰的内容
            res=funcTest(*args,**kwargs)#调用源代码
            print('after')
            return res            #返回funcTest的结果
        return waps               #返回封装的装饰器
    @logger #funcTest=logger(funcTest)
    #被装饰函数的源代码
    def funcTest(x):
        print('this is test file',x)
        return x
    #funcTest=logger(funcTest) #logger返回的是waps的内存地址,
    x=funcTest(x=1) #实际调用的是上方的waps,通过内部的waps调用的funcTest
    print(x)
    View Code

    Python 三层装饰器

    def auth(auth_type): #第三层加入装饰器参数
        def out(func):
            def wrapper(*args,**kwargs):
                if auth_type=='localhost':
                    if local_login():
                        print('登入成功')
                        return func(*args,**kwargs)
                    else:
                        print('登入失败')
                elif auth_type=='file':
                    if file_login():
                        pass    #文件接口登入
                else:
                    print('没有这个登入接口')
            return wrapper
        return out
    @auth(auth_type='localhost')
    def index():
        print('welcome to index page')
    index()
    View Code

    python学习途径

    友情推荐:  猿人学Python【https://www.yuanrenxue.com/】 由一群工作十余年的老程序员结合实际工作经验所写的Python教程。
  • 相关阅读:
    POJ 1113--Wall(计算凸包)
    博弈论笔记--06--纳什均衡之约会游戏与古诺模型
    atan和atan2反正切计算
    POJ 1410--Intersection(判断线段和矩形相交)
    FirstBird--项目流程
    POJ 2653--Pick-up sticks(判断线段相交)
    POJ 1066--Treasure Hunt(判断线段相交)
    POJ 2398--Toy Storage(叉积判断,二分找点,点排序)
    Jetty数据同步使用
    Linux小知识(1): bash中执行数据库的相关操作
  • 原文地址:https://www.cnblogs.com/gm332211/p/8268674.html
Copyright © 2011-2022 走看看