zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    java 生成12位随机数,解决The literal 9999999999999 of type int is out of range 问题
    使用loadrunner 12 手动关联
    解析xml文件,修改Jenkins的配置
    自定义报告,用Java写一个html文件
    解决Jenkins的错误“The Server rejected the connection: None of the protocols were accepted”
    selenium项目--读取测试用例
    header("Location:login.php")
    详细设计说明书(转)
    Visual EmbedLinux Tools:让vs支持嵌入式Linux开发(转)
    phpstorm集成phpunit(转)
  • 原文地址:https://www.cnblogs.com/fansik/p/7651429.html
Copyright © 2011-2022 走看看