美文网首页
2018-10-10浅拷贝和深拷贝及函数概念和相关操作

2018-10-10浅拷贝和深拷贝及函数概念和相关操作

作者: MW演员 | 来源:发表于2018-10-10 19:27 被阅读0次

    1.拷贝

    将变量中的值复制一份,产生新的数据,然后将新的数据对用的地址返回

    2.浅拷贝

    • copy.copy(对象) :浅拷贝是直接拷贝地址(切片和字典的copy方法都是浅拷贝)
    • copy.deepcopy(对象) :深拷贝是将地址对应的值拷贝,产生新的地址
    import copy
    a1 = [1, 2]
    a2 = {'b': 10}
    list1 = [a1, a2]
    
    浅拷贝
    list2 = copy.copy(list1)
    list2[0].append(100)
    print(list2)
    print(list1)
    
    深拷贝
    import copy
    list3 = copy.deepcopy(list1)
    list3[0].append(100)
    print(list3)
    # print(list2)
    print(list1)
    

    一、函数就是对实现某一特定功能的代码段的封装

    1.函数的分类
    • a.自定义函数:自己声明实现的功能代码
    • b.内置函数:系统已经声明实现的功能代码
    2.声明函数

    语法:def 函数名(参数列表)
                     函数体
    def: pthon中声明函数的关键字
    函数名:与变量一样,必须是标识符,不能是关键字,遵守PEP8的命名规范(所有字母小写,多个单词之间用下划线隔开),见名知义
    (): 固定写法
    冒号:固定写法
    参数列表:又叫形参列表,参数1,参数2.....参数可有多个也可以没有
    参数是用来从函数的外部给函数里面传值用的
    函数体:就是实现特定功能的代码段

    二、声明函数

    • a.确定函数功能
    • b.根据功能确定函数名
    • c.确定参数(看实现的功能需不需要从函数外部传值,需要传几个)
    • d.实现函数功能
    • e.确定返回值
    写一个函数打印两个数的和
    def two_num_sum(a, b):
        print(a + b)
    
    two_num_sum(4, 6)
    
    def print_star(n):
        print('*' * n)
    
    求连续整数和
    def sum_n(n):
        sum1 = 0
        for x in range(n + 1):
            sum1 += x
        print(sum1)
    
    sum_n(100)
    

    三、声明函数时不会执行函数体,只有被调用时才会被执行

    1.函数调用

    函数名(实参列表)
    函数名:必须声明过得函数
    ():固定写法
    实参列表:数据1,数据2,.....可以有多个或没有,用来给形参赋值的

    四、格式

    1.函数名(实参列表)
    2.函数的调用的过程
    • 第一步:回到函数声明的位置
    • 第二步:用实参个形参赋值
    • 第三步:执行函数体
    • 第四步:返回返回值
    • 第五步:回到函数调用的位置,接着执行后面代码
    五、位置参数和关键参数

    1. 位置参数:在传值过程中,用按实参顺序 一一对应给形参赋值(一定要保证每个形参都必须有值)

    2. 关键字参数:形参1 = 值1,形参2 = 值2,......

    def func1(a, b, c):
        print(a, b, c)
    # 位置参数
    func1(10,20,30)
    #关键参数
    func1(c = 200, b = 100, a = 300)
    

    3. 默认参数
    函数声明时可以给参数设置默认值,但是有默认值的参数列表必须放在最后
    注意:有默认值的形参可以不传参数

    def func2(a, c, b = 0):
        print(id(a))
        print(a, b, c)
    num = 100
    print(id(num))
    # func2(10,20)
    func2(num, c = 200) # 位置参数和关键字参数混合使用
    

    4. 不定长参数
    参数个数不确定时,可以在形参前面加*号将形参变为元祖,用来接收多个参数
    如果函数有多个参数,那么不定长参数要放在后面

    # 计算多个数的和
    def sum1(*args):
        sum2 = 0
        for x in args:
            sum2 += x
    
        print(sum2)
    sum1(1, 2, 3)
    

    五、函数返回值

    1. 概念
    就是函数调用表达式的值,就是return关键字后面的表达式的值
    Python中所有的函数都有返回值,返回值默认是None(当没有遇到return时函数的返回值就是None)
    2. 说明
    函数调用表达式 : 就是调用函数的那个语句(函数名(实参列表))
    return :关键字,只能在函数体中,用来返回返回值和结束函数
    任何函数都有返回值(当没有遇到return时函数的返回值就是None)

    def func1():
        print('hello')
    i = func1()
    print(i, type(i))
    

    3. 将函数的返回值作为列表的元素

    def func1():
        print('hello')
    i = [func1(), 100]
    print(i)
    

    ** 4. 函数执行过程中遇到return就直接结束,把return后面的的结果作为返回值**

    a = [1, 2]
    
    def add_yuansu(b):
        c = b[:]
        c.append(100)
        return c
    print(a, add_yuansu(a))
    

    注意:
    函数返回值的确定:如果函数的功能会产生新的数据就将数据返回

    # 计算一个数的阶乘
    def jie_ceng(num):
        sum1 = 1
        for x in range(1, num + 1):
            sum1 *= x
        return sum1
    a = jie_ceng(5)
    print(a)
    

    相关文章

      网友评论

          本文标题:2018-10-10浅拷贝和深拷贝及函数概念和相关操作

          本文链接:https://www.haomeiwen.com/subject/ltemaftx.html