zoukankan      html  css  js  c++  java
  • python3笔记十五:python函数

    一:学习内容

    • 函数概述
    • 函数的参数与返回值
    • 参数值传递和引用传递
    • 关键字参数
    • 默认参数
    • 不定长参数

    二:函数概述

    1.本质:函数就是对功能的封装

    2.优点:

    简化代码结构,增加了代码的复用度(重复使用的程度)
    如果想修改某些功能,只需要修改对应的函数即可

    3.函数定义

    格式:
    def 函数名(参数列表):
        语句
        return 表达式

    注意:最后的return 表达式,可以不写,相当于return None

    举例:

    def myPrint():
        print("tester is a good girl!")
        print("tester is a nice girl!")
        print("tester is a beautiful girl!")

    4.函数调用

    格式:函数名(参数列表)

    注意:参数列表是函数的调用者给函数传递的信息,如果没有参数,小括号也不能省略

    函数调用的本质:实参给形参赋值的过程

    举例:

    myPrint()

    三:函数参数与返回值

    1.无参无返回值的函数

    举例:

    #定义了一个无参无返回值的函数
    def myPrint():
        print("tester is a good girl!")
        print("tester is a nice girl!")
        print("tester is a beautiful girl!")

    #调用
    myPrint()

    2.函数的参数--参数必须要按顺序传递,个数必须要对应

    形参(形式参数):定义函数时小括号中的变量,本质是变量

    实参(实际参数):调用函数时给函数传递的数据,本质是值

    举例:

    def myPrint(str,age):
        print(str,age)

    #调用

    a = 18
    myPrint("tester",a)

    3.函数的返回值

    def mySum(num1,num2):
        #将结果返回给函数的调用者
        #执行完return语句,该函数就结束了,return后面的代码语句不执行
        return num1+num2

    #调用
    print(mySum(3,2))

    四:参数值传递和引用传递

    1.值传递:传递的是不可变类型(数字、字符串、元组),不改变原值

    举例:

    def fun1(num):
        num = 10

    temp = 20
    fun1(temp)
    print(temp)

    2.引用传递:传递的是可变类型(列表、字典、集合),改变原值

    举例:

    def fun2(lis):
        lis[0] = 100

    li = [1,2,3,4]
    fun2(li)
    print(li)

    五:关键字参数

    1.关键字参数:允许函数调用时参数的顺序与定义时不一致

    def myPrint(str,age):
        print(str,age)

    a = 18
    #未使用关键字参数,传参必须与定义参数的顺序一致
    myPrint("tester",a)


    #使用关键字参数,但是正常情况下还是保持参数顺序和定义顺序一致
    myPrint(age=19,str="tester")

    六:默认参数

    1.默认参数:调用函数时,如果没有传递参数,则使用默认参数

    举例1:

    def myPrint(str="tester",age=18):
        print(str,age)

    myPrint()

    举例2:
    #要用默认参数,最好将默认参数放到最后
    def myPrint(str,age=18):
        print(str,age)

    myPrint("tester")

    七:不定长参数--能处理比定义时更多的参数

    1.接受元组数据

    不定长参数第一种写法 *args,*args为元组类型,*代表元组数据

    举例1:

    #加了星号(*)的变量会存放所有未命名的变量参数,如果在函数调用时没有指定参数,它就是一个空元组
    def func(name,*args):
        print(name)  #会打印第一个tester
        print(type(args))   #是个元组
        for i in args:
            print(i)  #会打印后续的is a good girl

    func("tester","is","a","good","girl!")


    #不给定后面的*arr参数
    func("tester")

    举例2:求多个数的和
    def mySum(*num):
        sum = 0
        for i in num:
            sum += i
        return sum
    print(mySum(1,2,3,4))

    2.接受字典键值对类型数据

    不定长参数第二种写法 **kwargs,**kwargs为字典类型,**代表键值对数据

    举例1:

    def func2(**kwargs):
        print(kwargs)
        print(type(kwargs))

    func2(x=1,y=2,z=3)

    func2(1,2,3)  #会报错

    3.接受任意类型数据

    *args为元组类型,*代表元组数据
    **kwargs为字典类型,**代表键值对数据

    举例:

    def func3(*args, **kwargs):
        print(args)   #会打印(1, ('a', 2), [1, 2], {1, 2})
        print(kwargs)  #会打印{'x': 1, 'y': 2, 'z': 3}

    func3(1,("a",2),[1,2],set([1,2]),x=1,y=2,z=3)

  • 相关阅读:
    何时覆盖hashCode()和equals()方法
    JMeter结果树响应数据中文乱码
    HTTP详解
    HTTP协议 (一) HTTP协议详解
    我的cheatsheet
    js 加alert后才能执行方法
    百度云开发者笔记
    sudo: unable to resolve host ubuntu提示的解决
    NUERAL RELATION EXTRACTION WITH MULTI-LINGUAL ATTENTION》阅读笔记
    今天看论文
  • 原文地址:https://www.cnblogs.com/miaomiaokaixin/p/11498298.html
Copyright © 2011-2022 走看看