• 【python之路15】深浅拷贝及函数


    一、集合数据类型(set):无序不重复的集合,交集、并集等功能

    二、三元运算符

    三、深浅拷贝

    1)字符串和数字:深浅内存地址都一样

    2)其他:浅拷贝:仅复制最外面第一层

    • 深拷贝:除了最内层其他均拷贝

    四、函数:

    1)创建:def 函数名(参数)

    2)返回值

    •  return 返回值,如果不指定return则默认返回None
    • 一旦遇到return后面的代码不再执行

    3)参数

    • 形参、实参
    • 普通参数数量要一致并且一一对应
    • 指定参数,执行参数的时候指定形参=实参
    • 指定参数的默认值,默认值一定要放在参数的尾部
    • 动态参数  *args  **args,调用的时候可以使用*实参列表,这样相当于循环实参加入元组,**字典,可以直接传输字典不需要(key1=123,key2=456)
    def f1(*args):
        print(args)
    
    f1(11,22,33)
    #打印:(11, 22, 33)
    
    def f1(**kwargs):
        print(kwargs)
    
    f1(k1=11,k2=22)
    #打印输出:{'k1': 11, 'k2': 22}
    def f1(*args,**kwargs):
        print(args,kwargs)
    
    f1(11,22,33,k1=11,k2=22)
    #打印输出:(11, 22, 33) {'k1': 11, 'k2': 22}
    def f1(n,*args,**kwargs):
        print(n,args,kwargs)
    
    f1(11,22,33,k1=11,k2=22)
    #打印输出:11 (22, 33) {'k1': 11, 'k2': 22}
    def f1(*args):
        print(args)
    
    n = [11,22,33]
    f1(n)
    #打印输出:([11, 22, 33],)
    f1(*n)
    #打印输出:(11, 22, 33)
    def f1(**kwargs):
        print(kwargs)
    
    n = {"k1":11,"k2":22}
    #f1(n)
    #报错
    f1(**n)
    #打印输出:{'k1': 11, 'k2': 22}

    4)在python中传参数时,对列表、元组、字典类型传输的是引用

    1 def func1(args):
    2     args.append(123)
    3 
    4 li = [11,22,33]
    5 func1(li)
    6 print(li)  #输出[11, 22, 33, 123]

    五、局部变量和全部变量

    1)全局变量用大写,局部变量用小写

    2)全局变量在函数内部可以使用,但不能修改,如果要修改,那么要加global 变量名

    name='张三'
    def f1():
        name="李四"  #不会修改全局变量,会在函数内部新建一个变量
        return(name)
    
    def f2():
        return ("我的名字是" + name)  #可以使用全局变量
    
    def f3():
        global name  #加上global之后下面可以修改全局变量的值,加上global后相当于把name变成全局变量,如果外层没有name则声明全局变量name,如果有则引入全局变量name
        name = "王五"
        return name
    
    print(f1()) #李四
    print(f2()) #我的名字是张三
    print(f3()) #王五
    def func1():
        a = 10
        def func2():
            a = 20
            print(a)
        func2()
        print(a)
    
    func1()    #打印结果:20 10
    def func1():
        a = 10
        def func2():
            nonlocal a   #不作为局部变量,向上层找,但不能超出局部变量范围,不会找到全局变量
            a = 20
            print(a)
        func2()
        print(a)
    
    func1()    #打印结果:20 20

    函数:globals() 打印全局变量

            locals() 打印局部变量 ,放在全局打印的与globals一样,放在函数内则只打印函数内部的变量

    六、判断是某个实例属于哪个类

    st = 'abdc'
    #第二个参数可以是元组,例如判断st是字符串或字典或列表,
    #则可以写为:bol = isinstance(st,(str,dict,list)  
    bol = isinstance(st,str)  
    print(bol) #返回True,说明st是字符串类型
    def func1():
        a = 10
        def func2():
            nonlocal a   #不作为局部变量,向上层找
            a = 20
            print(a)
        func2()
        print(a)
    
    func1()    #打印结果:20 20
  • 相关阅读:
    寒假 学习进度七
    寒假学习进度
    寒假学习进度五
    寒假学习进度四
    寒假学习进度三
    寒假学习进度二
    Spark实验五
    半篇论文笔记
    REPL
    Scala基本语法及操作、程序控制结构
  • 原文地址:https://www.cnblogs.com/sunshuhai/p/6298538.html
Copyright © 2020-2023  润新知