• Python基础-函数


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

    2、函数的作用:
    减少重复代码
    方便修改,更易扩展
    保持代码的一致性

    3、函数的命名规则
    函数名必须以下划线或字母开头,可以包含任意字母、数字或下划线的组合,不能使用任何的特殊字符或标点符号
    函数名区分大小写
    函数名不能使用保留字

    4、函数的创建
    def 函数名(参数列表):
    函数体

    5、函数的参数
    形式参数:不是实际存在,是虚拟变量,在定义函数和函数体的时候使用形参,目的是在函数调用时接收实参(实参个数,类型与实参一一对应)
    实际参数:调用函数时传给函数的参数,可以使用常量,变量,表达式,函数,传给形参
    区别:形参是虚拟的,不占用内存空间,形参变量只有在被调用时才分配内存单元
    实参是一个变量,占用内存空间,数据传送单向,实参传给形参,不能形参传给实参
    def fansik_add(x, y): # x和y是形式参数
        print(x + y)
    fansik_add(1, 2) # 1和2是实际参数

    执行结果:

    3

    6、函数中参数的种类
    位置参数
    关键字参数
    默认参数
    不定长参数
    def info(name, age, sex):
        print('Name: %s' % name)
        print('Age: %d' % age)
        print('Sex: %s' % sex)
    info('fansik', 45, 'male') # 位置参数,按照形参位置对应
    info(age=27, name='fansik', sex='male') # 关键字参数,加载实参中
    
    def info(name, age, sex='male'): # sex='male'为默认参数,默认参数需要放在其他参数的后边
        print('Name: %s' % name)
        print('Age: %d' % age)
        print('Sex: %s' % sex)
    info('fansik', 45, 'male')
    
    def add(*args):
        print(args)
        sum = 0
        for i in args:
            sum += i
        print(sum)
    add(1, 2, 2, 3, 3, 4) # 还可以继续添加
    
    def info(*args, **kwargs):
        print(args)
        for i in kwargs:
            print("%s : %s" % (i, kwargs[i]))
    info(1, 2, 3, 3, Name='fansik', Age=24)
    将一个列表作为参数传递
    def fansik(*args):
        print(args)
    fanjinbao = [1, 2, 3, 4, 5]
    fansik(*fanjinbao)
    将一个字典作为参数传
    def fansik(**kwargs):
        print(kwargs)
    fanjinbao = {'name': 'zhangsan', 'age': 17}
    fansik(**fanjinbao)
    7、函数的返回值
    def fansik():
        print('ok')
        return 'fanjinbao'
    fansik()
    print(fansik())

    执行结果:

    ok
    ok
    fanjinbao
    说明:
    函数里如果没有return,那么函数的默认返回值为None
    return多个对象,python会将着多个对象封装成一个元组返回

    8、作用域
    L:local,局部作用域,即函数中定义的变量
    E:enclosing,嵌套的父级函数的局部作用域,即包含次函数的上级函数的局部作用域,但不是全局的
    G:global,全局变量,就是模块级别定义的变量
    B:built-in,系统固定模块里面的变量,比如int,bytearray等
    搜索变量的优先级顺序依次是:局部变量>父级变量>全局变量>python内置模块变量,也就是LEGB
    x = int(2.9) # int built-in
    g_count = 0 # global
    def outer():
        o_count = 1 # enclosing
        def inner():
            i_count = 2 #local
            print(i_count)
            print(o_count)
        inner()
    outer()
    使用global修改全局变量
    count = 0
    def fansik():
        global count
        print(count)
        count = 10
    print(count)
    fansik()
    以上的例子这个count修改的就是全局的count
    如果注释掉global count,那print(count)中的count查找顺序就是先从本函数中查找是否存在count变量如果不存在就会直接打印全局的count,
    如果存在就会打印本函数中的count,但是这个count必须要在print(count)之前,函数中的count并不是全局count


    使用nonlocal修改嵌套函数的变量
    def fansik():
        count = 10
        def nimei():
            nonlocal count
            count = 100
            print(count)
        nimei()
        print(count)
    fansik()
    执行结果:
    100
    100
    如果注释掉nonlocal count,那么执行结果就是:
    100
    10
  • 相关阅读:
    最小生成树示例程序_Prim算法
    邻接表示例程序
    拓扑排序示例程序
    hdu1754 I Hate It && hdu1166 敌兵布阵 ——线段树复习
    2013年4月26日 晴
    Snakes & Ladders ——BFS入门题
    zoj1203 Swordfish ——最小生成树入门题_Kruscal算法
    poj3087 Shuffle'm Up ——水题
    poj1002 4873279 ——水题
    2013年4月21日 阴
  • 原文地址:https://www.cnblogs.com/fansik/p/7651429.html
Copyright © 2020-2023  润新知