zoukankan      html  css  js  c++  java
  • python中的函数

    一. 函数的定义

    1. 函数的定义:

    1) 具备某一功能的代码段

    2) 可以重复使用

    2. 函数定义语法:

    def 函数名称():
        函数体(实现功能的代码段)
    
    
    注意:函数体的缩进

    二. 函数的调用

    1. 没有参数:函数名称()

    实例1:

    #定义函数
    def hello():
        print("Hello World!")
    
    #调用无参函数
    hello()
    
    
    运行结果:
    Hello World!

    2. 有参数:函数名称(参数值)

    实例2:

    #定义函数
    def welcome(name):
        print("Welcome", name)
    
    #调用有参函数
    welcome("student")
    
    
    运行结果:
    Welcome student

    三. 函数的参数

    1. 形参

    形参:形式参数。定义函数时,使用形参,相当于占位符。目的是用来接收调用该函数时传递的参数,告诉使用者,需要提供的数据有哪些

    2. 实参

    实参:调用函数时,是传入的参数,必须是确定的值

    四. 函数的参数类型

    1. 位置参数:按照形参顺序,放入实参

    #定义函数
    def print_info(name, age):
        print("名字: ", name)
        print("年龄: ", age)
    
    #调用print_info函数
    print_info("Jack", 30)
    
    
    运行结果:
    名字:  Jack
    年龄:  30

    2. 关键字参数(指定参数):不用按形参顺序放入实参,传参时要求:形参名称=实参值

    #定义函数
    def print_info(name, age):
        print("名字: ", name)
        print("年龄: ", age)
    
    #调用print_info函数
    print_info(age=30, name="Jack")
    
    
    运行结果:
    名字:  Jack
    年龄:  30

    3. 默认参数:在定义函数时,给形参一个默认值,需要放在形参的最后,当调用函数时,默认参数的值可传可不传,不传时,使用默认值

    #定义函数
    def print_info(name, age=28):
        print("名字: ", name)
        print("年龄: ", age)
    
    #调用print_info函数
    print_info("Jack")
    
    print_info("Jack", 30)
    
    
    运行结果:
    名字:  Jack
    年龄:  28
    
    名字:  Jack
    年龄:  30

    必须注意:默认参数必须指向不可变对象:整数、字符串、元组

    #定义一个默认参数指向可变对象列表的函数
    def add_end(L=[]):
        L.append('END')
        print(L)
    
    #调用add_end函数
    add_end()
    
    add_end()
    
    add_end()
    
    
    运行结果:
    
    ['END']
    
    ['END', 'END']
    
    ['END', 'END', 'END']

    这是因为python函数在定义的时候,默认参数L的值就被计算出来了,为[]。默认参数L是一个变量,它指向对象[],每次调用该函数时,如果改变了L的内容,下次再调用时,默认参数的内容就变了,不再是函数定义时的[]了

    4. 可变参数(动态参数):在定义函数时,不限定参数的个数,可用*args和**kwargs表示

    *args 为元组,比如print()函数的参数就是*args

    **kwargs为字典,比如requests库的request()方法的参数就是**kwargs

    *args将参数打包成tuple给函数体使用

    #定义函数
    def print_info(name, age, *args):
        print(name)
        print(age)
        print(args)
        for item in args:
            print(item)
    
    #调用print_info函数
    print_info("Jack", 30, "male", "running")
    
    
    运行结果:
    Jack
    30
    ('male', 'running')
    male
    running

    **kwargs将参数打包成dict给函数体使用,调用时实参是key=value的形式

    #定义函数
    def print_info(name, age, **kwargs):
        print(name)
        print(age)
        print(kwargs)
        for key, value in kwargs.items():
            print(key + ":" + value)
    
    #调用print_info函数
    print_info("Jack", 30, sex="male", hobby="reading")
    
    
    运行结果:
    Jack
    30
    {'hobby': 'reading', 'sex': 'male'}
    hobby:reading
    sex:male

    5. 参数组合:当多种参数组合使用时,参数定义的顺序为:位置参数(关键字参数)、默认参数、可变参数

    #定义函数
    def print_info(name, age, sex="male", **kwargs):
        print("name:" + name)
        print("age:" + str(age))
        print("sex:" + sex)
        for key, value in kwargs.items():
            print(key + ":" + value)
    
    #调用print_info函数
    print_info("Jack", 30, hobby="reading", city="shenzhen")
    
    print_info(sex="female", age=20, name="Lucy",hobby="reading", city="shenzhen")
    
    
    运行结果:
    name:Jack
    age:30
    sex:male
    hobby:reading
    city:shenzhen
    
    
    name:Lucy
    age:20
    sex:female
    hobby:reading
    city:shenzhen

    五. 匿名函数

    1. python使用lambda来创建匿名函数

    所谓匿名,也就是没有函数名,不再使用def 函数名 这样标准的形式定义一个函数

    2. lambda与标准函数的区别

    1) lambda只是一个表达式,而不是一个语句

    作为一个表达式,lambda可以返回一个函数,可以赋值给变量,而不像def那样在头部将函数赋值给变量名(函数名)

    2) lambda的主体是一个表达式,而不是一个代码块

    因此,lambda通常要比def功能小,仅能在lambda主体中封装有限的逻辑进去,连if这样的语句都不能够使用。这是有意设计的——它限制了程序的嵌套:lambda是一个为编写简单的函数而设计的,def用来处理更大的任务

    3) lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数

    3. lambda函数的语法

    lambda arg1, arg2, ... argN: expression

    实例1:可以将lambda函数对象赋值给变量 f 

    #定义lambda函数,将其赋值给变量f
    f = lambda x, y, z: x + y + z
    #通过变量f来调用函数,并打印结果
    print(f(2, 3, 4))
    
    
    运行结果:
    9

    实例2:在lambda函数中也可以使用默认参数

    #定义lambda函数,使用默认参数
    x = lambda a = "fee", b = "fie", c = "foe": a + b + c
    #通过变量x来调用函数,并打印结果
    print(x())
    
    
    运行结果:
    feefiefoe

    六. 返回值

    1. 语法:

    return 参数(可选,没有参数,则返回None)

    2. 注意:

    1) 返回值可以是任何类型的变量

    2) 返回值也可以是表达式

    3) 可以返回一个/多个变量,可以用逗号隔开或用元组

    def func():       
         return 返回值1,返回值2
    
    接收值1,接收值2 = func()
    print(接收值1,接收值2)

    4) 函数体执行过程中遇到return,意味着函数调用结束

    5) 函数中没有return关键字,默认返回None

    6) 使用较多,返回的值可以用来传递给其他函数

     

    参考文章

    http://www.runoob.com/python3/python3-function.html

    https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431752945034eb82ac80a3e64b9bb4929b16eeed1eb9000

  • 相关阅读:
    xpath语法速查
    负载均衡设计
    Nginx负载均衡配置实例详解
    实现基于DNS的负载均衡
    建立双线服务器(双线游戏服务器)
    python学习
    python多线程概念
    python 多线程就这么简单(续)
    打包一沓开源的 C/C++ 包管理工具送给你!
    讲解开源项目:功能强大的 JS 文件上传库
  • 原文地址:https://www.cnblogs.com/my_captain/p/9230396.html
Copyright © 2011-2022 走看看