• python函数


    函数

    介绍

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

    特性:

    1. 减少重复代码
    2. 使程序变的可扩展
    3. 使程序变得易维护

    语法定义:

    def sayhi():#函数名
        print("Hello, I'm nobody!")
     
    sayhi() #调用函数

    可以带参数

    #下面这段代码
    a,b = 5,8
    c = a**b
    print(c)
     
    #改成用函数写
    def calc(x,y):
        res = x**y
        return res #返回函数执行结果
     
    c = calc(a,b) #结果赋值给c变量
    print(c)

    函数参数与局部变量

    • 形参变量
      • 只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
    • 实参
      • 可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

    默认参数

    def stu_register(name,age,country,course):
        print("----注册学生信息------")
        print("姓名:",name)
        print("age:",age)
        print("国籍:",country)
        print("课程:",course)
     
    stu_register("王山炮",22,"CN","python_devops")
    stu_register("张叫春",21,"CN","linux")
    stu_register("刘老根",25,"CN","linux")

    关键参数

    正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可,但记住一个要求就是,关键参数必须放在位置参数之后。

    非固定参数

     若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数

    def stu_register(name,age,*args): # *args 会把多传入的参数变成一个元组形式
        print(name,age,args)
     
    stu_register("Alex",22)
    #输出
    #Alex 22 () #后面这个()就是args,只是因为没传值,所以为空
     
    stu_register("Jack",32,"CN","Python")
    #输出
    # Jack 32 ('CN', 'Python')

    还可以有一个**kwargs

    def stu_register(name,age,*args,**kwargs): # *kwargs 会把多传入的参数变成一个dict形式
        print(name,age,args,kwargs)
     
    stu_register("Alex",22)
    #输出
    #Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空
     
    stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong")
    #输出
    # Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'}

    局部变量

    • 字符串,数值在函数里不能改变全部变量
    • 但是 字典 列表 集合 类在函数里能改变全局变量
    name = "Alex Li"
     
    def change_name(name):
        print("before change:",name)
        name = "金角大王,一个有Tesla的男人"
        print("after change", name)
     
     
    change_name(name)
     
    print("在外面看看name改了么?",name)

    输出

    before change: Alex Li
    after change 金角大王,一个有Tesla的男人
    在外面看看name改了么? Alex Li

    全局变量

    names='alex'
    def chang_name():
        global  names
        print('before change:',names)
        names='haha'
        print('after change', names)
    
    chang_name()
    print(names)

    返回值 

    要想获取函数的执行结果,就可以用return语句把结果返回

    注意:

    1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
    2. 如果未在函数中指定return,那这个函数的返回值为None 

    嵌套函数

    name = "Alex"
     
    def change_name():
        name = "Alex2"
     
        def change_name2():
            name = "Alex3"
            print("第3层打印",name)
     
        change_name2() #调用内层函数
        print("第2层打印",name)
     
     
    change_name()
    print("最外层打印",name)

    匿名函数

    匿名函数就是不需要显式的指定函数

    #这段代码
    def calc(n):
        return n**n
    print(calc(10))
     
    #换成匿名函数
    calc = lambda n:n**n
    print(calc(10))

    匿名函数主要是和其它函数搭配使用,如下

    res = map(lambda x:x**2,[1,5,7,4,8])
    for i in res:
        print(i)

    高阶函数

    变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

    def add(x,y,f):
        return f(x) + f(y)
    res = add(3,-6,abs)
    print(res)

    参考 https://www.cnblogs.com/alex3714/articles/5740985.html

  • 相关阅读:
    Python UDP Server Client
    Django点滴(五)建模
    机房收费系统中的数据库操作
    一个普通的工科应届生
    Zebra命令模式分析(二)[补]
    php 备份mysql数据库(joomla数据库可直接使用,其他数据库稍作修改即可)
    dalvik直接跑hello world并用jdb调试
    动态规划小结(1)最大子段和
    struts返回对象json格式数据
    有关public接口和友元类的讨论
  • 原文地址:https://www.cnblogs.com/chenxuming/p/9477481.html
Copyright © 2020-2023  润新知