• python 之函数


    一、函数: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。

    def fuc(i):
    
        return int(i)

    二、函数的优点

    1、简化代码

    2、提高代码可用性

    3、代码可扩展

    三、函数的参数

    函数在调用时,可以传入参数,分为形参和实参

    形参:

    形参变量只有在被调用时才分配内存单元,在调用结束后,即刻释放内存,形参只在函数内部有效。

    实参:

    实参可以是变量、常量、表达式、函数等,无论实参是何种类型的量,在调用时,都必须有确定 的量,以便把值传给形参,调用结束后函数则不能再使用该形参。

    def add(x,y):        #定义一个函数,参数有x,y,x和y就是形参
    
        print(x+y)        #输出x+y
    
    add(3,8)              #调用函数 3和8就是实参

     备注:形参就是函数接收的参数,实参就是实际传入的参数

    函数的几种形参

    位置参数:

    位置参数就是按照参数的位置来传参,上面的add函数,x,y就是位置参数,位置参数必传。

    位置参数也可以使用这种add(y=8,x=3)形似来调用,这种调用称为关键字传参。

    默认参数:

    默认参数就是定义形参的时候,给函数一个默认的值,默认参数不是必传的,如果使用默认参数,必须放在位置参数后。

    def conn_mysql(user,password,port=3306):    #定义函数
    
        print(user,password,port)
    
    conn_mysql('root','123456')    #默认值
    
    conn_mysql('root','123456',port=3307) #指定默认参数的值

    非固定参数:

    非固定参数有两种,一种是可变参数,一种是关键字参数

    可变参数:

    可变参数用*来接收,可以传任意数量参数,如果位置参数、默认参数和可变参数连用,可变参数必须在位置参数和默认参数后面。可变参数也是非必传的。

    def more_arg(name, sex, age=18, *args):   #传入的其他参数会放在args这个元组中
    
        print(name, sex, age, args)
    
    more_arg('Bluse', 'man', 20, 'England', 'python')

    关键字参数:

    关键字参数使用**来接收,同样是不固定的,关键字同样放到最后,调用时必须使用关键字传参。非必传参数

    def keyw_arg(name, **kwargs):
    
        print(name,kwargs)
    
    keyw_arg('HK', sex='man' ,age=18)

    五、函数的返回值

    函数都有返回值,如果没有返回值,python会默认返回一个none。如果有多个返回值,将会把返回值放到元组中。

    函数中的返回值使用return,函数在遇到return就立即结束。

    def multi(x,y):
    
        f = x*y
    
        return c,x,y
    
    res = multi(2,9)
    
    print(res)

    六、局部变量和全局变量

    局部变量意思就是只在局部生效,出了这个作用域就失效;全局变量意思就是在整个程序都生效,在程序的最前面定义的都是全局变量。如果修改全局,需要加global声明,如果修改list、字典和集合的话,则不需要加global关键字。

    name = 'Jack'    #字符串全局变量
    
    names = []        #list全局变量
    
    print(name)
    
    print(names)
    
    def fuc(): 
    
        global name   #声明修改变量
    
        name = 'HK'
    
        names.append(name)  #修改list全局变量
    
        return names
    
    fuc()
    
    print('修改后', name)
    
    print('修改后', names)

    七、递归调用

    在函数内部,可以调用其他函数。如果函数内部自己调用自己,这个函数就是递归函数。

    def recur():
    
        num = int(input('please enter a number:'))
    
        if num%2==0:  #判断输入数字是不是偶数
    
            return True  #如果是偶数就退出,赶回true
    
        print('it is not a even number, please try again!')
    
        return recur() #不是偶数,继续调用,重新输入
    
    print(recur())  #调用recur

    递归调用的特点:

    1、必须有一个明确的结束条件

    2、每次进入更深一层递归,问题规模比上次递归应有所减少

    3、递归效率不高,递归层次过多会导致栈溢出

     八、高阶函数

    def f_int(n):    #定义一个函数,把传入的参数转换成int类型
    
        return int(n)
    
    def calc(x,y,z): #定义一个函数,接收3个参数,分别是x,y,z。z是一个函数
    
        print(z(x)*z(y))  #z是一个函数把x,y的值传给z,然后z函数返回的值相乘
    
    calc('4', '5', f_int) #调用,传入x,y的值,再传入上面定义好的函数
  • 相关阅读:
    GC 打印日志配置
    Java查看Old代对象具体信息
    Java 进程 OOM 的排查分析(glibc 篇)
    排障 v2 堆外内存泄漏
    HotSpot VM的Native Memory Tracking
    gc日志深入解析
    排障 v1
    图和图算法js
    export与export default的区别
    leftNav
  • 原文地址:https://www.cnblogs.com/wuxiaoyu-1537/p/7460483.html
Copyright © 2020-2023  润新知