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

    定义一个函数:

    def 函数名(形参表):
        函数体

    不用声明形参类型、函数返回值类型,return 语句返回什么就是什么类型。

    return语句会终止函数的执行。 return None 、 return 、没有return语句,均表示返回值为None(相当于java、c/c++中的void)。

     


    调用一个函数:

    函数名(实参表)

     


    示例:

    def sum(a,b):  #定义一个函数
        return a+b
    result=sum(1,2)  #调用一个函数
    print(result)

    在 python 中,类型是属于值的,变量是没有类型的。比如:

    a=[1,2,3]
    b="Runoob"

    List 类型说的是值[1,2,3] ,字符串类型说的是值"Runoob" 。

    变量 a 、b是没有类型的,它们仅仅是一个引用(指针),可以是指向 List 类型的对象,也可以指向 String 类型的对象。

    python中函数的传参方式:

    • 不可变类型:类似 c++ 的值传递,将实参的值copy一份赋给形参,实参不会被修改。

    • 可变类型:类似 c++ 的引用传递,将实参的引用传递给形参,对形参的修改其实就是对实参的修改

    参数传递形式:

    def outInfo(name,age):
        print(name,age)
    
    outInfo("张三",20)  #实参表的顺序和形参表的顺序相同
    outInfo(age=18,name="李四")  #通过形参名来指定对应的实参,参数顺序随意


    默认参数值:

    def outInfo(name,age=20):  #有默认值的参数要放在形参表的最后面
        print(name,age)
    
    outInfo("张三",10)  #使用指定的age
    outInfo("李四")  #缺省时使用默认值

    参数个数不确定的函数:

    def outInfo(name,*other):  #参数个数不确定,形参名前加*,放在形参表的最后,会作为一个参数来传递(元组形式)
        print(name,other)   
    
    outInfo("张三")  #0个
    outInfo("李四",18)  #1个
    outInfo("王五",18,99)  #多个
    
    """
    张三 ()
    李四 (18,)
    王五 (18, 99)
    """

    匿名函数:

    python 使用 lambda表达式 来创建匿名函数。语法:

    变量=lambda 形参表:表达式|语句   

    形参表不加(),通过变量名来调用匿名函数。

    sum=lambda a,b:print(a+b)   #sum其实相当于函数名
    sum(1,2)  #输出3,没有返回值,或者说返回值是None
    
    sum=lambda a,b:a+b   #lambda表达式不能写return语句,如过冒号后面是一个表达式,则返回这个表达式的值
    print(sum(2,3))   #5
    • lambda 只是一个表达式
    • lambda的主体只能是一个表达式|语句
    • 匿名函数适合函数体很小的函数(因为冒号后面只能写一个表达式|语句,且必须写在同一行)

    函数的嵌套定义

    在python中,函数是可以嵌套定义的。

    def father():
        print("start")
        def son():   #嵌套的函数不会自动执行,需要调用才会执行
            print("son")
        print("over")
    father()
    
    """
    start
    over
    """
    def father():
        print("start")
        def son():   #嵌套的函数不会自动执行,需要调用才会执行
            print("son")
            def 
        son()  #调用嵌套的函数
        print("over")
    father()
    
    
    """
    start
    son
    over
    """
    def father():
        print("start")
        def son():   
            print("son")
            def grandSon():
                print("grandSon")
            grandSon()  
        son()  #调用嵌套的函数
        print("over")
    father()
    
    
    """
    start
    son
    grandSon
    over
    
    函数只能在上一级的程序单元中调用,不能在其他地方调用。(函数也有作用域)
    比如grandSon()只能在son()的函数体中被调用,不能在其他地方被调用
    son()只能在father()的函数体中被调用,不能在其他地方被调用
    """

    python是解释型的语言,是从上往下依次解释执行的,所以函数、变量必须先定义,再使用。

    Python  变量的作用域

    i=1   #全局作用域,全局可用
    def father():
        print(i)  #可用
        j=1  #只在father()内可用
        def son():   #嵌套的函数不会自动执行,需要调用才会执行
            print(i)  #可用
            print(j)  #可用
            k=1  #只在son()中可用
  • 相关阅读:
    oracle数据泵导入导出命令
    深入理解JVM—JVM内存模型
    JVM 内存初学 堆(heap)、栈(stack)和方法区(method)
    Java中Comparable和Comparator接口区别分析
    Java中的匿名内部类总结
    Git版本控制软件结合GitHub从入门到精通常用命令学习手册
    Git客户端图文详解如何安装配置GitHub操作流程攻略
    Java内部类详解
    Java类加载原理解析
    OracleDBconsoleorcl服务无法启动的原因及解决思路
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/11299206.html
Copyright © 2011-2022 走看看